Các lệnh trên Shell (P3)

Bài viết này giới thiệu các lệnh manipulate files/folders trên Shell.

Shell có cung cấp vài tính năng để thao tác các lệnh một cách hiệu quả hơn. Khi Shell sử dụng quá nhiều tên file, nó cung cấp cho bạn các kí tự đặc biệt để xác định một cách nhanh chóng nhóm các file. Các ký tự này được biết đến với cái tên wildcards. Bao gồm:

Wildcard

Ý nghĩa

* Tương ứng với bất kỳ ký tự nào
? Tương ứng với bất kỳ ký tự đơn nào
[character] Tương ứng với bất kỳ ký tự nào là một thành viên của các ký tự được đặt sẵn có thể được thể hiện như là một lớp các ký tự trên hệ thống POSIX.

POSIX Character class

[:alnum:] Các ký tự số

[:alpha:] Các ký tự alphabet

[:digit:] Các số

[:upper:] Các ký tự alphabet viết hoa

[:lower:] Các ký tự alphabet viết thường

[!character] Tương ứng với bất kỳ ký tự nào mà không phải là một thành viên của các ký tự được đặt sẵn

Ví dụ:

  • * là tên tất cả các tập tin có trong thư mục hiện hành.
  • g* là tên các tập tin bắt đầu bằng g trong thư mục hiện hành.
  • b*.txt là tên tất cả các tập tin bắt đầu bằng ký tự b và kết thúc bằng đuôi định dạng .txt.
  • Data??? là tên bất kỳ tập tin nào bắt đầu bằng Data và thêm 3 ký tự phía sau nữa
  • [abc]* là tên bất kỳ tập tin nào bắt đầu với a hoặc b hoặc c và theo sau bởi các ký tự khác.
  • [[:upper:]]* là tên tập tin bất kỳ bắt đầu bằng các ký tự alphabet hoa và theo sau bởi các ký tự khác. (đây là ví dụ cho lớp các ký tự đặt sẵn trên POSIX)
  • BACKUP.[[:digit:]][[:digit:]] là tên bất kỳ file nào bắt đầu bằng các ký tự “BACKUP” và theo sau nó là hai số
  • *[![:lower:]] bất kỳ file nào không kết thúc bởi ký tự alphabet thường.

––> Ghi chú: Có thể sử dụng wildcard với bất kỳ lệnh nào trên Shell cho phép nhận tên file làm đối số của lệnh.

Các lệnh manipulate:

cp

Lệnh cp cho phép copy file và thư mục. Có các dạng đơn giản như:

cr0ss@cr0ss-X455LA:~$ cp file1 file2

Cho phép sao chép nội dung của file1 vào file2. Với file1, file2 là tên các file cần thao tác.

cr0ss@cr0ss-X455LA:~$ cp file… directory

Cho phép chép file vào directory. Lưu ý: các ký tự … theo sau file có thể là nhiều tên file, có tác dụng copy nhiều file một lúc.

Ví dụ, trong thư mục hiện tại của mình đang chứa 2 file là file1.txt và file2.txt, giờ mình sẽ xem nội dung  file1.txt trước.

cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ less file1.txt

123
file1.txt (END)

tiếp đến là file2.txt

cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ less file2.txt

456
file2.txt (END)

OK, giờ mình sẽ thực hiện lệnh cp

cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ cp file1.txt file2.txt
cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$

và giờ xem lại nội dung từng file nhé, trước hết là file1.txt

cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ less file1.txt

123
file1.txt (END)

và file2.txt

cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ less file2.txt

123
file1.txt (END)

phần copy file vào thư mục thì các bạn tự demo thử nha!

Một số ví dụ thường gặp về lệnh cp:

  • cp file1 file2: copy nội dung file1 vào file2, nếu file2 chưa tồn tại, nó sẽ tạo. Nếu file2 đã tồn tại, nó sẽ ghi đè lên nội dung cũ của file2.
  • cp -i file1 file2: -i (iteractive) là ký hiệu đặc biệt.  Nếu file2 đã tồn tại, Shell sẽ nhắc nhở bạn trước khi ghi đè nội dung của file1 lên file2.
  • cp file1 dir1: copy file1 vào thư mục dir1
  • cp -R dir1 dir2: copy nội dung của thư mục dir1 vào thư mục dir2, nếu dir2 đã tồn tại, Shell sẽ ghi đè lên nội dung cũ của nó, nếu dir2 chưa tồn tại, Shell sẽ tạo mới dir2.

mv

Lệnh mv dùng để chuyển hoặc đổi tên file hoặc thư mục tùy vào cách nó được sử dụng như thế nào. Cú pháp như sau:

cr0ss@cr0ss-X455LA:~$ cp file1 file2

Để chuyển file vào một thư mục:

cr0ss@cr0ss-X455LA:~$ mv file… directory

