Đôi khi, trong khi sao chép một tệp lớn, như phim hoặc hình ảnh hệ điều hành, lệnh cp mất nhiều thời gian hơn dự kiến ​​dựa trên tải trên hệ thống của bạn. Vì nó không nói sự tiến bộ của hoạt động, nên thật khó để hiểu chính xác những gì đang xảy ra.

Trong các kịch bản như thế này, một lệnh như cv có thể giúp ích rất nhiều, vì nó không chỉ cho phép bạn biết tiến độ của phép toán, mà còn có khả năng hiển thị thời gian còn lại. Trong bài viết này, chúng ta sẽ thảo luận về lệnh cùng với một số ví dụ hữu ích.

Giới thiệu

Lệnh cv là một tiện ích trông cụ thể cho các lệnh cơ bản của coreutils, chẳng hạn như cp, mv, dd, tar, cat và nhiều thứ khác, hiện đang chạy trên hệ thống của bạn và hiển thị phần trăm tiến trình của chúng. Mặc dù nó là Linux cụ thể, một cổng Mac OSX cũng có sẵn.

Tải xuống và cài đặt

Để tải xuống và cài đặt lệnh cv, hãy truy cập kho lưu trữ Github và tải xuống gói nguồn (tên của tệp đã tải xuống trong trường hợp của tôi là “cv-master.zip”). Sau khi thực hiện, giải nén các tập tin bằng cách sử dụng lệnh sau đây:

 giải nén cv-master.zip 

Nhập thư mục “cv-master” và chạy các lệnh sau để xây dựng gói và cài đặt nhị phân:

 thực hiện cài đặt 

Xin lưu ý rằng lệnh cv phụ thuộc vào thư viện "ncurses", vì vậy bạn có thể phải cài đặt các gói tương ứng có thể được thực hiện bằng cách chạy lệnh sau đây:

 sudo apt-get cài đặt ncurses-dev 

Một điểm đáng chú ý nữa là sau khi cài đặt, nhị phân sẽ chuyển thành “/ usr / local / bin”, vì vậy hãy đảm bảo rằng đường dẫn được thêm vào môi trường hệ thống của bạn, nếu không trình bao sẽ không thể tìm thấy lệnh khi bạn chạy nó. Một thay thế sẽ là thay đổi thư mục hiện tại của bạn thành “/ usr / local / bin” và sau đó thực thi lệnh theo cách sau:

 ./cv 

Sử dụng

Dưới đây là một số ví dụ về cách lệnh này có thể được sử dụng:

Lưu ý : Tất cả các ví dụ được trình bày trong bài viết này đều được thử nghiệm trên Ubuntu 14.04.

Một ví dụ cơ bản

Vì lệnh cv hiển thị tiến trình của các lệnh khác đang chạy, nên phải có một lệnh chạy đủ dài để lệnh cv có thể hiển thị bất cứ điều gì. Ví dụ, tôi đã thử sao chép một tập tin khổng lồ từ ổ đĩa bút vào hộp Linux của tôi, và khi lệnh cp được thực hiện, tôi ngay lập tức chuyển sang một tab shell khác và thực hiện lệnh sau:

 ./cv 

Lệnh hiển thị đầu ra sau:

Trường đầu tiên trong đầu ra là PID của lệnh đang được theo dõi, tiếp theo là lệnh và tiến trình theo tỷ lệ phần trăm cũng như số. Một điểm đáng chú ý là dòng đầu tiên trong đầu ra của lệnh cv ( cat inactive/flushing/streaming/... ) là mặc định - tôi đã kiểm tra mã và thấy rằng dòng được in trong điều kiện nhất định, mà dường như luôn luôn được nhấn (bây giờ chúng ta có thể bỏ qua nó).

Nếu có nhiều hơn một lệnh đang chạy, lệnh cv sẽ hiển thị tiến trình liên quan đến tất cả chúng. Ví dụ, đây là đầu ra với hai lệnh chạy:

Nhận thông lượng I / O ước tính và ETA

Mặc dù rất hữu ích khi biết tiến trình của một lệnh, nó thậm chí còn thuận tiện hơn nếu bạn biết các thông tin khác như thời gian còn lại hoặc ETA. Đối với điều này, lệnh cv cung cấp tùy chọn dòng lệnh -w .

Ví dụ, khi lệnh sau được thực thi:

 ./cv -w 

đầu ra sau được hiển thị:

 [9287] cp / phương tiện truyền thông / himanshu / F58B-9AA9 / casper-rw 10, 3% (105, 2 MiB / 1 GiB) 27, 9 MiB / s eta 0:00:32 

Hai trường cuối cùng trong đầu ra, đại diện cho thông lượng I / O ước tính và ETA, biểu thị rằng thao tác sao chép đang diễn ra với tốc độ 27, 9 MB mỗi giây và sẽ mất 32 giây để hoàn thành.

Lặp lại lệnh

Trong khi sử dụng lệnh cv, bạn sẽ thấy rằng nó hiển thị chi tiết tiến trình tại thời điểm đó và sau đó chấm dứt. Để đảm bảo rằng cv không kết thúc cho đến khi lệnh được giám sát kết thúc, hãy sử dụng tùy chọn -m .

 cv -m 

Điều này sẽ đảm bảo rằng các lệnh cv loop trong khi các quá trình giám sát vẫn đang chạy.

Phần kết luận

Lệnh cv có thể là một tài sản cho những người xử lý việc chuyển các tệp nặng hoặc các hoạt động tốn thời gian khác trên dòng lệnh Linux. Không cần phải nói, là nguồn mở, bạn có thể thay đổi cách nó tương tác và hoạt động bằng cách thay đổi cơ sở mã của nó, điều này khá nhỏ và dễ hiểu.

Bạn đã từng sử dụng lệnh cv hoặc bất kỳ lệnh tương tự nào khác chưa? Trải nghiệm của bạn thế nào? Chia sẻ suy nghĩ của bạn trong phần bình luận bên dưới.