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