筆者將要步入職場,目前在一家網際網路企業實習,職位是系統管理員,公司的伺服器部署環境全部是centos,目前使用的是版本6。筆者對linux有非常濃厚的興趣,但並非計算機專業出身,因此計算機基礎並不是特別牢厚。這篇關於linux指令的總結只適合有一定基礎的初學者,煩請憤青繞道,大神勿噴。
首先說明,這裡的總結並非來自於實踐,而是根據筆者自己的感覺以及對網上大部分類似內容的總結。這裡的意思是,只是做乙個總結而已,對於參考的網路文章或者書籍會在後面列出,若有網友或書籍作者指責內容有雷同並要求刪除,請指出。
作為乙個linux菜鳥,我覺得首先需要掌握的是關於linux的一些理論知識,像檔案系統、目錄架構、程序原理、網路以及linux哲學等等,內容繁多,學習壓力其實還是蠻大的。在掌握了基礎的理論知識後,我覺得乙個linuxer的水平主要表現在他對linux指令的熟悉上,通過三兩條指令搭配一些神奇的引數,並通過管道重定向連線的方式組合起來,來解決乙個顯示的問題,我相信還是非常有成就感的。
奈何linux下指令很多,乙個個掌握顯然不顯示,並且對於有不同需要的linux使用者需要掌握的linux指令範圍也相差甚大。比如,乙個純粹的linux發燒友,他只需要不停地折騰linux的安裝、多系統共存等問題就已經很滿足了;而在linux下開發的程式設計師則需要掌握開發工具指令的適用,如gcc、gdb、make等等;此外,我相信絕大多數linux桌面使用者甚至很少會去使用linux指令。那作為乙個linux系統管理員,需要掌握哪些基本的linux指令工具呢?這是我進入培訓後思考的第乙個問題。
linux下工具繁多,指令只怕超過上萬,堪比一門語言的詞彙量了。逐一記住每一條指令及其用法顯然是不現實的,也沒有意義,常人估計也做不到。所幸linux下的指令都是一些英文單詞或者幾個單詞的縮寫拼接而成,比較容易根據字面意思猜測到它的用途,但是具體用法就只能參看manuel手冊了,畢竟大多數指令得配合適當的引數才能準確完美的工作。
對於linux下指令的學習,我越來越覺得不停地記指令及其選項的方式實在太笨。不根據linux下指令的特點就去盲目記憶學習,效率是很低的,並且也很容易生厭,使得自己學習linux的心願受挫,這大概是linux入門時最讓人頭疼的問題了。一直可惜,市面上和網路上都沒有出現能夠非常好的引導初學者入門linux的書籍或資料,誰要是能找到,非常感謝能夠分享。
(一)linux下指令的特點
linux下指令的特點我總結如下:
(1)指令格式:
$command[options] [arguments]
其中,選項(options)和引數(arguments)都是可選的,但具有完全不同的意義。選項指定這條指令的執行方式,乙個工具(或者說乙個命令)通常有多重執行方式、可以在多重環境下執行,指令的選項的作用就是指令以何種方式來執行;而引數是指令操作的字串所代表的資料來源,可以是檔案、目錄、ip位址、裝置名等任何物件,但通常引數應是具有實際意義字串。
選項可以使用減號"-"和乙個英文本元(包括大小寫,linux下命令列是嚴格區分大小寫的)或者數字組成的字串。比如-r、-1、-r等等;也可以是由兩個減號開始加乙個單詞組成的長選項,如--help、--version等等;還可以是沒有減號的單個字元,比如tar指令的選項就可以不加減號前導,但這種情況比較少見;更少見的情況是用加好"+"表示關閉某個選項,至此,你可以把指令的選項理解為某種開關,"-"號表示開啟這個開關,而"+"則相反,表示關閉這個開關。這裡說的還是一般情況,實際情況還需具體對待,比如對於chmod指令,加號"+"的意義顯然就不是關閉某個開關這樣的意思了。
雖說linux下指令的格式不是很統一(這通常取決於工具的作者,顯然linux下的工具不是乙個人寫的),相同的引數對於不同的指令會有不同的意義,更是讓人頭疼不已,這在《unix痛恨者手冊》裡就有不少的批評。但是,基本上絕大多數指令的格式以及選項的含義還是比較統一的。對於異類,似乎唯一的辦法就是遇到時具體對待,並且在使用中記憶。
(2)但字元選項可以合併。
當一條指令需要很多選項,且這些選項並不要求其後緊跟引數時,通常可以將這些選項合併在一起,只保留乙個前導的減號"-",如下:
$command-a -b -c -d filename # 等價於下面的$command-abcd filename # 實際上這種形式更常見
(3)有些指令的某些選項會要求緊跟其後帶有乙個特定的引數。
$ tar -xf tarpackage.tar # 在當前目錄下開啟tar包tarpackage.tar
注意,選項f放在了選項x的後邊,且其後緊跟檔名,並且將選項x和f合在了一起,另外選項前導的減號"-"對於tar指令來說是可以忽略的。
(4)分隔符很重要。
通常指令名、選項以及引數之間的分隔符(預設通常是空白符)是不可省略的;對於有些指令,選項和引數之間的空白符則是可有可無的;還有些指令會要求它的某些選項與其後的引數緊連在一起,之間不能有分隔符。
比如對於cut指令的d選項,後面要求跟上乙個字元或字串作為分割符(串)引數,通常會用引號把這個引數引起來,選項d和這個分隔符引數之間的空白符就是可有可無的:
$ cut -d ':' -f 2 /etc/passwd
# 等價於下面的
$ cut -d'
:' -f2 /etc/passwd
# 我覺得這個形式更好理解
上面cut指令的選項f也可以這麼幹,它指出應該把第幾個域cut出來。
選項與其後引數之間不能有分隔符的乙個例子登陸mysql伺服器時通過選項p加密碼,如下:
$ mysql -u root -p123456
當然,這裡表示本地登陸,注意選項p和其後的密碼之間不能有空白符。
有關分隔符的另乙個需要注意的例子是dd指令,這個指令通常被用來建立乙個檔案,它的選項是不帶前導符號"--"的單詞,例如:
$ ddif=/dev/zero of=swapfile bs=4k count=256
這裡if、of、bs、count都是dd指令的選項,它們都要求其後緊跟引數,選項與引數之間以等號"="間隔。這算是非常特殊的例子了。好在linux下這種例外的例子不多,大部分的指令都遵循(1)中所說的格式。
Linux命令列下vim指令筆記
雖然現在linux有比較多的圖形介面系統,但是在功能上還是不如命令列強大,很多需要管理員許可權的動作都不能在圖形介面下使用,比如要編輯config檔案,linux自帶了乙個比較好用的vi編輯器,但是我還是比較習慣用功能更強大的vim編輯器。安裝vim apt get install vim 用vim...
Linux命令列下vim指令筆記
兩個不錯的 雖然現在linux有比較多的圖形介面系統,但是在功能上還是不如命令列強大,很多需要管理員許可權的動作都不能在圖形介面下使用,比如要編輯config檔案,linux自帶了乙個比較好用的vi編輯器,但是我還是比較習慣用功能更強大的vim編輯器。安裝vim apt get install vi...
linux 下 mysql命令列
啟動mysql的命令 service mysqld start 重啟mysql的命令 service mysqld restart 關閉mysql的命令 service mysqld stop 連線本機上的mysql mysql uroot p,回車後提示輸入密碼。root密碼預設為空 回車 破解m...