![Cách sử dụng lệnh Echo trên Linux Cách sử dụng lệnh Echo trên Linux](https://www.howtogeek.com/wp-content/uploads/2019/09/stock-lede-linux-see-attribution.png)
Các echo
lệnh hoàn hảo để ghi văn bản đã định dạng vào cửa sổ đầu cuối. Và nó không nhất thiết phải là văn bản tĩnh. Nó có thể bao gồm các biến shell, tên tệp và thư mục. Bạn cũng có thể chuyển hướng echo để tạo tệp văn bản và tệp nhật ký. Làm theo hướng dẫn đơn giản này để tìm hiểu cách thực hiện.
Echo lặp lại những gì bạn yêu cầu nó lặp lại
Zeus thích rời khỏi đỉnh Olympus để kết đôi với những tiên nữ xinh đẹp. Trong một chuyến đi, anh ta nói với một nữ thần núi tên là Echo sẽ giết vợ anh ta, Hera, nếu cô ấy đi theo anh ta. Hera đã đến tìm Zeus, và Echo đã làm tất cả những gì có thể để giữ cho Hera trò chuyện. Cuối cùng, Hera mất bình tĩnh và nguyền rủa Echo tội nghiệp để cô ấy chỉ lặp lại những lời cuối cùng mà người khác đã nói. Những gì Hera đã làm với Zeus khi cô bắt kịp anh ta là điều ai cũng đoán được.
Và điều đó, khá nhiều, là echo
rất nhiều trong cuộc sống. Nó lặp lại những gì nó đã được yêu cầu lặp lại. Đó là một chức năng đơn giản, nhưng là một chức năng quan trọng. Không có echo
, chúng tôi sẽ không thể nhận được đầu ra hiển thị từ các tập lệnh shell, chẳng hạn.
Trong khi không bị đầy ắp bởi vô số tiếng chuông và tiếng huýt sáo, thì vẫn có khả năng là echo
có một số khả năng mà bạn chưa biết hoặc bạn đã quên.
tiếng vang? tiếng vang!
Hầu hết các hệ thống Linux đều cung cấp hai phiên bản của echo
. Bash shell có echo
được tích hợp vào nó và có một phiên bản thực thi nhị phân của echo
cũng.
Chúng ta có thể thấy hai phiên bản khác nhau bằng cách sử dụng các lệnh sau:
type echo
whereis echo
Các type
lệnh cho chúng ta biết liệu lệnh mà chúng ta truyền cho nó vì đối số của nó là một nội trang shell, một tệp thực thi nhị phân, một bí danh hay một hàm. Nó báo cáo cho chúng tôi rằng echo
là một nội trang của shell.
Ngay sau khi nó được tìm thấy câu trả lời, type
ngừng tìm kiếm các trận đấu tiếp theo. Vì vậy, nó không cho chúng ta biết liệu có các lệnh khác có cùng tên trong hệ thống hay không. Nhưng nó cho chúng ta biết nó tìm thấy cái nào trước. Và đó là lệnh sẽ được sử dụng theo mặc định khi chúng ta đưa ra lệnh đó.
Các whereis
lệnh tìm kiếm tệp thực thi nhị phân, mã nguồn và trang man cho lệnh mà chúng tôi truyền cho nó dưới dạng tham số dòng lệnh của nó. Nó không tìm kiếm các nội trang vỏ bởi vì chúng không có tệp thực thi nhị phân riêng biệt. Chúng là một phần không thể thiếu của tệp thực thi Bash.
Các whereis
lệnh báo cáo rằng echo
là một tệp thực thi nhị phân nằm trong /bin
danh mục.
Để sử dụng phiên bản đó của echo
bạn sẽ cần gọi nó một cách rõ ràng bằng cách cung cấp đường dẫn đến tệp thực thi trên dòng lệnh:
/bin/echo --version
Nội trang của trình bao không biết những gì --version
đối số dòng lệnh là, nó chỉ lặp lại nó trong cửa sổ đầu cuối:
echo --version
Các ví dụ được hiển thị ở đây đều sử dụng phiên bản mặc định của echo
, trong trình bao Bash.
Viết văn bản vào thiết bị đầu cuối
Để viết một chuỗi văn bản đơn giản vào cửa sổ dòng lệnh, hãy nhập echo
và chuỗi bạn muốn nó hiển thị:
echo My name is Dave.
Văn bản được lặp lại cho chúng tôi. Nhưng khi bạn thử nghiệm, bạn sẽ sớm phát hiện ra rằng mọi thứ có thể trở nên phức tạp hơn một chút. Hãy xem ví dụ này:
echo My name is Dave and I'm a geek.
Cửa sổ đầu cuối hiển thị >
ký tên và ngồi đó, chờ đợi. Ctrl + C sẽ đưa bạn trở lại dấu nhắc lệnh. Điều gì đã xảy ra ở đó?
Dấu ngoặc kép hoặc dấu nháy đơn trong từ “Tôi” bị nhầm lẫn echo
. Nó diễn giải câu trích dẫn duy nhất đó là phần bắt đầu của một phần văn bản được trích dẫn. Bởi vì nó không phát hiện ra một câu trích dẫn cuối cùng, echo
đang chờ đợi thêm thông tin đầu vào. Nó mong đợi rằng đầu vào thêm để bao gồm báo giá duy nhất còn thiếu mà nó đang chờ đợi.
Để bao gồm một dấu ngoặc kép trong một chuỗi, giải pháp đơn giản nhất là đặt toàn bộ chuỗi trong dấu ngoặc kép:
echo "My name is Dave and I'm a geek."
Gói văn bản của bạn trong dấu ngoặc kép là lời khuyên chung tốt. Trong tập lệnh, nó phân định rõ ràng các tham số bạn đang chuyển đến echo
. Điều này giúp cho việc đọc — và gỡ lỗi — các tập lệnh dễ dàng hơn nhiều.
Điều gì sẽ xảy ra nếu bạn muốn bao gồm một ký tự dấu ngoặc kép trong chuỗi văn bản của mình? Thật dễ dàng, chỉ cần đặt một dấu gạch chéo ngược phía trước dấu ngoặc kép (không có khoảng cách giữa chúng).
echo "My name is Dave and I'm a "geek.""
Điều này kết thúc từ “geek” trong dấu ngoặc kép đối với chúng tôi. Chúng ta sẽ thấy nhiều hơn trong số này thoát ra sau dấu gạch chéo ngược ký tự trong thời gian ngắn.
Sử dụng các biến có tiếng vọng
Cho đến nay, chúng tôi đã viết văn bản được xác định trước vào cửa sổ đầu cuối. Chúng ta có thể sử dụng các biến với echo
để tạo ra đầu ra năng động hơn và có các giá trị được trình bao chèn vào cho chúng ta. Chúng ta có thể xác định một biến đơn giản bằng lệnh này:
my_name="Dave"
Một biến được gọi là my_name
đã được tạo. Nó đã được gán giá trị của văn bản “Dave.” Chúng ta có thể sử dụng tên biến trong các chuỗi mà chúng ta chuyển đến echo
, và giá trị của biến sẽ được ghi vào cửa sổ đầu cuối. Bạn phải đặt một ký hiệu đô la $
phía trước tên biến để cho echo
biết nó là một biến.
Có một báo trước. Nếu bạn đã gói chuỗi của mình trong các dấu ngoặc kép echo
sẽ coi mọi thứ theo nghĩa đen. Để có biến giá trị hiển thị, và không Tên của biến, sử dụng dấu ngoặc kép.
echo 'My name is $my_name'
echo "My name is $my_name"
Hơi phù hợp, điều đó đáng được nhắc lại:
- Sử dụng Độc thân dấu ngoặc kép dẫn đến văn bản được ghi vào cửa sổ đầu cuối trong một theo nghĩa đen thời trang.
- Sử dụng gấp đôi dấu ngoặc kép dẫn đến biến được diễn giải — còn được gọi là mở rộng biến — và giá trị được ghi vào cửa sổ đầu cuối.
LIÊN QUAN: Cách làm việc với các biến trong Bash
Sử dụng lệnh có tiếng vọng
Chúng ta có thể sử dụng một lệnh với echo
và kết hợp đầu ra của nó vào chuỗi được ghi vào cửa sổ đầu cuối. Chúng ta phải sử dụng ký hiệu đô la $
như thể lệnh là một biến và đặt toàn bộ lệnh trong dấu ngoặc đơn.
Chúng ta sẽ sử dụng lệnh date. Một mẹo là sử dụng lệnh của chính nó trước khi bạn bắt đầu sử dụng nó với echo
. Bằng cách đó, nếu có điều gì đó sai với cú pháp lệnh của bạn, bạn xác định nó và sửa nó trước khi bạn đưa nó vào echo
chỉ huy. Sau đó, nếu echo
lệnh không làm những gì bạn mong đợi, bạn sẽ biết vấn đề phải xảy ra với echo
cú pháp vì bạn đã chứng minh cú pháp của lệnh.
Vì vậy, hãy thử điều này trong cửa sổ đầu cuối:
date +%D
Và, hài lòng rằng chúng tôi đang nhận được những gì chúng tôi mong đợi từ lệnh ngày, chúng tôi sẽ tích hợp nó vào một echo
chỉ huy:
echo "Today's date is: $(date +%D)"
Lưu ý rằng lệnh nằm bên trong dấu ngoặc đơn và ký hiệu đô la $
nằm ngay trước dấu ngoặc đơn đầu tiên.
Định dạng văn bản với tiếng vọng
Các -e
tùy chọn (cho phép thoát dấu gạch chéo ngược) cho phép chúng tôi sử dụng một số ký tự thoát dấu gạch chéo ngược để thay đổi bố cục của văn bản. Đây là những ký tự thoát ra sau dấu gạch chéo ngược mà chúng ta có thể sử dụng:
- a: Cảnh báo (trước đây được gọi là BEL). Điều này tạo ra âm thanh cảnh báo mặc định.
- b: Viết ký tự xóa lùi.
- c: Bỏ qua bất kỳ đầu ra nào khác.
- e: Viết một nhân vật thoát.
- f: Viết một ký tự nguồn cấp dữ liệu biểu mẫu.
- n: Viết một dòng mới.
- r: Viết dấu xuống dòng.
- t: Viết tab ngang.
- v: Viết tab dọc.
- \: Viết một ký tự gạch chéo ngược.
Hãy sử dụng một số trong số chúng và xem chúng làm được gì.
echo -e "This is a long line of textnsplit across three linesnwithttabstontthetthirdtline"
Văn bản được chia thành một dòng mới, nơi chúng tôi đã sử dụng n
ký tự và một tab được chèn vào nơi chúng tôi đã sử dụng t
nhân vật.
echo -e "Herevarevverticalvtabs"
Giống như n
các ký tự dòng mới, một tab dọc v
di chuyển văn bản xuống dòng bên dưới. Nhưng, không giống như n
các ký tự dòng mới, v
tab dọc không bắt đầu dòng mới ở cột số không. Nó sử dụng cột hiện tại.
Các b
các ký tự xóa lùi di chuyển con trỏ trở lại một ký tự. Nếu có thêm văn bản được ghi vào thiết bị đầu cuối, văn bản đó sẽ ghi đè lên ký tự trước đó.
echo -e "123b4"
Chữ “3” được viết quá “4”.
Các r
ký tự xuống dòng nguyên nhân echo
để trở về đầu dòng hiện tại và viết thêm bất kỳ văn bản nào từ cột số không.
echo -e "123r456"
Các ký tự “123” được ghi đè bởi các ký tự “456”.
Các a
ký tự cảnh báo sẽ tạo ra một “tiếng bíp” có thể nghe được. Nó sử dụng âm thanh cảnh báo mặc định cho chủ đề hiện tại của bạn.
echo -e "Make a bleepa"
Các -n
(không có dòng mới) không phải là một chuỗi thoát sau dấu gạch chéo ngược, nhưng nó ảnh hưởng đến tính thẩm mỹ của bố cục văn bản, vì vậy chúng ta sẽ thảo luận về nó ở đây. Nó ngăn cản echo
từ việc thêm một dòng mới vào cuối văn bản. Dấu nhắc lệnh xuất hiện ngay sau văn bản được ghi vào cửa sổ dòng lệnh.
echo -n "no final newline"
Sử dụng echo Với Tệp và Thư mục
Bạn có thể dùng echo
như một loại phiên bản của người nghèo của ls
. Tùy chọn của bạn rất ít và xa giữa khi bạn sử dụng echo
như thế này. Nếu bạn cần bất kỳ loại độ trung thực hoặc kiểm soát tốt nào, tốt hơn hết bạn nên sử dụng ls
và quân đoàn các tùy chọn của nó.
Lệnh này liệt kê tất cả các tệp và thư mục trong thư mục hiện tại:
echo *
Lệnh này liệt kê tất cả các tệp và thư mục trong thư mục hiện tại có tên bắt đầu bằng “D”:
echo D*
Lệnh này liệt kê tất cả các tệp “.desktop” trong thư mục hiện tại:
echo *.desktop
Đúng vậy. Điều này không chơi với echo
điểm mạnh của. Sử dụng ls
.
Ghi vào tệp bằng tiếng vang
Chúng tôi có thể chuyển hướng đầu ra từ echo
và tạo tệp văn bản hoặc ghi vào tệp văn bản hiện có.
Nếu chúng ta sử dụng >
toán tử chuyển hướng, tệp được tạo nếu nó không tồn tại. Nếu tệp tồn tại, đầu ra từ echo
được thêm vào đầu tệp, ghi đè lên bất kỳ nội dung nào trước đó.
Nếu chúng ta sử dụng >>
toán tử chuyển hướng, tệp được tạo nếu nó không tồn tại. Đầu ra từ echo
được thêm vào cuối tệp và không ghi đè lên bất kỳ nội dung hiện có nào của tệp.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
Một tệp mới được tạo bởi lệnh đầu tiên và văn bản được chèn vào đó. Lệnh thứ hai thêm một dòng văn bản vào cuối tệp. Các cat
lệnh hiển thị nội dung của tệp vào cửa sổ đầu cuối.
Và tất nhiên, chúng tôi có thể bao gồm các biến để thêm một số thông tin hữu ích vào tệp của chúng tôi. Nếu tệp là một tệp nhật ký, chúng tôi có thể muốn thêm dấu thời gian vào tệp đó. Chúng ta có thể làm điều đó với lệnh tiếp theo.
Lưu ý các dấu ngoặc kép xung quanh các tham số cho date
chỉ huy. Chúng ngăn không gian giữa các tham số được hiểu là phần cuối của danh sách tham số. Chúng đảm bảo các thông số được chuyển đến date
một cách chính xác.
echo "Logfile started: $(date +'%D %T')" > logfile.txt
cat logfile.txt
Logfile của chúng tôi được tạo cho chúng tôi và cat
cho chúng tôi thấy rằng cả dấu dữ liệu và dấu thời gian đã được thêm vào nó.
LIÊN QUAN: Stdin, stdout và stderr trên Linux là gì?
Đó là tiết mục của echo
Một lệnh đơn giản, nhưng không thể thiếu. Nếu nó không tồn tại, chúng ta phải phát minh ra nó.
Rốt cuộc, những trò tai quái của Zeus đã làm được một số điều tốt.