Các ví dụ về lệnh mv gồm các tùy chọn:

  • mv file1 file2: Nếu file2 chưa tồn tại, nó sẽ đổi tên file1 thành file2. Nếu file2 đã tồn tại, nó sẽ thay thế nội dung của file2 thành nội dung của file1.
  • mv -i file1 file2: -i (iteractive) là một tùy chọn đặc biệt, nếu file2 đã tồn tại, Shell sẽ hỏi bạn có chắc về việc thay thế nội dung của file2 thành nội dung file1 không.
  • mv file1 file2 file3 dir: Chuyển file1, file2, file3 đến thư mục dir. Nếu dir chưa tồn tại, Shell sẽ báo lỗi.
  • mv dir1 dir2: Nếu dir2 chưa tồn tại, Shell sẽ đổi tên dir1 thành dir2. Nếu dir2 đã tồn tại, Shell sẽ chuyển thư mục dir1 vào trong thư mục dir2.

Phần demo các bạn tự làm nhé! 🙂

rm

Lệnh rm trên Shell dùng để xóa file hoặc thư mục. Cú pháp là:

cr0ss@cr0ss-X455LA:~$ rm file…

Dùng để xóa file. Và

cr0ss@cr0ss-X455LA:~$ rm -r dir…

Để xóa thư mục. (Các bạn lưu ý tùy chọn -r trong lệnh xóa thư mục).

Các ví dụ về lệnh rm:

  • rm file1 file2: Xóa file1 và file2.
  • rm -i file1 file2: Có thêm tùy chọn -i, Shell sẽ nhắc nhở bạn khi thực hiện xóa mỗi file.
  • rm -r dir1 dir2: Thư mục dir1, dir2 sẽ được xóa cùng với tất cả các thành phần chứa trong nó.

–-> Lưu ý các bạn nên cẩn thận khi sử dụng lênh rm. Trước khi dùng nó bạn phải tuyệt đối cân nhắc, bằng cách sử dụng các lệnh hữu ích khác như ls để liệt kê các file để chắc chắn rằng mình sẽ xóa đúng file. Bởi nếu bạn xóa nhầm một file hệ thống nào đó sẽ gây hậu quả rất nghiêm trọng

mkdir

Lệnh mkdir dùng để tạo một thư mục, cú pháp:

cr0ss@cr0ss-X455LA:~$ mkdir directory

Lệnh này sẽ tạo ra một thư mục có tên directory trong thư mục hiện hành.

––> Các lệnh có sử dụng wildcard

  • cp *.txt text_files: Copy tất cả các file kết thúc bằng đuôi .txt trong thư mục hiện hành vào một thư mục đã tồn tại có tên text_files.
  • mv my_dir ../*.bak my_new_dir: Chuyển thư mục con my_dir và tất cả các file kết thúc bằng .bak trong thư mục cha hiện hành vào trong thư mục mới đã tồn tại có tên là my_new_dir.
  • rm *~: Xóa tất cả các file kết thúc bằng ~ trong thư mục hiện hành. Một vài ứng dụng sẽ tạo file sao lưu sử dụng sơ đồ đặt tên này. Dùng lệnh này sẽ xóa tất cả ra khỏi thư mục.

Có một lệnh khá hữu ích nữa trên Shell đó là lệnh clear. Lệnh này dùng để xóa màn hình trên Terminal. Chính xác là sau khi bạn dùng lệnh này Terminal sẽ chuyển sang một page mới bằng một ký tự đặc biệt, ví dụ, màn hình Terminal của mình trước khi dùng clear là như thế này:

cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ less file1.txt
cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ less file2.txt
cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ cp file1.txt… ~/Desktop
cp: cannot stat ‘file1.txt…’: No such file or directory
cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ cp file1.txt … ~/Desktop
cp: target ‘/home/cr0ss/Desktop’ is not a directory
cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ cp file1.txt … ~/Doccuments
cp: target ‘/home/cr0ss/Doccuments’ is not a directory
cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ cd ~
cr0ss@cr0ss-X455LA:~$ mkdir shell
cr0ss@cr0ss-X455LA:~$ cd ~/MyData/vidu_shell
cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ cp file1.txt … ~/shell
cp: cannot stat ‘…’: No such file or directory
cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ cp file1.txt ~/shell
cr0ss@cr0ss-X455LA:~/MyData/vidu_shell$ cd ~
cr0ss@cr0ss-X455LA:~$ clear

và sau khi  Enter ở dòng clear:

cr0ss@cr0ss-X455LA:~$

Ở bài sau mình sẽ nói về các lệnh xác định và lệnh hỗ trợ khi bạn không biết dạng lệnh của nó trên Shell như thế nào. Chào các bạn!

 

 

 

Advertisements

Author: phuoctv

My name is Phuoc. I'm interested in computer programming and sharing the knowledge. My email: phuoctv14@gmail.com

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s