Không phải tất cả các ký tự đều bằng nhau trong Bash. Một số chúng thực hiện các chức năng đặc biệt, điều chỉnh các lệnh và giúp chúng ta thao tác với dữ liệu. Đó là lý do tại sao chúng tôi đã biên soạn danh sách sau với các ký tự đặc biệt Bash quan trọng nhất. Đọc tiếp để tìm hiểu cách sử dụng chúng và cách chúng có thể giúp cuộc sống Bash hàng ngày của bạn dễ dàng hơn.
Dấu phân cách đường dẫn thư mục (/)
Trong Bash, dấu gạch chéo lên (/
) phân tách các phần của một đường dẫn, các thư mục con trong các thư mục. Để truy cập thư mục có tên “hình ảnh” bên trong thư mục chính của bạn, bạn sẽ phải sử dụng lệnh cd
như:
cd /home/USERNAME/pictures
Mọi thứ sau dấu gạch chéo trong ví dụ trên đều nằm trong phần trước dấu gạch chéo.
Danh bạ Trang chủ (~)
Thay vì nhập tên đầy đủ của thư mục chính trong thiết bị đầu cuối Bash, bạn có thể sử dụng ký tự dấu ngã (~
). Ví dụ:để chuyển đến thư mục chính của bạn, hãy sử dụng:
cd ~
Bạn cũng có thể kết hợp nó vào các đường dẫn phức tạp hơn. Ví dụ:để chỉnh sửa tệp có tên “mydata.txt” bên trong thư mục “Cá nhân” trong Thư mục chính của bạn, hãy sử dụng:
nano ~/Personal/mydata.txt
Thư mục Hiện tại / Trên (.)
Bạn có thể sử dụng một (.
) hoặc dấu chấm đôi (..
) để xác định xem một hành động nên được thực hiện bên trong thư mục hiện tại hay hành động ở trên, tương ứng. Dấu chấm đơn (.) Ánh xạ tới thư mục hiện tại trong khi dấu chấm kép (..) ánh xạ tới thư mục phía trên thư mục đó.
Giả sử bạn đang ở trong thư mục “/ home / USERNAME / Pictures” và muốn thực thi tập lệnh có tên “biến đổi_images.sh” trong cùng một thư mục. Trong trường hợp này, hãy nhập:
sh ./transform_images.sh
Nếu sau khi thực thi tập lệnh, bạn muốn quay lại thư mục phía trên thư mục hiện đang ở, hãy nhập:
cd ..
Điều đó sẽ đưa bạn từ thư mục “/ home / USERNAME / Pictures” về “/ home / USERNAME.”
Nhận xét và Hủy (#)
Biểu tượng băm (#
) hữu ích hơn khi viết các tập lệnh Bash vì nó cho phép bạn thêm nhận xét vào chúng để tham khảo trong tương lai. Bash bỏ qua mọi thứ theo sau ký hiệu băm.
Trong tập lệnh sau, dòng đầu tiên xác định đó là tập lệnh Bash, dòng thứ hai là nhận xét bị bỏ qua và dòng thứ ba là lệnh sao chép đ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
Hàm băm hữu ích ngay cả khi bạn không viết tập lệnh vì chúng cho phép bạn hủy các phần của lệnh. Để xem điều đó hoạt động, hãy thử lệnh đơn giản sau:
echo I am YOUR_NAME
Sau đó, hãy thử những cách sau để thay thế:
echo I am #YOUR_NAME
Bạn sẽ chỉ thấy “Tôi đã trở lại” trong phiên bản thứ hai vì hàm băm sẽ hủy mọi thứ tiếp theo sau đó.
Dải ([])
Bạn có thể xác định phạm vi ký tự bằng cách đặt chúng trong dấu ngoặc vuông ([]
). Để thấy điều đó hoạt động, giả sử bạn muốn tìm kiếm các tên thư mục bắt đầu bằng D hoặc M. Nhập:
ls [DM]*
Có lẽ thay vào đó, bạn đang ở trong một thư mục chứa đầy các thư mục con được đặt tên theo từng năm. Để sao chép các thư mục trong năm năm trước đó vào /home/USERNAME/backup
, sử dụng:
cp -r 201[56789] /home/USERNAME/backup
Bạn thậm chí có thể đơn giản hóa chúng hơn nữa bằng dấu gạch ngang (-):
cp 201[5-9] /home/USERNAME/backup
Bash sẽ lặp lại từ 5 đến 9 để bao gồm các số giữa chúng.
Chuyển hướng (<>)
Sử dụng dấu ngoặc nhọn (<>
), bạn có thể chuyển hướng đầu vào hoặc đầu ra của lệnh. Ví dụ:lệnh sau:
ls >> list.txt
sẽ chuyển hướng đầu ra của ls
và lưu nó vào tệp “list.txt”.
Lưu ý rằng một dấu ngoặc vuông kép (>>
) phần tiếp theo đầu ra của một lệnh thành một tệp. Nếu bạn chạy lại cùng một lệnh, nó sẽ nối đầu ra của nó vào cuối nội dung hiện có. Để thay thế nội dung của nó với các kết quả mới, hãy sử dụng một dấu ngoặc vuông đơn (>
):
ls > list.txt
Ống (|)
Bạn có thể kết hợp các lệnh khác nhau thành một tổng thể lớn hơn để đạt được các kết quả phức tạp hơn bằng cách sử dụng các đường ống (|
). Chúng hơi giống với chuyển hướng (xem thêm về điểm giống và khác nhau của chúng tại đây).
Giả sử bạn có một tệp lớn với hàng nghìn mục nhập và muốn định vị tên của bạn trong đó. Thay vì tìm kiếm nó trong trình soạn thảo văn bản, hãy làm như sau:
cat entries.txt | grep 'YourName'
Trong trường hợp này, đầu ra của “entry.txt” sẽ được chuyển đến grep
lệnh.
Dấu phân cách lệnh (;)
Bash cho phép bạn đưa ra nhiều lệnh cùng một lúc bằng cách phân tách chúng bằng dấu chấm phẩy (;
). Ví dụ:để sao chép hai thư mục vào hai đích khác nhau bằng một lệnh:
cp folder1 destination1; cp folder2 destination2
Dấu chấm phẩy phân tách hai lệnh và yêu cầu Bash thực hiện chúng một cách tuần tự. Lưu ý rằng bạn có thể sử dụng nhiều hơn hai lệnh nếu muốn.
Ký tự đại diện (*)
Có thể bạn đã sử dụng dấu hoa thị (*
) trong một số lệnh. Nó khớp với bất kỳ chuỗi ký tự nào và cho phép các hành động như sao chép tất cả các tệp JPG từ thư mục này sang thư mục khác:
cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/
Dấu chấm hỏi (?
) cũng là một ký tự đại diện trong Bash nhưng chỉ khớp với một ký tự duy nhất. Ví dụ:
cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/
Lệnh trên sẽ sao chép tất cả các tệp jpg trong các thư mục bắt đầu bằng “201.” Vì ký tự đại diện dịch sang bất kỳ ký tự chữ và số nào, không chỉ số, lệnh trên cũng sẽ sao chép bất kỳ thư mục nào có thể được đặt tên là “201A” hoặc “201z.”
Khởi chạy trong nền (&)
Bạn có thể chạy lệnh dưới dạng quy trình nền chỉ bằng cách thêm lệnh bằng ký hiệu và (&
):
cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &
Ở trên sẽ bắt đầu sao chép tệp big_file.zip và ngay lập tức di chuyển xuống nền, cho phép bạn tiếp tục sử dụng thiết bị đầu cuối. Lệnh sẽ tự động thoát khi hoàn thành. Nếu bạn muốn đưa nó về phía trước một lần nữa, bạn có thể làm như vậy bằng cách nhập fg
tiếp theo là Enter.
Biến ($)
Kí hiệu đô la ($
) cho phép bạn thiết lập các biến để sử dụng trong các lệnh của mình. Để xem chúng hoạt động, hãy thử nhập thông tin sau vào thiết bị đầu cuối của bạn:
myname=YOUR_NAME myage=YOUR_AGE echo "I'm $myname and I'm $myage years old"
Lưu ý rằng không có ký hiệu đô la khi gán giá trị cho các biến.
Thoát (\) và Trích dẫn (”)
Nếu bạn muốn sử dụng bất kỳ ký tự đặc biệt nào giống như trong một lệnh, bạn sẽ phải thoát khỏi ký tự đó. Bạn có thể làm điều đó bằng cách đặt trước ký tự đặc biệt một dấu gạch chéo ngược (\
). Ví dụ:nếu bạn có một tệp có tên bao gồm dấu chấm than, bạn phải nhập \!
thay vào đó, Bash giải thích nó như một dấu chấm than chứ không phải là một ký tự đặc biệt.
Một cách khác sẽ là sử dụng một trong hai (''
) hoặc dấu ngoặc kép (""
). Bằng cách đặt một chuỗi trong dấu ngoặc kép, bất kỳ ký tự đặc biệt nào trong chuỗi đó sẽ được coi là ký tự thực. Cũng có sự khác biệt giữa dấu nháy đơn và dấu ngoặc kép. Dấu ngoặc kép sẽ đánh giá chuỗi kèm theo dưới dạng văn bản trong khi dấu ngoặc kép cho phép bạn sử dụng các biến ($) trong chuỗi kèm theo.
Kết thúc
Trên đây không phải là những ký tự đặc biệt duy nhất trong Bash, nhưng chúng là những ký tự mà chúng tôi cho là hữu ích nhất cho cuộc phiêu lưu hàng ngày của chúng tôi trong nhà ga. Đừng quên xem các phím tắt này để nhanh chóng di chuyển trong Bash. Hãy cho chúng tôi biết trong phần bình luận bên dưới nếu chúng tôi bỏ lỡ bất kỳ ký tự đặc biệt quan trọng nào.