In kí tự trong linux

Nếu bạn muốn thành thạo Bash shell trên Linux, macOS hoặc một hệ thống giống UNIX khác, các ký tự đặc biệt (như ~, *, |, và>) là rất quan trọng. Chúng tôi sẽ giúp bạn làm sáng tỏ những chuỗi lệnh khó hiểu này của Linux và trở thành người hùng của chữ tượng hình.

  • Các ký tự đặc biệt là gì?
  • ~ Danh mục Trang chủ
  • . Thư mục hiện tại
  • .. Thư mục chính
  • / Dấu phân cách thư mục đường dẫn
  • # Nhận xét hoặc Cắt chuỗi
  • ? Ký tự đại diện đơn
  • * Ký tự đại diện trình tự ký tự
  • [] Một
  • Một
  • MỘT
  • > Output Redirection
  • error.txt "lệnh trong cửa sổ đầu cuối." width = "646" height = "122">
  • MỘT
  • Lệnh sau chạy lại lệnh trước đó:
  • MỘT
    • Share this post!

Có một tập hợp các ký tự Bash shell xử lý theo hai cách khác nhau. Khi bạn gõ chúng vào shell, chúng sẽ hoạt động như các hướng dẫn hoặc lệnh và yêu cầu shell thực hiện một chức năng nhất định. Hãy coi chúng là các lệnh đơn ký tự.

Đôi khi, bạn chỉ muốn in một ký tự và không cần nó hoạt động như một biểu tượng ma thuật. Có một cách bạn có thể sử dụng một ký tự để đại diện cho chính nó thay vì chức năng đặc biệt của nó.

Chúng tôi sẽ cho bạn biết những ký tự nào là ký tự “đặc biệt” hoặc “meta-”, cũng như cách bạn có thể sử dụng chúng theo chức năng và nghĩa đen.

~ Danh mục Trang chủ

Dấu ngã (~) là viết tắt của thư mục chính của bạn. Nó có nghĩa là bạn không phải nhập đường dẫn đầy đủ đến thư mục chính của mình trong các lệnh. Dù bạn đang ở đâu trong hệ thống tệp, bạn có thể sử dụng lệnh này để truy cập thư mục chính của mình:

cd ~

Bạn cũng có thể sử dụng lệnh này với các đường dẫn tương đối. Ví dụ: nếu bạn đang ở đâu đó trong hệ thống tệp không nằm trong thư mục chính và muốn thay đổi thành thư mục lưu trữ trong thư mục công việc của mình, hãy sử dụng dấu ngã để thực hiện:

cd ~/work/archive

In kí tự trong linux

. Thư mục hiện tại

Dấu chấm (.) Đại diện cho thư mục hiện tại. Bạn sẽ thấy nó trong danh sách thư mục nếu bạn sử dụng tùy chọn -a (tất cả) với ls.

ls -a

In kí tự trong linux

Bạn cũng có thể sử dụng dấu chấm trong các lệnh để biểu thị đường dẫn đến thư mục hiện tại của bạn. Ví dụ: nếu bạn muốn chạy một tập lệnh từ thư mục hiện tại, bạn sẽ gọi nó như sau:

./script.sh

Điều này yêu cầu Bash tìm tệp script.sh trong thư mục hiện tại. Bằng cách này, nó sẽ không tìm kiếm các thư mục trong đường dẫn của bạn để tìm tệp thực thi hoặc tập lệnh phù hợp.

In kí tự trong linux

.. Thư mục chính

Dấu chấm kép hoặc “dấu chấm kép” (..) đại diện cho thư mục mẹ của thư mục hiện tại của bạn. Bạn có thể sử dụng điều này để tăng một cấp trong cây thư mục.

cd ..

In kí tự trong linux

Bạn cũng có thể sử dụng lệnh này với các đường dẫn tương đối — ví dụ: nếu bạn muốn lên một cấp trong cây thư mục, rồi nhập một thư mục khác ở cấp đó.

Bạn cũng có thể sử dụng kỹ thuật này để di chuyển nhanh chóng đến một thư mục ở cùng cấp trong cây thư mục với thư mục hiện tại của bạn. Bạn nhảy lên một cấp, rồi lùi một cấp vào một thư mục khác.

cd ../gc_help

In kí tự trong linux

/ Dấu phân cách thư mục đường dẫn

Bạn có thể sử dụng dấu gạch chéo lên (/) – thường được gọi là dấu gạch chéo – để tách các thư mục trong tên đường dẫn.

ls ~/work/archive

