针对许多频繁使用的
命令行参数,Shell 提供了相应的符号 或记号作为简写。您只需输入这些符号来代替相应的参数。
如上所述,~ 表示您的 home 目录。与之类似的简写形式 ~username 表示 username 的 home 目录。例如,~joe 表示 joe 的 home 目录,所以,要将
文件从 joe 的 doc 目录复制到您的 info 目录,您可以输入下面的命令:
代码:
$ cp ~joe/doc/report.txt ~/info
假设 joe 的 home 目录位于 /guests,而您的 home 目录为 /staff/bobr,~joe 将由 /guests/joe 替换,而 ~ 则变成 /staff/bobr,最后产生命令 cp /guests/joe/doc/report.txt /staff/bobr/info。
另一个有用的符号是 ..(两个点号),这是当前目录的父目录的简写。使用 .. 和 .(当前工作目录的简写符号),您可以引用文件
系统中相对于当前工作目录的文件和目录。
例如,如果您的当前工作目录为 ~/jane/projects/lambda,那么简写 ../.. 表示向上两级目录的目录,即 ~/jane。要表示包含 ~/jane 的目录,您可以使用 ../../../(“向上三级目录”)或路径 ~jane/../。后面的这个路径表示从 ~jane 开始,然后转到上一级目录。
要将文件复制到您的当前目录,不需要指定目标目录,可以直接使用 .(“点”)来表示:
代码:$ cp -pr /path/to/lots/of/stuff
前面的命令将 /path/to/lots/of/stuff 目录递归地复制到您的当前目录,并保持其原始的时间和日期戳。引用 .. 和 . 的路径名称为相对路径名。以 /(正斜杠)或 ~(波浪符号)开头的路径名称为绝对路径名,因为您是从文件系统的顶端、或从一个目录层次结构的顶端开始来引用相应的文件。
用波浪号快速修改输错的命令
假如打错了一个很长的命令,需要重新输入是十分沮丧的事情。例如:
$ find . -naem "*.txt" -print
的例子中,name 被错误的输成了 naem ,我们能够用下面的波浪符号来替换:
$ ^em^me^
find . -name "*.txt" -print
检验您的工作
如果您想要查看命令行符号扩展后的结果,可以使用 echo 命令:
代码:$ echo ~joe/doc/report.txt ~/info
/guests/joe/doc/report.txt /staff/bobr/info
$ echo $SHELL
/bin/zsh
$ ls
architecture.txt Services.pdf
services.txt Schema.pdf
$ echo *.txt
architecture.txt services.txt
echo 命令将完整地表达您在命令行中输入的内容。然而,因为 Shell 会在调用任何程序之前,对(大多数)命令行参数进行扩展,所以该命令将打印出所有替换的结果。(Shell 环境变量 $SHELL 包含当前正在运行的 Shell 的名称。)