这个语法是什么意思?

这个语法是什么意思?

我是终端新手,正在尝试学习如何使用它。

这些线起什么作用?它们如何工作?

echo -n "Today's date is: "
date +"%A, %B %-d, %Y"

答案1

$ type echo
echo is a shell builtin

意思是,该echo命令是程序本身的一部分bash(假设你使用 bash)

-n是一个选项,让我们看看它的作用

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

因此当我们运行该行时:

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

嗯,看起来不太好,因为打印的文本后没有换行符。我们稍后再讨论这个问题。

$ type date
date is /bin/date

啊,所以这个date命令是一个单独的程序。它做什么?

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

命令后的字符date是格式选项(必须以 为前缀+)- 指定日期的不同部分(例如%A是星期几的全名 - 请参阅其余部分man date以获取完整的选项列表)

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

因此,如果我们将命令放在一个脚本中,然后运行脚本,我们将得到

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

太棒了!如果你想在终端中获得同样的效果,你可以使用分号来分隔两个命令,而不是换行符:

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

答案2

您应该从手册页开始,命令man。只需输入man <command>即可获取有关 的信息<command>。导航man不是很直观,但有很多指南,例如https://wiki.gentoo.org/wiki/Man_page/Navigate#Navigating_and_searching_man_pages

man echo和的相关部分man date

回声

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

Echo the STRING(s) to standard output.

-n     do not output the trailing newline

因此它会打印字符串并且不会转到之后的新行(这是默认行为),所以下一个命令的输出将打印在回显字符串的右侧。

日期

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

我希望你理解得很清楚。如果不清楚,请随时询问。

答案3

echo -n "Today's date is: "

它将打印:今天的日期是:

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

它将打印如下内容:2017 年 2 月 7 日,星期二

建议

  1. 使用man--help命令来了解有关任何其他命令的更多信息。
    例如:

    man echo
    echo --help
    
  2. 尝试这些挑战挑战确实能够很好地帮助你学习在终端上做事。

相关内容