In kí tự trong linux

Một dấu gạch chéo ngược đại diện cho đường dẫn thư mục ngắn nhất có thể. Bởi vì mọi thứ trong cây thư mục Linux đều bắt đầu từ thư mục gốc, bạn có thể sử dụng lệnh này để di chuyển đến thư mục gốc một cách nhanh chóng:

cd /

In kí tự trong linux

# Nhận xét hoặc Cắt chuỗi

Thông thường, bạn sử dụng dấu thăng hoặc dấu số (#) để cho shell biết những gì sau đây là một nhận xét và nó không nên tác động lên nó. Bạn có thể sử dụng nó trong các tập lệnh shell và — ít hữu ích hơn — trên dòng lệnh.

# This will be ignored by the Bash shell

In kí tự trong linux

Tuy nhiên, nó không thực sự bị bỏ qua vì nó đã được thêm vào lịch sử lệnh của bạn.

Bạn cũng có thể sử dụng hàm băm để cắt một biến chuỗi và xóa một số văn bản ngay từ đầu. Lệnh này tạo một biến chuỗi được gọi là this_string.

Trong ví dụ này, chúng tôi gán văn bản “Dave Geek!” vào biến.

this_string="Dave Geek!"

In kí tự trong linux

Lệnh này sử dụng tiếng vọng để in các từ “Hướng dẫn” ra cửa sổ đầu cuối. Nó truy xuất giá trị được lưu trữ trong biến chuỗi thông qua mở rộng tham số. Bởi vì chúng tôi nối hàm băm và văn bản “Dave”, nó sẽ cắt bớt phần đó của chuỗi trước khi nó được chuyển sang tiếng vọng.

echo How-To ${this_string#Dave}

In kí tự trong linux

Điều này không thay đổi giá trị được lưu trữ trong biến chuỗi; nó chỉ ảnh hưởng đến những gì được gửi tới echo. Chúng ta có thể sử dụng echo để in giá trị của biến chuỗi một lần nữa và kiểm tra điều này:

echo $this_string

In kí tự trong linux

? Ký tự đại diện đơn

Bash shell hỗ trợ ba ký tự đại diện, một trong số đó là dấu chấm hỏi (?). Bạn sử dụng các ký tự đại diện để thay thế các ký tự trong các mẫu tên tệp. Tên tệp có chứa ký tự đại diện tạo thành một mẫu phù hợp với một loạt tên tệp, thay vì chỉ một.

Ký tự đại diện dấu chấm hỏi đại diện cho chính xác một ký tự. Hãy xem xét mẫu tên tệp sau:

ls badge?.txt

Điều này được dịch là “liệt kê bất kỳ tệp nào có tên bắt đầu bằng ‘huy hiệu’ và theo sau là bất kỳ ký tự đơn nào trước phần mở rộng tên tệp.”

Nó phù hợp với các tệp sau đây. Lưu ý rằng một số có số và một số có các chữ cái sau phần “huy hiệu” của tên tệp. Ký tự đại diện dấu chấm hỏi sẽ khớp với cả chữ cái và số.

In kí tự trong linux

Tuy nhiên, mẫu tên tệp đó không khớp với “huy hiệu.txt” vì tên tệp không có một ký tự duy nhất giữa “huy hiệu” và phần mở rộng tệp. Ký tự đại diện dấu chấm hỏi phải khớp với một ký tự tương ứng trong tên tệp.

Bạn cũng có thể sử dụng dấu chấm hỏi để tìm tất cả các tệp có một số ký tự cụ thể trong tên tệp. Điều này liệt kê tất cả các tệp văn bản chứa chính xác năm ký tự trong tên tệp:

ls ?????.txt

In kí tự trong linux

* Ký tự đại diện trình tự ký tự

Bạn có thể sử dụng dấu hoa thị

ls badge*

ký tự đại diện đại diện cho bất kỳ chuỗi ký tự nào, kể cả ký tự không. Hãy xem xét mẫu tên tệp sau:

In kí tự trong linux

Một

Nó khớp với “huy hiệu.txt” vì ký tự đại diện đại diện cho bất kỳ chuỗi ký tự nào hoặc không có ký tự nào.

ls source.*

In kí tự trong linux

[] Một

Bộ ký tự đại diện

Như đã đề cập ở trên, bạn sử dụng dấu chấm hỏi để đại diện cho bất kỳ ký tự đơn nào và dấu hoa thị để đại diện cho bất kỳ chuỗi ký tự nào (bao gồm không có ký tự nào). [] Bạn có thể tạo một ký tự đại diện với dấu ngoặc vuông (

) và các ký tự chứa chúng. Khi đó, ký tự có liên quan trong tên tệp phải khớp với ít nhất một trong các ký tự trong bộ ký tự đại diện.

ls badge_0[246].txt

In kí tự trong linux

Một

ls badge_[01][789].txt

In kí tự trong linux

Một

ls badge_[23][1-5].txt

In kí tự trong linux

Một

; Dấu phân tách lệnh Shell

ls > count.txt; wc -l count.txt; rm count.txt

In kí tự trong linux
Một

count.txt; wc -l count.txt; lệnh rm count.txt ”trong cửa sổ đầu cuối ‘width =” 646 ″ height = ”122 ″ onload =” pagespeed.lazyLoadImages.loadIfVosystemAndMaybeBeacon (this); ” onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVosystemAndMaybeBeacon (this);”>

Lưu ý rằng lệnh thứ hai chạy ngay cả khi lệnh đầu tiên không thành công, lệnh thứ ba chạy ngay cả khi lệnh thứ hai không thành công, v.v.

cd ./doesntexist && cp ~/Documents/reports/* .

In kí tự trong linux

MỘT

& Quy trình nền

Sau khi bạn nhập một lệnh trong cửa sổ dòng lệnh và nó hoàn tất, bạn quay lại dấu nhắc lệnh. Thông thường, điều này chỉ mất một hoặc hai giây phút. Nhưng nếu bạn khởi chạy một ứng dụng khác, chẳng hạn như gedit, bạn không thể sử dụng cửa sổ đầu cuối của mình cho đến khi bạn đóng ứng dụng.

gedit command_address.page &

In kí tự trong linux

MỘT

Bash hiển thị cho bạn ID quy trình của những gì đã khởi chạy, sau đó đưa bạn trở lại dòng lệnh. Sau đó, bạn có thể tiếp tục sử dụng cửa sổ đầu cuối của mình.

sort 

In kí tự trong linux

When a command has input redirected into it, it might behave differently than when it reads from a named file.

If we use wc to count the words, lines, and characters in a file, it prints the values, and then the filename. If we redirect the contents of the file to wc, it prints the same numeric values but doesn’t know the name of the file from which the data came. It cannot print a filename.

Here are some examples of how you can use wc:

wc words.txt
wc 

In kí tự trong linux

> Output Redirection

You can use the right-angle bracket ( > ) to redirect the output from a command (typically, into a file); here’s an example:

ls > files.txt
cat files.txt

In kí tự trong linux
Một

files.txt "lệnh trong cửa sổ dòng lệnh." width = "646" height = "382">

wc doesntexist.txt 2> errors.txt
cat errors.txt

In kí tự trong linux
MỘT

error.txt "lệnh trong cửa sổ đầu cuối." width = "646" height = "122">

| Đường ống

Một "đường ống" liên kết các lệnh với nhau. Nó lấy đầu ra từ một lệnh và chuyển nó sang lệnh tiếp theo làm đầu vào. Số lượng các lệnh liên kết (độ dài của chuỗi) là tùy ý.

Ở đây, chúng tôi sẽ sử dụng cat để cung cấp nội dung của tệp words.txt vào tệp grep, tệp này trích xuất bất kỳ dòng nào có chứa chữ “C.” viết thường hoặc viết hoa. grep sau đó sẽ chuyển các dòng này để sắp xếp. sắp xếp đang sử dụng tùy chọn -r (đảo ngược), vì vậy các kết quả được sắp xếp sẽ xuất hiện theo thứ tự ngược lại.

cat words.txt | grep [cC] | sort -r

In kí tự trong linux

MỘT

! Đường ống logic NOT và Toán tử lịch sử

Dấu chấm than (!) Là một toán tử logic có nghĩa là KHÔNG.

[ ! -d ./backup ] && mkdir ./backup

Có hai lệnh trong dòng lệnh này:
Lệnh đầu tiên là văn bản trong dấu ngoặc vuông;

Lệnh thứ hai là văn bản theo sau dấu kép &&.

Lệnh đầu tiên sử dụng! như một toán tử logic. Dấu ngoặc vuông cho biết một bài kiểm tra sẽ được thực hiện. Tùy chọn -d (thư mục) kiểm tra sự hiện diện của một thư mục được gọi là sao lưu. Lệnh thứ hai tạo thư mục.

Bởi vì các ký hiệu kép và dấu phân cách hai lệnh, Bash sẽ chỉ thực hiện lệnh thứ hai nếu lệnh đầu tiên thành công. Tuy nhiên, đó là điều ngược lại với những gì chúng ta cần. Nếu quá trình kiểm tra thư mục “backup” thành công, chúng tôi không cần tạo nó. Và nếu quá trình kiểm tra thư mục "sao lưu" không thành công, lệnh thứ hai sẽ không được thực thi và thư mục bị thiếu sẽ không được tạo.

Đây là nơi toán tử logic! đi vào. Nó hoạt động như một KHÔNG hợp lý. Vì vậy, nếu kiểm tra thành công (tức là, thư mục tồn tại),! chuyển điều đó thành "KHÔNG thành công", đó là thất bại. Vì vậy, lệnh thứ hai không được kích hoạt.

Nếu kiểm tra thư mục không thành công (tức là thư mục không tồn tại), thì! thay đổi phản hồi thành "KHÔNG thất bại", đó là thành công. Vì vậy, lệnh tạo thư mục bị thiếu được thực hiện.

Ít thôi ! gói rất nhiều cú đấm khi bạn cần!

ls -l -d backup

In kí tự trong linux

MỘT

!24

In kí tự trong linux

MỘT

!!

Lệnh sau chạy lại lệnh trước đó:

Biểu thức $ biến Trong Bash shell, bạn tạo các biến để giữ các giá trị. Một số, như biến môi trường,

luôn tồn tại và bạn có thể truy cập chúng bất kỳ lúc nào bạn mở cửa sổ dòng lệnh. Những giá trị này giữ các giá trị, chẳng hạn như tên người dùng, thư mục chính và đường dẫn của bạn.

echo $USER
echo $HOME
echo $PATH

In kí tự trong linux

Một

ThisDistro=Ubuntu
MyNumber=2001
echo $ThisDistro
echo $MyNumber

In kí tự trong linux

Một

Thêm dấu ngoặc nhọn ({}) xung quanh dấu đô la và thực hiện mở rộng tham số để lấy giá trị của biến và cho phép biến đổi giá trị tiếp theo.

MyString=123456qwerty

Điều này tạo ra một biến chứa một chuỗi ký tự, như được hiển thị bên dưới:

echo ${MyString}

Sử dụng lệnh sau để lặp lại chuỗi tới cửa sổ đầu cuối:

echo ${myString:6}

Để trả về chuỗi con bắt đầu từ vị trí 6 của toàn bộ chuỗi, hãy sử dụng lệnh sau (có một khoảng lệch 0, vì vậy vị trí đầu tiên là 0):

echo ${myString:0:6}

Nếu bạn muốn lặp lại một chuỗi con bắt đầu từ vị trí 0 và chứa sáu ký tự tiếp theo, hãy sử dụng lệnh sau:

echo ${myString:4:4}

In kí tự trong linux

MỘT

Trích dẫn các ký tự đặc biệt

Nếu bạn muốn sử dụng một ký tự đặc biệt như một ký tự nghĩa đen (không phải đặc biệt), bạn phải nói với Bash shell. Điều này được gọi là trích dẫn, và có ba cách để làm điều đó.

Nếu bạn đặt văn bản trong dấu ngoặc kép (“…”), điều này sẽ ngăn Bash tác động lên hầu hết các ký tự đặc biệt và chúng chỉ in ra. Tuy nhiên, có một ngoại lệ đáng chú ý là ký hiệu đô la ($). Nó vẫn hoạt động như một ký tự cho các biểu thức biến, vì vậy bạn có thể bao gồm các giá trị từ các biến trong kết quả đầu ra của mình.

echo "Today is $(date)"

Ví dụ, lệnh này in ngày và giờ:

echo 'Today is $(date)'

Nếu bạn đặt văn bản trong dấu ngoặc kép ('…') như được hiển thị bên dưới, nó sẽ dừng chức năng của tất cả các ký tự đặc biệt:

echo "Today is $(date)"

In kí tự trong linux

Bạn có thể sử dụng dấu gạch chéo ngược () để ngăn ký tự sau hoạt động như một ký tự đặc biệt. Điều này được gọi là "thoát" ký tự; xem ví dụ bên dưới:

Chỉ cần nghĩ về các ký tự đặc biệt là các lệnh rất ngắn. Nếu bạn ghi nhớ cách sử dụng của chúng, điều đó có thể giúp bạn hiểu rõ hơn về Bash shell — và các tập lệnh của người khác — vô cùng.