欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Cygwin系列(五):Shell命令行初體驗 | silaoA的博客

本文共4300余字,預計閱讀時(shí)間15分鐘,本文同步發(fā)布于知乎(賬號silaoA)和微信公眾號平臺(賬號偽碼人)。

前一篇文章Cygwin系列(四):一步一步搭建Cygwin最小系統中已建立了最小系統環(huán)境,本篇將初步體驗Cygwin的Shell命令行。

0x00 牛刀初試

利用setup安裝完最小系統后,桌面上建立了一個(gè)名為“Cygwin Terminal”的快捷方式。

桌面上Cygwin Terminal快捷方式

雙擊運行,彈出一個(gè)黑框框,初次運行還會(huì )自動(dòng)幫用戶(hù)做一些配置工作,如建立用戶(hù)目錄等。最后,打印一個(gè)形式如“xxx@yyy ~ $”的提示符,緊跟著(zhù)是閃爍的光標,等待用戶(hù)輸入。如果直接按回車(chē),黑框框里就換行繼續打印出同樣的提示符,同樣跟著(zhù)是閃爍的光標,繼續等待用戶(hù)輸入。

那,可以做點(diǎn)什么呢?換句話(huà)說(shuō),我們能運行什么命令?先試試ls /,本人的輸出結果如下圖,注意到本人因做了額外配置,因此顯示內容、顏色與你的可能不同,注意“s”和“/”之間有空格隔開(kāi)。

命令“l(fā)s /”的結果

再來(lái)解釋這個(gè)命令,ls是命令名稱(chēng),是list的簡(jiǎn)寫(xiě),用于列出指定路徑下的文件,而“/”就是指定的“路徑”。那么,“/”指的哪個(gè)路徑?如果稍稍留意輸出結果,可以推測出“/”就是指Cygwin安裝的頂層路徑。好像沒(méi)什么稀奇的,Windows下用Explorer也看看到指定路徑下的文件,而且更直觀(guān)。

不著(zhù)急,再繼續,試試help,輸出如下,結果比較長(cháng),截圖只有一部分。這個(gè)命令貌似是告訴用戶(hù)一些命令的用法。

命令“help”的結果

初次體會(huì )到此結束,接下來(lái)并不想要你在黑框框里盲目亂敲,讓我們暫且開(kāi)啟高空俯視視角,避免迷失在暗黑森林。

0x01 臺前幕后

好奇心驅使我去了解雙擊“Cygwin Terminal”快捷方式后,Windows幫我做了些什么。查看快捷方式的屬性,其中“目標”字段的值為“D:\Cygwin64\bin\mintty.exe -e /bin/bash –login -i”,從這里可以推斷,快捷方式實(shí)際運行的是mintty.exe,它就在Cygwin安裝目錄(D:\Cygwin64)的bin子目錄中,那么mintty是什么?后邊的“-e /bin/bash –login -i”又是什么意思?

查詢(xún)mintty官網(wǎng)上有文檔介紹,mintty是用于Cygwin、MSYS、Msys2等項目的“終端模擬器(Terminal Emulator)”,顧名思義,它就是用來(lái)模擬終端的,但是終端自身僅具有基本輸入輸出能力,并不會(huì )執行程序指令。

再接著(zhù)看,看到下面這張圖,mintty的help輸出中有一行“-e –exec Treat remaining arguments as the command to execute”,也就是“/bin/bash –login -i”是mintty啟動(dòng)后要執行的命令,這是要mintty啟動(dòng)bash.exe的節奏,還順帶傳遞了–login和-i選項,再一查“bash”,大名鼎鼎的Bourne Again Shell。再結合minttyhelp輸出的頭兩行“Start a new session running the specified program or user’s shell”,也就是說(shuō)mintty啟動(dòng)的時(shí)候,會(huì )開(kāi)啟一個(gè)終端會(huì )話(huà)運行指定的程序或用戶(hù)Shell,上述“/bin/bash –login -i”正是“指定的程序”。 更多詳情,mintty官網(wǎng)給了詳細的手冊頁(yè)。

