Không phải ký tự nào cũng ngang nhau trong Bash. Một số mang chức năng đặc biệt, điều chỉnh lệnh, giúp thao tác dữ liệu. Đó là lý do chúng tôi biên dịch danh sách sau với các ký tự đặc biệt Bash quan trọng nhất. Đọc để biết cách dùng và cách chúng làm cuộc sống Bash hàng ngày dễ dàng hơn.
Phân tách đường dẫn thư mục (/)
Trong Bash, dấu gạch chéo tiến (/) tách các phần của đường dẫn, thư mục con trong thư mục. Để vào thư mục "pictures" trong thư mục home, dùng lệnh cd:
cd /home/USERNAME/pictures
Mọi thứ sau dấu gạch chéo trong ví dụ trên nằm trong cái trước dấu gạch chéo.
Thư mục Home (~)
Thay vì gõ tên đầy đủ thư mục home trong terminal Bash, bạn dùng ký tự tilde (~). Ví dụ, vào thư mục home:
cd ~
Bạn cũng kết hợp vào đường dẫn phức tạp. Ví dụ, chỉnh tệp "mydata.txt" trong thư mục "Personal" trong Home:
nano ~/Personal/mydata.txt
Thư mục hiện tại / Thư mục cha (.)
Bạn dùng dấu chấm đơn (.) hoặc kép (..) để định nghĩa hành động thực hiện trong thư mục hiện tại hoặc thư mục cha, tương ứng. Dấu chấm đơn (.) ánh xạ tới thư mục hiện tại, dấu chấm kép (..) ánh xạ tới thư mục trên.
Giả sử bạn ở "/home/USERNAME/pictures" và muốn chạy script "transform_images.sh" trong cùng thư mục. Gõ:
sh ./transform_images.sh
Nếu sau chạy script, muốn quay lại thư mục cha, gõ:
cd ..
Đó sẽ đưa bạn từ "/home/USERNAME/pictures" về "/home/USERNAME".
Comment và Hủy (#)
Ký tự thăng (#) hữu ích khi viết script Bash vì cho phép thêm comment để tham khảo sau. Bash bỏ qua mọi thứ theo sau thăng.
Trong script sau, dòng đầu định nghĩa script Bash, dòng hai comment bị bỏ qua, dòng ba lệnh copy điển hình:
#!/bin/bash # This is a comment - you can type anything you want here cp file1.txt /home/USERNAME/scripts/file2.txt
Thăng hữu ích ngay cả không viết script vì cho phép hủy phần lệnh. Thử lệnh đơn giản:
echo I am YOUR_NAME
Sau đó thử:
echo I am #YOUR_NAME
Bạn chỉ thấy "I am" trả về ở phiên bản hai vì thăng hủy mọi thứ theo sau.
Phạm vi ([])
Bạn định nghĩa phạm vi ký tự bằng cách đóng trong ngoặc vuông ([]). Để thấy hoạt động, giả sử bạn muốn tìm tên thư mục bắt đầu bằng D hoặc M. Gõ:
ls [DM]*
Có lẽ bạn ở thư mục đầy thư mục con đặt tên theo năm. Để copy thư mục 5 năm trước vào /home/USERNAME/backup, dùng:
cp -r 201[56789] /home/USERNAME/backup
Bạn thậm chí đơn giản hơn với gạch ngang (-):
cp 201[5-9] /home/USERNAME/backup
Bash sẽ lặp từ 5 đến 9 bao gồm số giữa.
Chuyển hướng (<>)
Dùng ngoặc nhọn (<>), bạn chuyển hướng input hoặc output của lệnh. Ví dụ, lệnh:
ls >> list.txt
sẽ chuyển hướng output của ls lưu vào "list.txt".
Lưu ý ngoặc nhọn kép phải (>>) ghép nối output vào tệp. Chạy lại lệnh, nó ghép output vào cuối nội dung cũ. Để thay thế nội dung kết quả mới, dùng ngoặc nhọn đơn phải (>):
ls > list.txt
Pipe (|)
Bạn kết hợp lệnh khác nhau thành khối lớn đạt kết quả phức tạp hơn bằng pipe (|). Chúng hơi giống chuyển hướng (xem sự giống/khác ở đây).
Giả sử bạn có tệp khổng lồ hàng nghìn entry và muốn tìm tên bạn. Thay vì tìm trong trình soạn thảo, làm:
cat entries.txt | grep 'YourName'
Trong trường hợp này, output "entries.txt" sẽ pipe vào lệnh grep.
Phân tách lệnh (;)
Bash cho phép chạy nhiều lệnh cùng lúc bằng cách tách bằng dấu chấm phẩy (;). Ví dụ, copy hai thư mục đến hai đích với một lệnh:
cp folder1 destination1; cp folder2 destination2
Dấu chấm phẩy tách hai lệnh và bảo Bash chạy tuần tự. Bạn có thể dùng nhiều hơn hai lệnh.
Wildcard (*)
Bạn có thể đã dùng dấu sao (*) trong lệnh. Nó khớp bất kỳ chuỗi ký tự nào và cho phép hành động như copy tất cả JPG từ thư mục này sang kia:
cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/
Dấu hỏi (?) cũng là wildcard trong Bash nhưng chỉ khớp một ký tự. Ví dụ:
cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/
Lệnh trên copy tất cả jpg trong thư mục bắt đầu "201". Vì wildcard dịch bất kỳ ký tự alphanumeric, không chỉ số, lệnh cũng copy thư mục tên "201A" hoặc "201z".
Chạy nền (&)
Bạn chạy lệnh như tiến trình nền chỉ bằng cách thêm dấu & vào cuối:
cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &
Trên sẽ bắt đầu copy huge_file.zip và ngay lập tức chuyển nền, cho bạn tiếp tục dùng terminal. Lệnh tự thoát khi xong. Nếu muốn đưa về foreground, gõ fg và Enter.
Biến ($)
Dấu đô la ($) cho phép thiết lập biến dùng trong lệnh. Thử gõ sau trong terminal:
myname=YOUR_NAME myage=YOUR_AGE echo "I'm $myname and I'm $myage years old"
Lưu ý không có dấu đô la khi gán giá trị cho biến.
Escape (\) và Quote (\" \" )
Nếu bạn muốn dùng ký tự đặc biệt như nó trong lệnh, phải escape. Làm bằng cách thêm backslash (\) trước ký tự đặc biệt. Ví dụ, nếu tệp tên có dấu chấm than, gõ \! để Bash hiểu là dấu chấm than không phải ký tự đặc biệt.
Cách khác dùng ngoặc đơn ('') hoặc kép (""). Bao chuỗi trong quote, ký tự đặc biệt trong đó được xử lý như ký tự thực. Có khác biệt giữa ngoặc đơn/kép. Ngoặc đơn đánh giá chuỗi như văn bản, ngoặc kép cho phép dùng biến ($) trong chuỗi.
Kết thúc
Trên không phải tất cả ký tự đặc biệt Bash, nhưng là những cái chúng tôi coi hữu ích nhất cho phiêu lưu terminal hàng ngày. Đừng quên xem phím tắt bàn phím di chuyển nhanh trong Bash. Cho chúng tôi biết trong comment nếu thiếu ký tự đặc biệt quan trọng.