Cách sử dụng lệnh Install để sao chép file trong Linux

install là một lệnh sao chép file linh hoạt trong Linux và macOS thích hợp cho người dùng chuyên nghiệp. Hãy đọc bài viết này để khám phá cách sử dụng lệnh install thông minh hơn nhé.

Chờ đã, đây không phải lệnh cho cài đặt phần mềm sao?

Lệnh install là lệnh có tên dẫn đến hiểu nhầm nhất trong các lệnh Linux. Nó không thực sự cài đặt bất cứ phần mềm nào. Nếu cài đặt một gói phần mềm từ dòng lệnh trong bản phân phối Ubuntu hoặc dựa trên Debian khác, hãy sử dụng lệnh apt-get. Trên các bản phân phối Linux khác, bạn có thể sử dụng công cụ quản lý gói Linux, ví dụ như dnf trên Fedora hoặc zypper trên openSUSE.

Vậy lệnh install được dùng để làm gì?

Tóm lại, lệnh install kết hợp các yếu tố từ các lệnh cp (sao chép), chown (thay đổi người sở hữu), chmod (thay đổi chế độ), mkdir (tạo thư mục) và strip (bỏ biểu tượng). Nó cho phép bạn sử dụng các chức năng từ tất cả các lệnh trên trong một hành động duy nhất.

Lệnh install có thể:

  • Sao chép các file như lệnh cp.
  • Chọn có nên ghi đè lên các file hiện có hay không.
  • Tạo thư mục đích nếu không có như lệnh mkdir.
  • Phân quyền người dùng cho các file, giống như lệnh chmod.
  • Thiết lập quyền sở hữu các file như lệnh chown.
  • Loại bỏ những thứ không cần thiết ra khỏi các file thực thi, giống như lệnh strip.

Mặc dù có tất cả các chức năng trên, nhưng lệnh install không có quá nhiều tùy chọn.

Lệnh install

Khi nào sử dụng lệnh install? 

Lệnh install không phải lúc nào cũng được sử dụng mặc dù nó hữu ích nhưng chỉ trong một số trường hợp cụ thể. Nó được sử dụng chính cho phát triển phần mềm. Giả sử bạn đang lập trình một tiện ích mới và cần kiểm tra bên ngoài môi trường phát triển. Để làm điều đó, bạn cần sao chép file chương trình mới vào thư mục thử nghiệm.

Bởi vì phát triển là một hoạt động lặp đi lặp lại, bạn có thể thực hiện chuỗi hành động này rất nhiều lần. Lệnh install sẽ thực hiện tất cả các công việc này giúp bạn. Cuối cùng, khi tiện ích mới của bạn đã sẵn sàng để được triển khai, bạn có thể sử dụng lệnh install để sao chép nó với quyền chính xác đến vị trí làm việc cuối cùng của nó.

Ví dụ

Ví dụ chúng ta đang tạo một tiện ích mới được gọi là ana. Nó bao gồm một file nhị phân thực thi và cơ sở dữ liệu. Sau khi thử nghiệm, nó phải được sao chép đến /usr/local/bin để người dùng trên hệ thống Linux có thể sử dụng. Bạn cần thay thế tên file, đường dẫn đến thư mục trong ví dụ này bằng tên file và thư mục bạn sử dụng.

Trước khi nó sẵn sàng để phát hàng rộng rãi, tiện ích này sẽ được kiểm tra trong thư mục có tên là ~/test/ana. Các thành viên của nhóm geek sẽ có quyền đọc và thực thi. Người dùng khác chỉ có quyền thực thi. Lệnh install sử dụng biểu diễn số để cấp quyền tương tự như lệnh chmod. Chúng ta sẽ thiết lập các quyền như sau:

  • Chủ sở hữu: Đọc, viết và thực hiện.
  • Nhóm: Đọc và thực hiện.
  • Người dùng khác: Chỉ thực thi.

Cách sử dụng lệnh install

Thư mục làm việc ở đây là ~/work. Chúng ta sẽ viết, biên soạn chương trình và tạo một file nhị phân được gọi là ana và một file cơ sở dữ liệu để ana làm việc cùng có tên là Words.db.

ls -l ana Words.db

Biên soạn chương trình

Tiện ích ana vừa viết sẽ đảo ngược thứ tự cụm từ trong dòng lệnh.

Tiện ích ana đảo ngược thứ tự từ

Ở đây chúng ta thử nghiệm với từ biscuit và kết quả hoạt động khá tốt. Bây giờ chúng ta sẽ sao chép hai file này vào thư mục ~/test/ana để xem tiện ích mới này hoạt động có chính xác khi ở bên ngoài môi trường phát triển không. Để sao chép, sử dụng lệnh sau:

install -D -v ana Words.db -t ~/test/ana

Sao chép hai file vào thư mục ~/test/ana

Các tùy chọn được sử dụng trên dòng lệnh là:

  • D: Tạo thư mục, bao gồm cả thư mục cha, nếu cần.
  • v: Liệt kê từng thư mục khi nó được tạo và mỗi file sao chép khi nó được thực hiện.
  • t: Thư mục đích.

Chúng ta có thể thấy lệnh install tạo thư mục ~/test và sau đó tạo thư mục ~/test/ana. Các file được liệt kê từng cái một khi chúng được sao chép vào thư mục đích.

Liệt kê các file trong ~/test/ana để xác nhận rằng chúng đã được sao chép chính xác.

ls -l

Liệt kê các file trong ~/test/ana

Bước tiếp theo là kiểm tra tiện ích ana bằng cách sử dụng nó trong thư mục ~/test/ana.

Kiểm tra tiện ích trong thư mục ~/test/ana