mintty的help信息(圖片來(lái)源:https://mintty.github.io)

進(jìn)一步,打開(kāi)Windows任務(wù)管理器,看到一個(gè)“應用”Terminal和一個(gè)“后臺進(jìn)程”bash.exe,右鍵Terminal,轉到詳細信息,正是mintty.exe。

查看到mintty和bash進(jìn)程

至此,可以初步確定,雙擊快捷方式實(shí)質(zhì)是啟動(dòng)了mintty,而mintty又啟動(dòng)了后臺進(jìn)程bash,我們看到的前臺窗口是mintty,而幕后則有bash在干活。

經(jīng)過(guò)一番操作(此處省略一萬(wàn)字……),了解到終端、終端模擬器、Shell的概念,可以總結如下:
①終端自身并不執行用戶(hù)輸入的命令,它只是負責把輸入的內容傳給系統,并把結果呈現在窗口上給用戶(hù)看;
②終端模擬器是一個(gè)模擬終端的圖形界面軟件,mintty就是一個(gè)終端模擬器實(shí)例;
③Shell是負責解釋執行用戶(hù)命令的解釋器,bash就是一個(gè)Shell實(shí)例,它是由mintty在后臺啟動(dòng)的。

從操作關(guān)系角度,可以簡(jiǎn)要繪制如下示意圖,其中Cygwin核心是更深層幕后工作者,為mintty、bash的運行提供環(huán)境支撐。

用戶(hù)、mintty、bash操作關(guān)系示意

0x02 概念與規則

好了,現在理清楚了,在mintty輸入的內容實(shí)際都交給了Shell(bash)在處理,輸入的內容即為“命令”。俗話(huà)說(shuō)“沒(méi)有規矩不成方圓”,bash自有其一套語(yǔ)法規則,不合規則的輸入內容不能視作合法命令,Shell(bash)無(wú)法處理。

命令的形式

每條命令大體上遵循“<命令名稱(chēng)> <選項> <選項值> <參數>”的形式,命令名稱(chēng)(command)、選項(option)、選項值(value)、參數(argument)之間用空格隔開(kāi)。除了命令名稱(chēng),其他部分都不是必需的,比如在本文最開(kāi)頭執行的ls /,其中ls是命令名稱(chēng),/是參數,help就僅包含命令名稱(chēng),mintty --help只包含命令名稱(chēng)和選項,沒(méi)有選項值和參數。

計算機發(fā)明之初,存儲器是很稀有的資源,為了盡量減少存儲空間,也為了方便用戶(hù)記憶,命令名稱(chēng)都是單詞簡(jiǎn)寫(xiě),十分簡(jiǎn)潔,這個(gè)傳統基本上被保留下來(lái)。

命令名稱(chēng)描述要做什么(Do What),這個(gè)好理解,參數描述的是作用對象(to Whom),也比較好理解,而選項和選項值則具體描述怎么做(How to Do),這就比較復雜了。事實(shí)上,各個(gè)命令描述最多的地方就是選項和選項值。

選項有單個(gè)連字符(-)與字母組成的短選項風(fēng)格(UNIX風(fēng)格)和兩個(gè)連字符(–)與單詞組成的長(cháng)選項風(fēng)格(GNU風(fēng)格),很多命令兩者都支持,而且部分短選項和長(cháng)選項等效,還有少數命令支持“+”與字母組成的選項,甚至與這些風(fēng)格都不符的選項。

大部分命令都有“-v”和“-h”這兩個(gè)選項,或等價(jià)的“–version”和“–help”,用于顯示版本信息和幫助信息。熟悉應用程序,最主要地就是熟悉不同選項和不同參數配合作用,并加以掌握。對某個(gè)程序命令完全不了解或者是忘記了,都可以嘗試“-h”、“–help”、“-v”、“–version”選項去了解。

有哪些命令

Shell能識別的命令大致分為3類(lèi):
內建(built-in)命令,僅與Shell自身有關(guān),不同的Shell(如sh、bash、zsh、fish等)支持的內建命令;
用戶(hù)定義函數(function)、別名(alias)等,用戶(hù)可自定義一些Shell函數,給命名設置別名等;
外部命令,額外安裝的可執行程序越多,可供執行的外部命令就越多,比如ls就是外部命令。

要查詢(xún)某個(gè)命令屬于哪種,執行type -a <命令名稱(chēng)>即可;要看當前Shell支持哪些內建命令,執行help即可,其中type、help就是bash等Shell都會(huì )提供的內建命令。在剛安裝完Cygwin最小系統時(shí),bin子目錄下大量可執行文件,除去一些DLL文件,其余都是Shell外部命令。

工作路徑

文件都是存放在具體某個(gè)路徑下的,Shell在工作的時(shí)候也是處在某個(gè)路徑下,要查詢(xún)當前工作路徑(current working directory)是什么,可以通過(guò)內建命令pwd打印出來(lái),內建命令cd <路徑>可以切換工作路徑。

Shell剛啟動(dòng)的時(shí)候,默認切換到當前用戶(hù)目錄作為初始工作路徑,前文提到的提示符中,~就是當前用戶(hù)目錄,試下pwd如圖,結果為/home/<用戶(hù)名>。其中,home是Cygwin安裝目錄下的子目錄,<用戶(hù)名>是登錄當前Shell的賬號,在Cygwin中登錄當前Shell的賬號就是登錄到Windows系統的用戶(hù)名,這個(gè)子目錄是首次啟動(dòng)Shell時(shí)自動(dòng)建立的。

“~”指示當前用戶(hù)目錄

為什么要強調“當前”?因為UNIX/Linux是真正的多用戶(hù)系統,允許多個(gè)用戶(hù)同時(shí)登錄到系統中取得使用權,系統給每個(gè)用戶(hù)在/home目錄下建立各自的用戶(hù)目錄,這樣每個(gè)用戶(hù)的環(huán)境彼此隔離、互不干擾。Windows是號稱(chēng)多用戶(hù)系統,雖然也給每個(gè)用戶(hù)建立各自的用戶(hù)目錄,在C:\Users下,但是Windows一次只允許一個(gè)用戶(hù)登錄。

0x03 命令急救箱

以上洋洋灑灑長(cháng)篇大論,除了開(kāi)頭演示ls /、help和中間穿插介紹的type、cd、pwd,就沒(méi)介紹幾個(gè)命令用法。本節也只打算介紹幾個(gè)關(guān)鍵命令,記住這幾個(gè),就可以去從零了解各個(gè)命令用法。

help

help是Shell內建命令,可以查看各個(gè)內建命令的用法。如果不帶參數,help輸出當前Shell支持的所有內建命令;如果帶參數,help <參數1> <參數2> ···則按參數逐個(gè)嘗試查找幫助主題,通常所有參數應當為內建命令或者能匹配內建命令的模式,比如h*匹配所有以h開(kāi)頭的內建命令:help、history。

“help help”結果

-h或–help選項

對于絕大多數外部命令,都支持至少“-h”和“–help”選項之一,用于顯示該命令的用法,即使“-h”可能用作他途,但“–help”絕對是顯示用法。

“l(fā)s --help”結果

也有少數命令不支持“-h”或“–help”選項,而是在沒(méi)有任何選項參數或者出錯的時(shí)候顯示用法。

man

man是POSIX規定的幫助手冊程序,是mannual的簡(jiǎn)寫(xiě)。軟件包中除了程序本身,還帶了大量用戶(hù)文檔,在UNIX/Linux系統中,手冊頁(yè)是最常見(jiàn)的用戶(hù)文檔之一,man手冊頁(yè)用特殊的格式寫(xiě)成并壓縮,通過(guò)man命令瀏覽。系統安裝的軟件包手冊頁(yè)通常在/usr/share/man/目錄之下,按照章節分門(mén)別類(lèi)地放在man1~man8子目錄中。

參照上面的說(shuō)明,試試man --help,如下圖man支持的選項很多,<章節>參數可以是1~8,指定man查找的章節。一般使用場(chǎng)景中不需要任何選項,直接man <主題>即可,man從1~8所有章節去查找,主題不限于命令名稱(chēng),還可以是系統調用、函數庫等。

“man --help”結果

在man查看手冊頁(yè)時(shí),空格鍵向下翻頁(yè),PgUp/PgDn鍵向上/下翻頁(yè),↑/↓鍵向上/下移動(dòng)一行,g/G跳轉到頁(yè)面頂部/底部,q退出,h查看幫助操作。更多詳情,試試“man man”。

info

用戶(hù)文檔除了man手冊頁(yè),還有info格式的手冊頁(yè),由GNU項目引入,通過(guò)info(information的縮寫(xiě))命令瀏覽,一般UNIX/Linux系統同時(shí)支持maninfo兩種風(fēng)格的手冊頁(yè)。

Info手冊頁(yè)按照節點(diǎn)(node)組織,每個(gè)手冊頁(yè)文件是一個(gè)節點(diǎn),手冊頁(yè)內支持鏈接到其他節點(diǎn),如此組織猶如一張網(wǎng),和網(wǎng)頁(yè)類(lèi)似。Info手冊頁(yè)一般存放在/usr/share/info目錄下,其中dir文件是Top節點(diǎn),相當于網(wǎng)站中的index首頁(yè)。

老規矩,info --help試試怎么用,如圖,info也支持較多選項,給出的例子中,直接info <主題>,和man類(lèi)似。不加主題參數時(shí),info默認打開(kāi)Top節點(diǎn)。

“info --help”結果

在info瀏覽手冊頁(yè)時(shí),空格向下翻頁(yè),PgUp/PgDn鍵向上/下翻頁(yè),↑/↓鍵向上/下移動(dòng)一行,b/e跳轉至當前節點(diǎn)頁(yè)首(begin)/頁(yè)末(end),q退出,Enter跟蹤鏈接,p/n/u跳轉至與當前節點(diǎn)關(guān)聯(lián)的前一個(gè)(previous)/后一個(gè)(next)/上一級(up)節點(diǎn),l回退至上次(last)頁(yè)面,m/g跳轉至本節點(diǎn)內菜單(menu)項,Ctrl-g取消當前要執行的動(dòng)作。更多詳情,試試info info命令。

0x04 其他提示

  • UNIX、GNU、BSD的程序軟件數不勝數,而且數量不斷增長(cháng),我們不可能記住每個(gè)程序怎么用,也不應試圖去背、去記憶,常用的命令和常見(jiàn)的用法只有一小部分,熟能生巧。不熟悉的話(huà),試下--help選項、man、info命令,配合網(wǎng)上應用案例,也能摸清個(gè)大概了。
  • UNIX、GNU、BSD的命令行程序功能單一而強悍,Shell可以巧妙靈活地將其組織起來(lái),發(fā)揮出更加強大的功效,用多用熟悉了才能體會(huì )到。
  • 英語(yǔ)真的比較重要,英語(yǔ)水平不需要很高,但要能夠閱讀手冊頁(yè)等文檔。
  • Shell有很多特性,對于初學(xué)者來(lái)講,最有用莫過(guò)于Tab鍵補全。在終端中輸入命令、路徑、文件等名稱(chēng)的時(shí)候,記得不準確,字符多了容易出錯,Tab補全是一大福音。比如輸入“m”,Shell會(huì )列出所有匹配以“m”開(kāi)頭的命令;再緊接著(zhù)輸入“a”,Shell列出所有匹配以“ma”開(kāi)頭的命令,這樣逐漸縮減范圍,直至唯一匹配。同樣也適用于目錄和文件補全,文件或目錄名字很長(cháng)時(shí)非常容易出錯又難于檢查,Tab鍵補全可以省去不少敲鍵盤(pán)的時(shí)間,還避免了錯誤,文件或目錄名補全支持中文。
  • 為練習本文內容,建議針對/bin目錄下所有命令逐個(gè)嘗試–help選項、查看man/info手冊。

參考

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Linux 文件命令精通指南
python學(xué)習筆記
[HowTo][Bash]如何取得當前正在執行的腳本的絕對路徑?
BASH shell set命令詳解
shell的運行模式
Linux如何查看文件地址?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久