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 的名稱。)