Shell 符号

  针对许多频繁使用的命令行参数,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 的名称。)