每個開發(fā)人員都應(yīng)該知道的11個控制臺命令
命令行使我們的生活變得更加輕松,因為我們可以自動化一些平凡的任務(wù)并使事情運行更順暢。 無需單擊圖形用戶界面(GUI),我們可以觸發(fā)一些命令并將其稱為完成工作。
Unix shell是命令行解釋器或shell,可為類似Unix的操作系統(tǒng)提供命令行用戶界面。 Shell程序既是交互式命令語言又是腳本語言,并且操作系統(tǒng)使用它來控制系統(tǒng)的執(zhí)行。
默認(rèn)情況下,每個基于Linux或Mac的操作系統(tǒng)都安裝了一個命令行程序,通常以" Terminal"為名稱。命令行(CLI)使我們可以輕松地移動和重命名文件,對數(shù)據(jù)進行排序以及在計算機中瀏覽。
事不宜遲,這里有11個命令行技巧,可以使您的生活更輕松。
1. grep
- $ grep "some string" file
grep命令在每個文件中搜索模式。 它還會尋找由換行符分隔的模式,并且grep打印與模式匹配的每一行。
Using the grep command to find all React keywords in a file
-i選項使我們能夠在給定文件中區(qū)分大小寫地搜索字符串。 它匹配" REACT"," REact"和" react"之類的詞。
- $ grep -i "REact" file
我們可以使用-c(count)標(biāo)志找到與給定字符串/模式匹配的行數(shù)。
- $ grep -c "react" index.js
Counting the times the word "react" pops up in a life
這是我在互聯(lián)網(wǎng)上找到的有關(guān)grep命令的有趣且具有教育意義的漫畫。
Source: Wizard Zines
此外,變體程序egrep和fgrep分別與grep -E和grep -F相同。 不建議使用這些變體,但提供這些變體是為了向后兼容。
您可以使用grep做很多事情-在此處閱讀文檔以進行深入研究。
2. ls
- $ ls
ls列出當(dāng)前活動路徑中的文件和目錄。 如果路徑名是文件,則ls根據(jù)請求的選項顯示有關(guān)文件的信息。 如果路徑名是目錄,則ls顯示有關(guān)文件和其中的子目錄的信息。
Using the ls command to show all files in the current directory
您可能已經(jīng)注意到文件顯示為灰色,而文件夾為藍(lán)色。 這是為了幫助我們區(qū)分文件夾和文件。
3. pwd
- $ pwd
Printing out the current working directory (pwd)
pwd命令是用于打印當(dāng)前工作目錄的命令行實用程序。 輸出會將當(dāng)前工作目錄的完整系統(tǒng)路徑打印到標(biāo)準(zhǔn)輸出。 默認(rèn)情況下,pwd命令會忽略符號鏈接,盡管可以使用選項顯示當(dāng)前目錄的完整物理路徑。
4. Cat
- $ cat somefile.js
Displaying content of a file with cat
cat命令具有與文本文件有關(guān)的三個相關(guān)功能:
- 顯示它們
- 合并副本
- 創(chuàng)造新的
cat的最常見用法是讀取文件的內(nèi)容,而cat通常是用于此目的的最方便的程序。
在以下示例中,使用輸出重定向運算符(由向右指向的尖括號表示)將cat的標(biāo)準(zhǔn)輸出重定向到file2:
- $ cat somefile > somefile2
Creating files with cat
5. echo
- $ echo "some text"
Linux中的echo命令用于顯示作為參數(shù)傳遞的一行文本/字符串。 echo是一個內(nèi)置命令,主要用于shell腳本和批處理文件中,以將狀態(tài)文本輸出到屏幕或文件中。
6. touch
- $ touch somefile
touch命令用于創(chuàng)建不包含任何內(nèi)容的文件。 當(dāng)用戶在創(chuàng)建文件時沒有要存儲的數(shù)據(jù)時,可以使用touch命令。
Creating a new file with touch
請注意,我們是如何通過觸摸來創(chuàng)建文件的,如何使用cat來查看文件的內(nèi)部。 由于新創(chuàng)建的index2.js文件為空,因此cat不返回任何內(nèi)容。
以下是cat和touch之間的主要區(qū)別:
- cat-用于創(chuàng)建包含內(nèi)容的文件。
- 觸摸—創(chuàng)建一個沒有任何內(nèi)容或空文件的文件。 請記住,使用touch命令創(chuàng)建的文件為空。 當(dāng)用戶在創(chuàng)建文件時沒有要存儲的數(shù)據(jù)時,此命令很有用。
7. mkdir
- $ mkdir some-directory
如您所料,mkdir在當(dāng)前活動路徑中創(chuàng)建一個新的空目錄。 而不是在文本編輯器或GUI中單擊,而使用此命令來創(chuàng)建新文件夾。
Creating a new directory with mkdir
注意:請注意我們?nèi)绾问褂们懊娴膌s命令監(jiān)視目錄。
(1) rm
- $ rm someFile
rm代表remove,它完全按照它說的去做。 刪除,或換句話說,刪除文件。
Removing a file with the rm command
默認(rèn)情況下,rm命令不會刪除目錄。 您需要傳遞-rf標(biāo)志以刪除目錄。
- $ rm -rf some-directory
Removing a directory with the rm command (notice we're passing the flag to remove a directory)
注意:無論目錄內(nèi)部是否包含內(nèi)容,這都會無條件刪除目錄。
(2) 均方根
- $ rmdir some-directory
如果目錄中沒有內(nèi)容,則rmdir命令將刪除目錄。
Removing an empty directory with rmdir
8. tail
- $ tail somefile
tail命令讀取文件并輸出文件的最后部分(" tail")。
Output the last num lines, instead of the default (10)
在查看崩潰報告或以前的歷史記錄日志時,tail命令很有用。 這是處理文件日志時有用的示例。
- # tail /var/log/messages
- Mar 20 12:42:22 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
- Mar 20 12:42:24 hameda1d1c avahi-daemon[2027]: Registering new address record for fe80::4639:c4ff:fe53:4908 on eth0.*.
- Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
- Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPACK from 10.76.198.1 (xid=0x280436dd)Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Joining mDNS multicast group on interface eth0.IPv4 with address 10.76.199.87.
- Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: New relevant interface eth0.IPv4 for mDNS.
- Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Registering new address record for 10.76.199.87 on eth0.IPv4.
- Mar 20 12:42:30 hameda1d1c NET[4385]: /sbin/dhclient-script : updated /etc/resolv.conf
- Mar 20 12:42:30 hameda1d1c dhclient[4334]: bound to 10.76.199.87 -- renewal in 74685 seconds.
- Mar 20 12:45:39 hameda1d1c kernel: usb 3-7: USB disconnect, device number 2
9. wget
- $ wget someurl
GNU Wget是一個免費軟件包,可使用HTTP,HTTPS,F(xiàn)TP和FTPS(使用最廣泛的Internet協(xié)議)檢索文件。 這是一種非交互式的命令行工具,因此可以輕松地從腳本,CRON作業(yè),不支持X-Windows的終端等中調(diào)用。
get to fetch information about a webpage
GNU Wget具有許多使檢索大型文件或鏡像整個Web或FTP站點變得容易的功能,包括:
- 可以使用REST和RANGE恢復(fù)中止的下載
- 可以使用文件名通配符并遞歸鏡像目錄
- 基于NLS的消息文件,適用于多種語言
- (可選)將下載的文檔中的絕對鏈接轉(zhuǎn)換為相對鏈接,以便下載的文檔可以在本地彼此鏈接
- 在大多數(shù)類似UNIX的操作系統(tǒng)以及Microsoft Windows上運行
- 支持HTTP代理
- 支持HTTP cookie
- 支持持久的HTTP連接
- 無人值守/后臺操作
- 使用本地文件時間戳確定鏡像時是否需要重新下載文檔
- GNU Wget是根據(jù)GNU通用公共許可證發(fā)行的。
10. find
- $ find path -name filename
使用find命令可以快速查找文件或目錄。 當(dāng)您正在處理包含數(shù)百個文件和多個目錄的大型項目時,此功能非常有用。
Finding all files with the name of index.js
搜索特定類型的文件
使用find命令還可以在目錄(及其子目錄)中搜索相同類型的文件。 例如,以下命令將搜索當(dāng)前工作目錄中的所有.js文件。
- $ find . -name "*.js"
Finding all .js files in the components directory
11. MV
- $ mv somefile /to/some/other/path
mv命令將文件或目錄從一個位置移動到另一個位置。 mv命令支持移動單個文件,多個文件和目錄。
Moving the some-directory from components to utils directory