從shell角度看世界

每當輸入一個命令按下enter鍵后,bash在執(zhí)行命令之前會對輸入的字符完成幾個步驟處理。
如echo是shell的一個內(nèi)部命令,功能是打印出文本參數(shù),傳遞到echo命令的每個參數(shù)都會被顯示出來。
6016@go:~$ echo i am a girl
i am a girl
但是echo不會打印,原因為匹配文件中的任意字符,shell把*展開成當前的工作目錄。
6016@go:~$ echo *
1428406016石蕾report003.pdf bin foo.txt ls-output.txt scripts work xx

眾所周知,以圓點字符開頭的文件名是隱藏文件,路徑名展開也遵守這種原則,
6016@go:~$ echo *
1428406016石蕾report003.pdf bin foo.txt ls-output.txt scripts work xx
6016@go:~$ echo .*
. .. .bash_history .bash_logout .bashrc .cache .dbus .profile .ssh .ttt.swp .vim .viminfo .Xauthority
要是展開模式以一個圓點開頭,就能夠在展開模式中包含隱藏文件,而且隱藏文件可能會出現(xiàn)在第一位置,如上面的命令行,而光是*就不會顯示出隱含文件。
回想CD命令,~有特殊的意義,它用在一個單詞的開頭時,就會展開成指定用戶的家目錄名,如果沒有指定用戶名,則是當前用戶的家目錄。
6016@go:~$ echo ~
/home/EE/6016
6016@go:~$ echo ~foo
~foo
算術表達式由數(shù)值和算術操作符組成,只支持整數(shù)(全部是數(shù)字,不帶小數(shù)點),但是能執(zhí)行很多不同的操作。(+ 加 - 減 * 乘 / 除 % 取余 ** 取冪) 在算術表達式中空格并不重要,并且表達式可以嵌套。
花括號的展開可以從一個包含花括號的模式中創(chuàng)建多個文本字符串,包含一個開頭部分叫做報頭,一個結尾部分叫做附言?;ɡㄌ柋磉_式本身可能包含一個由逗號分開的字符串列表,或者一系列整數(shù),或者單個的字符串,這種模式不能嵌入空白字符。
如果你把文本放在雙引號中,shell 使用的特殊字符,除了$,\ ,和‘之外,則失去它們的特殊含義,被當作普通字符來看待。這意味著單詞分割,路徑名展開,波浪線展開,和花括號展開都被禁止,然而參數(shù)展開,算術展開,和命令替換仍然執(zhí)行。使用雙引號,我們可以處理包含空格的文件名。
因此,在雙引號中,參數(shù)展開,算術表達式展開,和命令替換仍然有效。
隨著繼續(xù)學習shell,我們會發(fā)現(xiàn)使用展開和引用的頻率逐漸多起來,所以能夠很好的理
解他們的工作方式很有意義。事實上,他們是學習shell 的最重要的主題。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,975評論 0 11
  • 第 3 章目錄: 3.1 shell 語法3.2 shell 命令3.3 shell 函數(shù)3.4 shell 參數(shù)...
    C86guli閱讀 6,599評論 2 4
  • 為何叫做 shell ? shell prompt(PS1) 與 Carriage Return(CR) 的關系?...
    Zero___閱讀 3,314評論 3 49
  • 我有可能是迷路了 除了黑暗什么我都看不見 但我只能向前走 或許 那根本不是我的前 我有可能是瞎了 我只能用手...
    星杳閱讀 317評論 0 1

友情鏈接更多精彩內(nèi)容