Thật tuyệt vời, tiện ích hoạt động như mong đợi. Tuy nhiên các quyền phân cho các nhóm không đúng. Ở đây yêu cầu các thành viên của nhóm geek có quyền đọc và thực thi; các thành viên khác chỉ được thực thi.

Chúng ta có thể giải quyết cả hai vấn đề này khá đơn giản với lệnh sau. Lưu ý, bạn cần quyền root để sử dụng sudo, tùy chọn -o, -g và các tùy chọn khác chạy lệnh này. Nhập mật khẩu khi yêu cầu.

sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

Phân lại quyền

  • Tùy chọn -b (sao lưu) tạo ra các bản sao lưu file trước khi bị ghi đè.
  • Tùy chọn -S (hậu tố) xác định hậu tố cho các file sao lưu. Nếu không cung cấp hậu tố thì tùy chọn ~ (dấu ngã) sẽ được sử dụng. Ở đây yêu cầu install sử dụng hậu tố .bak.
  • Chúng ta sẽ thiết lập chủ sở hữu của file thành dave sử dụng tùy chọn -o (chủ sở hữu).
  • Tùy chọn -g (nhóm) yêu cầu tên của một nhóm, đây là nhóm chủ sở hữu của các file. Nhóm ở đây sử dụng được gọi là geek.
  • Tùy chọn -m (chế độ) thiết lập chế độ các file sử dụng cú pháp số chmod tiêu chuẩn.

Chúng ta không cần sử dụng tùy chọn -D (tạo thư mục) ở đây nữa vì đã có thư mục thử nghiệm rồi và cũng bỏ qua tùy chọn -v. Liệt kê các file trong thư mục ~/test/ana với lệnh sau:

ls -l

Liệt kê các file và phân đúng quyền

Điều này xác nhận rằng tất cả các yêu cầu của chúng ta đã được đáp ứng.

  • Các file đã được sao chép vào thư mục thử nghiệm.
  • Các quyền đã được thiết lập một cách chính xác.
  • dave là chủ sở hữu của các file.
  • Nhóm geek là nhóm chủ sở hữu của hai tập tin.
  • Các bản sao lưu đã được tạo từ mỗi file, được gọi là ana.bak và Words.db.bak.

Nếu thực hiện một số thay đổi cho tiện ích và biên dịch lại, các file đã thay đổi cần được sao chép vào thư mục ~/test/ana từ thư mục ~/work. Chúng ta có thể làm điều này bằng cách sử dụng tùy chọn -c (so sánh). Nếu file nguồn và file đích giống nhau, file nguồn không được sao chép.

sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

Sao chép thay đổi

Liệt kê các file trong thư mục đích cho chúng ta biết kích thước file ana đã thay đổi, nó lớn hơn file ana.bak và dấu thời gian trên file ana cũng thay đổi. Những thay đổi này là do phiên bản mới của file đã được sao chép ở đây.

ls -l

Liệt kê file khi đã thay đổi

Kích thước file và dấu thời gian trên file Words.db không thay đổi vì nó không được sao chép. Trên một dự án với nhiều file tùy chọn -c có thể tiết kiệm được nhiều thời gian và không làm lộn xộn ổ cứng vì nó chỉ sao chép các file đã thay đổi.

Một lần nữa, chúng ta kiểm tra tiện ích ana. Đã đến lúc sử dụng lệnh install để sao chép các file vào /usr/local/bin để tất cả người dùng trên máy tính Linux này đều có thể sử dụng tiện ích mới. Vì đã có thư mục /usr/local/bin nên chúng ta sẽ không tạo thư mục này nữa. Chúng ta có thể sử dụng phiên bản chỉnh sửa trong lệnh cuối.

Chúng ta đã thay đổi thư mục đích thành /usr/local/bin, xóa tùy chọn -c vì nó không sao chép các file trong thư mục đích để so sánh nữa. Tương tự như vậy, chúng ta cũng không cần sử dụng tùy chọn -b (sao lưu) và -s (hậu tố) vì không cần sao lưu.

sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin

Thay đổi thư mục đích thành /usr/local/bin

Sử dụng lệnh sau để liệt kê các file trong thư mục /usr/local/bin:

ls -l

Liệt kê các file trong thư mục /usr/local/bin

Hãy thực hiện thử nghiệm cuối cùng bằng cách thay đổi thư mục này thành thư mục chính và xem chúng ta có thể gọi tiện ích mới từ đây không.

Thay đổi thư mục

Lưu ý rằng chúng ta không cần phải mở đầu lệnh ana bằng ./ nghĩa là nó đang chạy từ thư mục /usr/local/bin.

Như đã đề cập từ trước, lệnh install có thể bỏ các bảng biểu tượng và các thứ không cần thiết khác trong file nhị phân để giảm kích thước file. Hãy cùng thực hiện điều đó. Lưu ý lệnh sau không bao gồm file Words.db bởi vì Words.db là file cơ sở dữ liệu không phải là file nhị phân thực thi. Để sao chép và thu nhỏ kích thước file ana, chúng ta sử dụng lệnh sau, thêm tùy chọn -s (thu nhỏ) với chữ s viết thường, tùy chọn -b (sao lưu) và -S (hậu tố) với chữ S viết hoa.

sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin

Giảm kích thước file thực thi

Liệt kê các file trong /usr/local/bin cho phép chúng ta so sánh kích thước của file ana với phiên bản sao lưu trước đó. File ana đã giảm đến gần 60% kích thước trước đó.

ls -l /usr/local/bin

So sánh file

Lệnh install có khá nhiều tác dụng và giúp bạn giảm thiểu được nhiều công việc lặp lại một các nhàm chán.

Chúc các bạn thực hiện thành công! 

Thứ Hai, 22/04/2019 15:27
54 👨 169