我是终端新手,正在尝试学习如何使用它。
这些线起什么作用?它们如何工作?
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 日,星期二
建议:
使用
man
或--help
命令来了解有关任何其他命令的更多信息。
例如:man echo echo --help
尝试这些挑战挑战确实能够很好地帮助你学习在终端上做事。