程序員:「我要跑路了,告訴我命令行是rm -rf /*
的那我的你當心點。」前端
「rm -rf
」 引起的血案都在菜鳥程序員中常常出現,初初入行的先後端們基礎不紮實。 react
容易出現沒有圖形用戶界面 (GUI
)就無從下手,連部署應用都不會的尷尬局面。git
竊覺得,熟悉掌握Linux
下的Vim
和經常使用的命令是每一個程序員的必修課。程序員
並且,連微軟都擁抱Linux terminal
,推出了Windows Terminal
。你還有 什麼理由不學?github
grep
:查找文件中的關鍵字$ grep "string" [選項] file
複製代碼
使用grep
命令查找文件中的全部React
關鍵字:django
-i
選項能夠在文件中不區分大小寫地搜索字符串。它匹配"REACT
","REact
"和"react
"等詞。$ grep -i "REact" file
複製代碼
-c (count)
選項,能夠找到給定字符串/模式匹配的行數$ grep -c "react" index.js
複製代碼
更多的選項能夠查看下圖:後端
ls
:列出當前路徑中的文件和目錄。$ ls
複製代碼
ls
列出當前路徑中的文件和目錄。ruby
pwd
: 顯示工做目錄$ pwd
複製代碼
cat
:查看文件的內容$ cat somefile.js
複製代碼
$ cat filename
複製代碼
$ cat > filename
複製代碼
只能建立新文件,不能編輯已有文件。 3. 將幾個文件合併爲一個文件。bash
$cat file1 file2 > file
複製代碼
如下例子,將index.js
拷貝一份爲index2.js
cookie
echo
:字符串的輸出$ echo "some text"
複製代碼
這是一個內置命令,主要用於Shell腳本和批處理文件中,以將狀態文本輸出到屏幕或文件。
touch
:建立文件$ touch somefile
複製代碼
touch
命令用於建立沒有任何內容的文件。
touch
建立文件和
cat
查看文件內部的。因爲新建立的
index2.js
文件爲空,所以
cat
不返回任何內容。
如下是cat
和touch
之間的主要區別:
cat
,用於建立包含內容的文件。touch
,建立一個沒有任何內容的空文件。mkdir
:建立一個新的空目錄$ mkdir some-directory
複製代碼
mkdir
在當前路徑中建立一個新的空目錄
rm
:刪除文件/目錄$ rm [選項] someFile
複製代碼
rm
命令用於刪除一個文件或者目錄。
選項:
-i
刪除前逐一詢問確認。-f
即便原檔案屬性設爲惟讀,亦直接刪除,無需逐一確認。-r
將目錄及如下之檔案亦逐一刪除。rmdir
:刪除空目錄$ rmdir some-directory
複製代碼
若是目錄中沒有內容,該命令將刪除目錄。不然返回提示xxx not empty
:
tail
:查看文檔的內容$ tail [選項] somefile
複製代碼
默認顯示文檔的最後 10 行
幾個經常使用的參數:
-f
,循環讀取。tail -f notes.log
複製代碼
此命令顯示 notes.log
文件的最後 10 行。當將某些行添加至 notes.log
文件時,tail
命令會繼續顯示這些行。 顯示一直繼續,直到您按下(Ctrl-C
)組合鍵中止顯示。+
,從xx行到結尾tail +20 notes.log
複製代碼
顯示文件 notes.log
的內容,從第 20 行至文件末尾。-c
,最後xx行。tail -c 10 notes.log
複製代碼
顯示文件 notes.log
的最後 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
複製代碼
find
:搜索文件$ find path -name filename
複製代碼
find
命令能夠快速查找文件或目錄。當你正在處理具備數百個文件和多個目錄的大型項目時,此功能頗有用。
查找全部名爲index.js
的文件:
查找指定類型的文件:
$ find . -name "*.js"
複製代碼
mv
:移動文件$ mv somefile /to/some/other/path
複製代碼
該mv命令將文件或目錄從一個位置移動到另外一個位置。
支持移動單個文件,多個文件和目錄。
wget
:下載文件的工具$ wget someurl
複製代碼
Wget
是一個免費軟件包,用於使用HTTP,HTTPS,FTP和FTPS
(最普遍使用的Internet
協議)檢索文件。
這是一個非交互式的命令行工具,所以能夠很容易地從腳本,CRON做業,不支持X-Windows
的終端等中調用它。
Wget
具備許多使檢索大型文件或鏡像整個Web或FTP站點變得容易的功能,包括:
REST
和RANGE
恢復停止的下載。UNIX
的操做系統以及Microsoft Windows
上運行HTTP
代理,cookie
和持久的HTTP
鏈接.tree
:以樹狀圖列出目錄的內容常在寫文檔時須要列一下文件目錄結構,這個時候tree
命令就能幫個忙了。某些Linux
、macOS
上沒有tree
命令,須要執行安裝:
Homebrew
,若沒有則執行:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
複製代碼
tree
命令brew install tree
複製代碼
效果:
(base) xxx$ tree
.
├── djangoStudy
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
1 directory, 5 files
複製代碼
|
:管道命令一般狀況下,咱們在終端只能執行一條命令,而後按下回車執行,那麼如何執行多條命令呢?
command1;command2;command3;
簡單的順序指令能夠經過 ;
來實現。which command1 && command2 || command3
&&
: 若是前一條命令執行成功則執行下一條命令,和JavaScript
中用法一致&&
命令相反,執行不成功時執行下一個。$?
: 存儲上一次命令的返回結果// 栗子:
$ which git>/dev/null && git --help // 若是存在git命令,執行git --help命令
$ echo $?
複製代碼
而管道命令則能夠銜接各類命令的輸出輸入,使得連鎖操做變得簡單。
管道是一種通訊機制,一般用於進程間的通訊(也可經過socket進行網絡通訊),它表現出來的形式將前面每個進程的輸出(stdout)直接做爲下一個進程的輸入(stdin)
$ 指令1 | 指令2 | …
複製代碼
管道命令的注意事項:
例子: 一、分頁顯示 /etc
目錄 中內容的詳細信息
$ ls -l /etc | more
複製代碼
二、將一個字符串輸入到一個文件中
$ echo "Hello World" | cat > hello.txt
複製代碼
若是你以爲這篇內容對你挺有啓發,我想邀請你幫我三個小忙:
GitHub
博客裏拿全部文章的源文件:
前端勸退指南:github.com/roger-hiro/…