Shell 符號(hào)

  針對(duì)許多頻繁使用的命令行參數(shù),Shell 提供了相應(yīng)的符號(hào) 或記號(hào)作為簡(jiǎn)寫。您只需輸入這些符號(hào)來代替相應(yīng)的參數(shù)。

  如上所述,~ 表示您的 home 目錄。與之類似的簡(jiǎn)寫形式 ~username 表示 username 的 home 目錄。例如,~joe 表示 joe 的 home 目錄,所以,要將文件從 joe 的 doc 目錄復(fù)制到您的 info 目錄,您可以輸入下面的命令:
代碼:
$ cp ~joe/doc/report.txt ~/info
  假設(shè) joe 的 home 目錄位于 /guests,而您的 home 目錄為 /staff/bobr,~joe 將由 /guests/joe 替換,而 ~ 則變成 /staff/bobr,最后產(chǎn)生命令 cp /guests/joe/doc/report.txt /staff/bobr/info。

  另一個(gè)有用的符號(hào)是 ..(兩個(gè)點(diǎn)號(hào)),這是當(dāng)前目錄的父目錄的簡(jiǎn)寫。使用 .. 和 .(當(dāng)前工作目錄的簡(jiǎn)寫符號(hào)),您可以引用文件系統(tǒng)中相對(duì)于當(dāng)前工作目錄的文件和目錄。

  例如,如果您的當(dāng)前工作目錄為 ~/jane/projects/lambda,那么簡(jiǎn)寫 ../.. 表示向上兩級(jí)目錄的目錄,即 ~/jane。要表示包含 ~/jane 的目錄,您可以使用 ../../../(“向上三級(jí)目錄”)或路徑 ~jane/../。后面的這個(gè)路徑表示從 ~jane 開始,然后轉(zhuǎn)到上一級(jí)目錄。

  要將文件復(fù)制到您的當(dāng)前目錄,不需要指定目標(biāo)目錄,可以直接使用 .(“點(diǎn)”)來表示:
代碼:$ cp -pr /path/to/lots/of/stuff
  前面的命令將 /path/to/lots/of/stuff 目錄遞歸地復(fù)制到您的當(dāng)前目錄,并保持其原始的時(shí)間和日期戳。引用 .. 和 . 的路徑名稱為相對(duì)路徑名。以 /(正斜杠)或 ~(波浪符號(hào))開頭的路徑名稱為絕對(duì)路徑名,因?yàn)槟菑奈募到y(tǒng)的頂端、或從一個(gè)目錄層次結(jié)構(gòu)的頂端開始來引用相應(yīng)的文件。

用波浪號(hào)快速修改輸錯(cuò)的命令

假如打錯(cuò)了一個(gè)很長(zhǎng)的命令,需要重新輸入是十分沮喪的事情。例如:

  $ find . -naem "*.txt" -print

  的例子中,name 被錯(cuò)誤的輸成了 naem ,我們能夠用下面的波浪符號(hào)來替換:

  $ ^em^me^

  find . -name "*.txt" -print


檢驗(yàn)?zāi)墓ぷ?/strong>

  如果您想要查看命令行符號(hào)擴(kuò)展后的結(jié)果,可以使用 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 命令將完整地表達(dá)您在命令行中輸入的內(nèi)容。然而,因?yàn)?Shell 會(huì)在調(diào)用任何程序之前,對(duì)(大多數(shù))命令行參數(shù)進(jìn)行擴(kuò)展,所以該命令將打印出所有替換的結(jié)果。(Shell 環(huán)境變量 $SHELL 包含當(dāng)前正在運(yùn)行的 Shell 的名稱。)