高級(jí)CLI:開(kāi)發(fā)人員都應(yīng)該知道的命令
在本文中,我們不會(huì)介紹ls,rm和cd等基本命令。看到這些命令應(yīng)該不會(huì)令您感到震驚。您甚至可能對(duì)它們非常熟悉,特別是如果您非常了解命令行的方式。我假設(shè)您之前至少已經(jīng)在命令行上工作(或嘗試過(guò)工作)。如果您以前從未使用過(guò)命令行,建議您先閱讀一些基礎(chǔ)知識(shí)。
本文適合那些對(duì)命令行有一定經(jīng)驗(yàn)并了解基本命令的用戶。對(duì)于那些覺(jué)得是時(shí)候該深入研究使用命令行的可能性的人來(lái)說(shuō)。我在本文中為您列出了六個(gè)命令,并且提供了一些技巧。
wget
在類似Unix的操作系統(tǒng)上,wget命令通過(guò)網(wǎng)絡(luò)下載HTTP、HTTPS或FTP服務(wù)的文件。默認(rèn)情況下,它包含在所有自重的Linux發(fā)行版中。
使用wget的最簡(jiǎn)單方法是為它提供要通過(guò)HTTP下載的文件的位置。使用wget下載文件
http://website.com/static/images/header.jpg可以通過(guò)以下命令完成:
- wget http://website.com/static/images/header.jpg
wgetwget的一大優(yōu)點(diǎn)是它是非交互式的,這意味著它可以在用戶未登錄時(shí)在后臺(tái)運(yùn)行。這使您可以開(kāi)始檢索并與系統(tǒng)斷開(kāi)連接,讓wget完成工作。
scp
您是否曾經(jīng)遇到過(guò)需要從本地計(jì)算機(jī)上的遠(yuǎn)程服務(wù)器獲取文件的問(wèn)題?例如,獲取用戶上傳的文件會(huì)造成一些麻煩。
您可以使用scp命令通過(guò)命令行下載此文件。Scp是安全拷貝的簡(jiǎn)稱。但是,更重要的是它是一個(gè)遠(yuǎn)程安全拷貝。該命令類似于您可能已經(jīng)知道的cp命令,但是源或目標(biāo)位于另一個(gè)系統(tǒng)上。
以下命令將文件foobar.txt從遠(yuǎn)程服務(wù)器復(fù)制到本地目錄。
- scp username@remotehost.com:/path/to/foobar.txt / some / local / directory
但是scp也可以用于將文件從本地目錄復(fù)制到遠(yuǎn)程服務(wù)器。
- scp /some/local/directory/foobar.txt username@remotehost.com:/ destination / path /
使用-r選項(xiàng)可以對(duì)目錄執(zhí)行相同的操作,該選項(xiàng)以遞歸方式復(fù)制整個(gè)目錄。
ssh-keygen
ssh-keygen命令用于生成新的SSH密鑰對(duì)。可以在Gitlab或Bitbucket中使用此命令生成的公共SSH密鑰來(lái)建立安全連接。
將SSH密鑰添加到Gitlab或Bitbucket后,每次嘗試將文件推送到遠(yuǎn)程分支時(shí)都不會(huì)提示您輸入密碼。
要生成SSH密鑰對(duì),請(qǐng)使用以下命令:
- ssh-keygen -t ed25519
請(qǐng)注意,在上面的示例中,我們使用了ED25519簽名算法。盡管ED25519被認(rèn)為是最佳實(shí)踐,但您應(yīng)該始終對(duì)不同的可用簽名算法進(jìn)行一些研究。
生成SSH密鑰對(duì)并在Gitlab或Bitbucket中正確設(shè)置它最多花費(fèi)十分鐘(大約三分鐘),但這是完全值得的!
chmod
在Unix和類似Unix的操作系統(tǒng)中,chmod是命令和系統(tǒng)調(diào)用,用于更改文件系統(tǒng)對(duì)象(文件和目錄)的訪問(wèn)權(quán)限。
根據(jù)Wikipedia,這是chmod命令的定義。由于文件權(quán)限配置錯(cuò)誤,導(dǎo)致服務(wù)器無(wú)法訪問(wèn)某個(gè)文件。
chmod命令本身非常簡(jiǎn)單,但是賦予文件和目錄正確的權(quán)限又是另一回事。
- ssh-keygen -t ed25519
第一個(gè)示例向robots.txt文件的用戶和組授予讀寫(xiě)權(quán)限。對(duì)該文件授予了他人讀取權(quán)限。
第二個(gè)示例為public / images文件夾授予用戶和組讀取、寫(xiě)入和執(zhí)行權(quán)限。其他人被授予對(duì)該文件夾的讀取和執(zhí)行權(quán)限。
如果您想了解有關(guān)設(shè)置文件和目錄的正確權(quán)限的更多信息,建議您閱讀有關(guān)chmod的Wikipedia頁(yè)面。
tar
Linux tar代表磁帶存檔。它用于將許多文件收集到一個(gè)存檔文件中。Tar是創(chuàng)建壓縮歸檔文件最廣泛使用的命令。
讓我們從如何為特定目錄創(chuàng)建存檔文件開(kāi)始:
- tar -cvf my-archive.tar /path/to/directory
該命令將導(dǎo)致一個(gè)名為my-archive.tar的存檔文件,tar文件,它包含在當(dāng)前工作目錄中創(chuàng)建的/path/to/目錄的所有文件。
創(chuàng)建存檔文件是第一步。第二部分包括解壓縮存檔文件,因?yàn)樵谀承r(shí)候我們想使用tar文件中的文件。您可以通過(guò)鍵入以下命令將文件解壓縮到特定目錄:
- tar -xvf my-archive.tar -C / home / myfolder /
alias
每個(gè)人都使用一些太長(zhǎng)或太復(fù)雜而無(wú)法完全記住的命令。幸運(yùn)的是,您可以為該命令創(chuàng)建一個(gè)alias,因此您不必記住整個(gè)命令。
- alias short-command="your custom and very long command here"
盡管以這種方式創(chuàng)建alias存在一個(gè)問(wèn)題:此alias是臨時(shí)的。如果以此方式創(chuàng)建,則該alias僅可用于當(dāng)前的終端會(huì)話。
要在會(huì)話之間保留alias,可以將其保存在用戶的Shell配置配置文件中。如果您分別使用Bash或ZSH,則此配置文件可能位于〜/ .bashrc或〜/ .zshrc中。
技巧1:直接輸出
屏幕是標(biāo)準(zhǔn)輸出設(shè)備。但有時(shí)您不想在屏幕上輸出所有內(nèi)容。在某些情況下,您可能希望將某些命令的結(jié)果輸出到文件中。
例如,用于日志記錄的目的。要重定向輸出,可以使用>。在以下命令中,ls -al的輸出重定向到文件myfile而不是屏幕。
- ls -al> myfile
在此示例中,我使用了ls,但實(shí)際上它可以是任何具有某些輸出的命令。為了確認(rèn)這是可行的,您可以檢查myfile文件。
技巧2:合并命令
一次可以運(yùn)行兩個(gè)或多個(gè)命令。分號(hào)(;)運(yùn)算符允許您執(zhí)行此操作。您可以連續(xù)執(zhí)行多個(gè)命令,而不管每個(gè)先前的命令是否成功。
- ls -al; pwd;
如果要僅在第一個(gè)命令成功的情況下運(yùn)行第二個(gè)命令,請(qǐng)使用邏輯和操作符(即&&)分隔命令。
- mkdir images && cd images
如果我們?cè)O(shè)法創(chuàng)建一個(gè)文件夾,我們只想CD到images文件夾。
有時(shí)您可能只想在第一個(gè)命令不成功的情況下執(zhí)行第二個(gè)命令。為此,我們使用邏輯OR操作符,即||。