“.”點命令是shell的一個內部命令,它從指定的shell 檔案中讀入所有命令語句並在當前進程中執行。 (建議學習:linux維運)
因此當多個shell進程(父子進程或無關進程均可)共享一組變數值時,就可以將這些變數賦值語句定義到一個shell檔案裡,並在需要這些變數值的程式中使用點語句來引用這個shell文件,從而實現變數值共享(對這些變數值的修改只涉及這個shell檔案)。
但要注意的是,這個shell檔案不能包含含有位置參數的語句,也就是不能接受$1、$2等命令列參數。
就拿這個不起眼的點(.)來說吧。當它放在一個需要一個目錄名稱的指令的參數時,表示「目前目錄」:
find . -name "*.jpg"
意思是「在目前目錄(包括子目錄)中尋找以 .jpg 結尾的文件」。
ls . 和 cd . 結果也如你想的那樣,它們分別列舉和「進入」到當前目錄,雖然在這兩種情況下這個點都是多餘的。
而一個緊接著另一個的兩個點呢,在同樣的場景下(即當你的指令期望一個檔案目錄的時候)表示「目前目錄的父目錄」。如果你目前在 /home/your_directory 下並且運作:
cd ..
你就會進入 /home。所以,你可能認為這仍然適合「點代表附近目錄」的敘述,而且毫不複雜,對吧?
那下面這樣會怎麼樣呢?如果你在一個檔案或目錄的開頭加上點,它表示這個檔案或目錄會被隱藏:
$ touch somedir/file01.txt somedir/file02.txt somedir/.secretfile.txt $ ls -l somedir/ total 0 -rw-r--r-- 1 paul paul 0 Jan 13 19:57 file01.txt -rw-r--r-- 1 paul paul 0 Jan 13 19:57 file02.txt $ # 注意上面列举的文件中没有 .secretfile.txt $ ls -la somedir/ total 8 drwxr-xr-x 2 paul paul 4096 Jan 13 19:57 . drwx------ 48 paul paul 4096 Jan 13 19:57 .. -rw-r--r-- 1 paul paul 0 Jan 13 19:57 file01.txt -rw-r--r-- 1 paul paul 0 Jan 13 19:57 file02.txt -rw-r--r-- 1 paul paul 0 Jan 13 19:57 .secretfile.txt $ # 这个 -a 选项告诉 ls 去展示“all”文件,包括那些隐藏的
然後就是你可以將 . 當作指令。是的,你聽我說:. 是真真正正的命令。它是 source命令的代名詞,所以你可以用它在當前shell 中執行一個文件,而不是以某種其它的方式去運行一個腳本文件(這通常指的是Bash 會產生一個新的shell 去運行它)
以上是linux .(點)是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!