Cú pháp này có nghĩa là gì?


Câu trả lời:


76
$ type echo
echo is a shell builtin

có nghĩa là, echolệnh là một phần của bashchính chương trình (giả sử bạn sử dụng bash)

-n là một tùy chọn, vì vậy hãy xem những gì nó làm

$ help echo
Write arguments to the standard output
...
-n  do not append a newline

Vì vậy, khi chúng tôi chạy dòng:

zanna@monster:~$ echo -n "Today's date is: "
Today's date is: zanna@monster:~$ 

Hmm trông không được tốt lắm, vì không có dòng mới sau văn bản in. Chúng tôi sẽ trở lại với điều này.

$ type date
date is /bin/date

ah vì vậy datelệnh là một chương trình riêng biệt. Nó làm gì?

$ man date
Display the current time in the given FORMAT, or set the system date.

Các ký tự sau datelệnh là các tùy chọn định dạng (phải được đặt trước +) - các phần khác nhau của ngày được chỉ định (ví dụ: %Atên đầy đủ của ngày trong tuần - xem phần còn lại của man datedanh sách tùy chọn đầy đủ)

$ date +"%A, %B %-d, %Y"
Tuesday, February 7, 2017

Vì vậy, nếu chúng ta đặt các lệnh cùng nhau trong một tập lệnh và sau đó chạy tập lệnh, chúng tôi sẽ nhận được

Today's date is: Tuesday, February 7, 2017

Đẹp! Nếu bạn muốn có cùng hiệu ứng trong một thiết bị đầu cuối, bạn có thể sử dụng dấu chấm phẩy để phân tách hai lệnh thay vì một dòng mới:

$ echo -n "Today's date is: " ; date +"%A, %B %-d, %Y"
Today's date is: Tuesday, February 7, 2017

21
Đây là câu trả lời RTFM nâng cao, +1
YSC

1
Tôi muốn nói rằng điều này thiếu một lời giải thích cho dấu cộng trước khi tranh luận là gì
Délisson Junio

@ DélissonJunio ​​đã chỉnh sửa, nhưng câu trả lời của Melebius cho thấy điều đó tốt hơn với trích dẫn trang người đàn ông trực tiếp
Zanna

@Zanna Tôi không phải là OP, nhưng điều khiến tôi chú ý là thực tế là điểm cộng có vẻ kỳ lạ vì tôi nghĩ bash sẽ diễn giải mọi thứ giữa các trích dẫn là một đối số, không bao gồm dấu cộng. Nhưng tôi đoán đây là một câu hỏi khác
Délisson Junio

2
Bạn thực sự có thể đặt dấu cộng bên trong dấu ngoặc kép là tốt. Bash có một cách cảm giác kỳ lạ khi chạy cùng với văn bản được trích dẫn và liền kề, ví dụ cd "$ x" / output hoặc thậm chí là nospace / "with space" / nospace
StarWeaver

10

Bạn nên bắt đầu với các trang hướng dẫn, lệnh man. Chỉ cần gõ man <command>để có được thông tin về a <command>. Điều hướng trong mankhông trực quan lắm nhưng có rất nhiều hướng dẫn về nó, ví dụ https://wiki.gentoo.org/wiki/Man_page/Navigate#Navigating_and_searching_man_pages .

Các phần có liên quan của man echoman date:

tiếng vang

echo [SHORT-OPTION]... [STRING]...

Echo the STRING(s) to standard output.

-n     do not output the trailing newline

Vì vậy, nó in chuỗi và không đi đến dòng mới sau đó (đó là hành vi mặc định), vì vậy đầu ra của lệnh tiếp theo sẽ được in ở phía bên phải của chuỗi lặp lại.

ngày

date [OPTION]... [+FORMAT]

FORMAT controls the output.  Interpreted sequences are:

%A     locale's full weekday name (e.g., Sunday)

%B     locale's full month name (e.g., January)

%d     day of month (e.g., 01)

%Y     year

By default, date pads numeric fields with zeroes.  The following optional flags may follow '%':

-      (hyphen) do not pad the field

Tôi hy vọng nó rõ ràng. Hãy hỏi nếu không.


Cảm ơn rất nhiều. Tôi có một câu hỏi khác: Đã có chức năng tích hợp sẵn để hiển thị ngày trong thiết bị đầu cuối chưa?
không xác định

@Zanna Nó không thực sự là một câu hỏi mới, nó có liên quan đến một câu hỏi mà tôi đã hỏi.
không xác định

1
@Un Unknownperson nếu bạn muốn ngày được hiển thị trong thiết bị đầu cuối theo mặc định, đó thực sự là một câu hỏi hoàn toàn khác với "mã này làm gì" bởi vì bạn sẽ cần phải chỉnh sửa biến PS1 (hoặc có thể được thực hiện với ứng dụng đầu cuối cài đặt - về điều đó tôi không biết gì) nằm ngoài phạm vi của bài đăng này
Zanna

1
@Un Unknownperson date không hiển thị ngày trong thiết bị đầu cuối (giao diện dòng lệnh). Nếu bạn muốn một cái gì đó nhiều hơn (như những gì Zanna gợi ý), vui lòng hỏi một câu hỏi mới.
Melebius

4
echo -n "Today's date is: "

Nó sẽ in: Ngày hôm nay là:

date +"%A, %B %-d, %Y"

Nó sẽ in một cái gì đó như thế này: Thứ ba, ngày 7 tháng 2 năm 2017

Lời khuyên :

  1. sử dụng manhoặc --helplệnh để biết thêm về bất kỳ lệnh nào khác.
    ví dụ :

    man echo
    echo --help
  2. Hãy thử những thử thách này những thử thách thực sự tốt để giúp bạn học cách làm mọi thứ trên thiết bị đầu cuối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.