目錄
前言:
用戶命令:
管理后臺作業命令:
文件目錄操作命令:
運維高頻使用命令:
磁盤管理以及文件系統命令:
用戶、組操作命令:
權限控制命令:
網絡配置命令:
軟件管理命令:
幫助命令:
最后一彈:重定向和管道
結語:
前言:
Linux是一款很出色的操作系統,受到很多人追隨,Linux的版本種類又很多,其中不乏在界面上非常出眾的openSUSE,Ubuntu等,他們的界面做的非常漂亮,但對于用Linux開發的人員來講,卻有必要掌握命令的使用,對于運維的人員來講,這個就不用多說了,是重中之重。那么有Linux大牛說不懂命令的使用就等于不懂Linux,這句話是沒有錯的,因為,命令的功能遠比圖形界面強大,那么接下來我就按照類型給大家整理一下我們Linux平臺下常用的命令以及常用方式。
我們先來看看終端窗口的樣子:
圖1:普通用戶終端,$符號開始。
圖2:根用戶root,#符號開始,具有超級到無窮大的權限。
在接下來我們的命令講解大部分以普通用戶為背景,如果命令需要root用戶權限會高亮提示,用戶命令的格式一般是(命令、選項、參數)組成,而且命令大部分都方便記憶,因為基本上都是英文的縮寫,那么我們知道了這些信息,接下來就開始講解。
寫在最前面的終端命令的格式以及操作規則:
用戶命令的格式一般是(命令、選項、參數)組成。
!! ??????-重復前一個命令(用上鍵也可以)。
!字符 ???-重復前一個以“字符”開頭的命令。
!num?????-按照歷史記錄的序號執行命令。
!?abc????-重復之前包含abc的命令。
! -n?????-重復n歌命令之前的那個命令。
ctrl+c???-終止當前命令。
通過上下鍵子可以瀏覽命令記錄。
重新調用前一個命令中的參數Esc.(按完Esc鍵之后按.)。
通過ctrl+r來在歷史記錄中搜索命令(reverse-i-search),直接輸入一個字母可以直接調出該字母開頭的歷史命令,比以上的命令更方便。
命令后面加上&將這個命令放到后臺運行。
命令中通配符的使用規則:
*匹配零個或多個。
?匹配任意一個字符。
[0-9]匹配一個數字范圍。
[abc]匹配列表里任何字符。
[^abc]匹配列表以外的字符。
接下來正式介紹命令使用。
Are you ready?Let's GO!
用戶命令:
1.[uname]?顯示系統的基本信息。
??????????-r 內核版本號。
??????????-a(--all) 顯示所有信息。
例:uname -r
uname -a
2.[history]?查看輸入過的全部命令。
????????????-c 刪除當前用戶所有的歷史命令。
例:history
history -c
3.[su] 切換用戶,可以從普通用戶切換成root用戶,也可以將root用戶切換成普通用戶,如果su命令后面不加參數或者su -則代表切換成root用戶。其中加-表示啟用一個全新的終端,直接到root的家目錄里。通常我們都加一個-。
例:su - Mic ???從root切換成普通用戶不需要密碼,從普通用戶切換成root用戶需要密碼。
4.[sudo] 使用管理員權限運行命令。
例:sudo date -s?01/05/2017??需要輸入用戶密碼。
5.[id] 顯示當前用戶信息。
? ? ? ?-u 只顯示uid。
???????--c 只顯示context。
例:id
????id -u
????id --c
6.[passwd] 修改當前用戶密碼,首先輸入當前密碼,然后輸入的是新密碼。
???-d 刪除密碼,僅有系統管理員才能使用。
例:passwd
管理后臺作業命令:
1.[jobs] 查看當前在后臺運行的作業。
例:jobs
2.[sleep] s 停止參數輸入的時間s秒,可使用ctrl+c終止或者使用ctrl+z暫停。
例:sleep 5000 通過ctrl+z暫停,jobs顯示stop,如果重新繼續運行調用下面的命令bg。
3.[bg] num?控制進程繼續在后臺運行。
例:bg 1
4.[fg] num?繼續在前臺運行。
例:fg 1
注:任何命令后面加上&都會跳到后臺去運行,比方打開火狐程序firefox &,我們可以通過jobs查看。
文件目錄操作命令:
1.[pwd] 顯示當前的工作目錄。
例:pwd
2.[touch] 創建一個空白文件或者更新已有文件的時間。
例:touch hello.c 如果不存在該文件則創建該文件,存在該文件則只更新該文件的時間。
3.[ls] 列出目錄內容(list)。
???????-a?顯示所有文件(包括隱藏文件),隱藏文件絕大多是都是配置文件,勿修改這些文件。
???????-l?顯示詳細信息。
???????-R?遞歸顯示子目錄結構。
???????-ld?顯示目錄和鏈接信息。
例:ls
ls -a
ls -l
ls -R
ls -ld Downloads/ Downloads是路徑,如果不加路徑則只打印當前目錄。
4.[file] 查看文件類型。
例:file hello.c file命令后面可以接文件夾名稱。
5.[cd] 用來切換目錄。
例:cd?/etc cd命令后可以接相對路徑還有絕對路徑,如果不輸入路徑則返回家目錄。?
6.[cp]?復制文件或目錄。
???????-r?可以復制文件夾。
???????-v?顯示復制的詳細信息,顯示復制的過程。
例:cp file1 dir 將file1復制到file2。
cp -r file1 dir
cp -v file1 dir
7.[mv]?移動一個文件。相當于剪切,用法和cp差不多。
例:mv test.c c++/test.c 如不指定目錄,直接在當前目錄相互移動就是重命名。
8.[rm]?刪除文件或者目錄。
???????-r 可以刪除文件和文件夾中的所有東西。
???????-i 交互式的刪除。(有刪除提示)。
???????-f 表示強制刪除,沒有任何警告。
例:rm file
rm -r dir
rm -i file
rm -f file
9.[mkdir]?創建一個目錄。
例:mkdir Music Music是個目錄。
10.[rmdir]?刪除一個目錄,不能刪除非空文件夾。
例:rmdir Music 如果文件夾中有內容,非空,則用rm命令。
運維高頻使用命令:
一、日期和時間
1.[date]?查看和設置系統的日期和時間。
?????-u?來查看UTC時間。
?-s 設置時間,這個需要切到root用戶才能有權限更改。
?+%y-%m-%d?“-”可以自定義更改,這是更改時間的顯示格式。
例:date
????date -u
date -s "10:20:36" 設置為10點20分36秒,需要管理員權限。
date +%y-%m-%d
2.[clock] 查看的是操作系統的時間。
例:clock
3.[cal] 來打印日歷。
例:cal
4.[uptime] 查看系統運行了多久,系統的用戶,系統的負載。
例:uptime
二、輸出,查看命令。
1.[echo] 顯示輸入的內容(回顯)。
例:echo helloworld
2.[cat] 來顯示文件的內容,直接顯示出所有內容。
例:cat hello.c
3.[more] 用于翻頁顯示內容,但是不能向上翻頁。
例:more hello.c
4.[less] 相對于more,可以上下來回翻頁。
例:less hello.c
5.[head] 顯示文件的頭幾行(默認10行)。
?????????-n?來指定顯示開頭的n行。
例:head -20 hello.c
6.[tail] 顯示末尾的幾行(默認10行)。
?????????-n?來指定顯示末尾的n行。
?????????-f?在控制臺卡住,追蹤顯示文件的更新,多用于查看日志新加內容。
例:tail -20 hello.c
三、查看硬件信息
1.[lspci]?用于查看PCI設備(如聲卡網卡等)。
??????????-v?查看詳細信息。
例:lspci -v
2.[lsusb]?查看USB設備,如攝像頭等。
??????????-v?顯示詳細信息。
例:lsusb -v
3.[lsmod]?查看當前加載的所有模塊(模塊即windows中相當于驅動)。
例:lsmod
四、關機重啟
1.[shutdown] 關機/重啟。
?????????????-h now?立即關機=poweroff。
?????????????-r now?立即重啟=reboot。
?????????????-h +n?n分鐘后關機。
?????????????-h xx:xx?定時關機。
五、歸檔和壓縮
1.[zip] 用以壓縮。
例:zip xxx.zip file?把file這個源文件壓縮成xxx.zip目標文件。
2.[unzip]?解壓文件。
例:unzip xxx.zip
3.[gzip] 同樣是壓縮文件。
例:gzip hello.cpp 直接將該文件打成包。同樣gunzip解壓縮,同zip。
4.[tar]:歸檔命令,把許多文件打包成一個文件。壓縮通常使用tar頻率最高。
??? ?-cvf out.tar liunxfile?把linuxfile這個文件夾中的文件打包歸檔成一個輸出out.tar格式的文件,可以用來備份,但是沒有壓縮。
?????????-xvf out.tar 把一個歸檔的tar文件釋放到當前文件下。
?????????-cvzf?歸檔并壓縮一個文件。z代表調用zip。
例:tar -cvzf xxx.tar.gz?dir 歸檔并壓縮尾部是tar.gz,要這樣寫。
tar -cvf xxx.tar /etc 將/etc文件夾歸檔為xxx.tar
六、查找命令
1.[locate]?快速查找。
????它需要預先建立數據庫,默認每天更新一次。如果新建立了一個文件,然后用locate去查找這個命令,找不到。因為數據庫沒更新,用[updatedb]命令(root權限)更新數據庫,然后再查找。
例:locate
2.[find]高級查找,支持很多查找條件。
格式:find 查找位置?查找參數。下面例子中“/”代表根分區。
??????find /?-name *.conf?在/根分區下查找所有.conf結尾的文件。
??????find /?-perm 777?查找硬盤中所有權限是777的文件。
??????find /?-type d 查找目錄類型文件,d是目錄。
??find . -name "a*" -exec ls -l {}\; 這里面是將find找到的結果當成參數傳遞給ls命令,這里面后半部分除了ls -l其他的部分都是固定格式。
磁盤管理以及文件系統命令:
1.[fdisk] 對disk格式化,需要root用戶權限。
??????????-l?列出當前磁盤信息。
例:fdisk /dev/sdb 對sdb進行分區。需要管理員權限。
會彈出一個交互式的界面,按照不同指令進行操作,第一步m可查看幫助。如圖:
n為創建分區,分區創建完成后并沒有寫入磁盤,按w將分區表寫入磁盤。
2.[partprobe]?刷新分區表。
例:partprobe 讓內核識別分區表。
3.[mke2fs]?用來創建文件系統。磁盤分區不建立文件系統(格式化)不可以使用。
mke2fs -t ext4 /dev/sda3 創建一個文件系統。
???-b 指定文件系統塊大小。(一個塊,默認是4k)
???????-c 建立文件系統時檢查壞損塊。
???????-L label 指定卷標。
???????-j 建立日志文件系統。
4.[dumpe2fs]?查看分區文件系統信息,用來進行計算機性能調整來使用。
例:dumpe2fs /dev/sda1
5.[e2label] 設置或顯示文件系統標簽。
例:e2label ?/dev/sdb1 顯示sdb1的系統標簽。
e2label ?/dev/sdb1 LINUX?將sda2的標簽設置為LINUX(Linux中建議標簽大寫)。
6.[fsck]?檢查并修復損壞的文件系統。
?????-y 不提示而直接進行修復。
?????????-t?指定文件系統類型。
例:fsck /dev/sda2
7.[mount] 將格式化好的磁盤或分區掛載到一個目錄上,使用不帶任何參數的mount來顯示已經掛載好的文件系統,ro,rw 以只讀或讀寫形式掛載,默認是rw。(磁盤分區好后,Linux需要手動掛載,不掛在不能使用)。
??????????-t 指定文件系統的類型。
??????????-o 后接指定掛載項。
例:mount /dev/sda3(要掛載的分區)?/mnt(需要掛載的地方)
8.[umount] 用來卸載已經掛載的文件。
例:umount ?/dev/sda3
如果出現device is busy,則表示該文件系統正在被使用,無法卸載,可以使用下面的命令。
9.[fuser]?查看是誰在使用該設備。
??????-m?后面接設備名稱。
例:fuser -m /dev/sda1
10.[lsof]?列出當前系統打開文件。
例:lsof /mnt?后面是掛載點。
這個內容的命令遠沒有這么簡單,由于在平時使用的時候頻率不是很高,所以略顯簡單,如果有需求的話可以查找這個類型命令的詳細文檔。
用戶、組操作命令:
1.[whoami]?顯示當前用戶。
例:whoami
2.[who] 顯示關于當前在本地系統上的所有用戶的信息。
tty1 是登錄終端
pts/0 是圖形界面
例:who
3.[useradd] 創建一個用戶名。
上面這條命令或執行以下操作:
1.在/etc/passwd 中添加用戶信息。
2.如果使用passwd 命令創建密碼,則將密碼加密保存在/ect/shadow中。
3.為用戶建立一個新的家目錄?/home/xxx。
4.將/ect/skel 中的文件復制到用戶的家目錄中。
5.建立一個與用戶名相同的組,默認的用戶屬于這個同名組。
????????????-d 指定家目錄。
????????????-s 修改登錄shell。
????????????-u 指定UID。
????????????-g 指定主組。
4.[usermod]?用來修改用戶信息。
????????-l 更新用戶名。
????????????-u 更新userid 。
????????????-d 用戶家目錄位置。
????????????-g 用戶所屬主組。
????????????-L?鎖定用戶使其不能登錄。
????????????-U 解除鎖定。
????????????-G 指定附屬組。
5.[userdel] 刪除一個用戶。
????????????-r 刪除用戶和用戶的家目錄。
例:userdel -r Mic
6.[groupadd] 添加一個組。
?????????????-n 新組名?舊組名??修改組名。
?????????????-g 新id ?舊id 修改組ID。
7.[groupdel]?可以刪除一個組。
8.[chown] 修改文件的所屬用戶。
??????????-R?參數遞歸修改目錄下的所有文件的相關屬性。
例:chown mic?host.net
9.[chgrp] 改變文件的所屬組。
??????????-R?參數遞歸修改目錄下的所有文件的相關屬性。
例:chgrp mic?host.net
權限控制命令:
1.[chmod] 修改權限。
??????????-R 遞歸修改目錄下的所有文件。
例:chmod u+rw fileordir
????chomd go+r fileordir
說明:u、g、o分別代表用戶、組和其他。
??????a表示ugo。
??????+、-代表加入或刪除對應權限。
??????r、w、x代表三種權限。
chmod支持數字方式修改
例:chmod 660 file?==>rw-rw---??r=4 w=2 x=1 rw=6 rwx =7 rx=5
網絡配置命令:
以root用戶登錄
1.[ifconfig](if:interface)用來查看以太網接口信息。
?-a 查看所有接口
?????????????eth0 查看特定接口,eth0接口名。
例:ifconfig -a
2.[ifup] 啟用一個接口。
例:ifup eth0
3.[ifdown] 禁用一個接口。
例:ifdown eth0
4.[ping] 測試網絡連通性。
例:ping 21.23.21.65
????ping www.google.com
5.[host] 測試DNS解析(簡單解析)。
例:host www.google.com
6.[dig] 測試DNS解析(詳細解析)。
例:dig www.google.com
7.[ip route] 顯示路由表。
例:ip route 等同于ip route show。
8.[traceroute] 追蹤到達目標地址的網絡路徑。
例:traceroute www.google.com 出現***表示該路由服務器不允許追蹤。
9.[mtr] 進行網絡質量測試(結合traceroute和ping)。
例:mtr www.google.com 檢測到目標地址的網絡質量。
軟件管理命令:
1.[rpm] 安裝卸載軟件。
????????-i 安裝軟件。
-e 卸載軟件。
-v 顯示詳細信息。
-h 限制進度條。
????????-U?升級形式安裝。
????????-ivh 通過http、ftp協議安裝軟件。
????????-qi?顯示詳細信息。
????????-ql?列出所有包含文件。
????????-qlp?未安裝的包含文件。
????????-K 驗證文件的完整性。
????????-V 驗證已安裝的文件完整性。
例:rpm -U software-new.rpm
????rpm -ivh http://www.linux.net/software.rpm?rpm支持通過http、ftp協議安裝軟件。
????rpm -qi linux ?顯示linux的詳細信息。
????rpm -ql linux ?列出所有linux的包含文件。
????rpm -qlp linux ?未安裝的linux的包含文件。
????rpm -K linux ?驗證linuxqq文件的完整性。
????rpm -V linux ?驗證已安裝的文件完整性。
2.[yum]
例:yum install software-name 安裝指定軟件。
????yum remove sofware-name 卸載指定軟件。
????yum update software-name 升級指定軟件。
????yum search keyword 搜索。
????yum list (all | installed | recent | updates) 列出全部、安裝的、最近的、軟件更新。
????yum info packagename 顯示指定軟件的信息。
????yum whatprovides filename 查詢哪個rpm軟件包含目標文件。
????yum clean all?清除緩存目錄下的軟件包。
幫助命令:
在使用命令的時候會為某個命令的眾多參數而頭疼,我們可以尋求幫助,大部分命令在后面可以加-h,但是有的命令不支持,可以嘗試在命令后面加--help,會顯示該命令的幫助文檔。
下面介紹兩個文檔查詢命令。
1.[man] (manual)查看某個命令的使用方式。
例:man ls
2.[info] 查看某個命令的使用方式以網頁形式顯示(比man更詳細)。
例:info ls
最后一彈:重定向和管道
其實在寫這篇文章的時候我也在考慮要不要寫這個部分,因為我想寫一些純命令的文章,但是考慮到這個地方是有用的,而且和終端以及命令操作是密切相關的,所以還是加上這個部分的說明。
首先說說我們的輸入輸出流,這個在C語言里面也有設計,標準流有stdout(標準輸出流)、stdin(標準輸入流)、stderr(標準錯誤流)。正常終端操作命令的時候是文本操作,自然離不開輸入輸出流了,我們默認情況下輸入一個命令返回的操作結果是顯示在終端上(默認輸出設備是顯示器),但是我們由于需要特殊操作,我們可以將輸出文本不顯示在屏幕,而輸出在你所指定的流中,這也叫作重定向,比方我用ls命令列出文件,正常在終端中輸出,而重定向后我們可以寫進指定的文件當中,由于有些命令輸出文本成千上萬行,我們可以用重定向保存為記錄或日志,以便查看。
操作:
> 將stdout重定向到文件(覆蓋模式) 例:ls -l > outfile
>> 將stdout重定向到文件(追加模式) 例:ls -l >> outfile
2> 將stderr重定向到文件(覆蓋模式) 例:ls nothere 2> errout
2>&1 將stderr與stdout結合 例:ls -l 2>&1 alloutfile
< 重定向stdin 例:ls < /etc(基本用處不是很常見)
介紹完重定向之后再來介紹一下管道的概念。操作符“|”將一個命令的stdout作為另一個命令的stdin,例:ls -l | grep hello 將ls -l輸出的內容作為參數傳遞給grep hello,用于完成多命令的一個協作。
結語:
Linux命令的總結就先到這里,其實也是常用命令的簡單總結,很多命令的參數講解上也并非全面。命令行的掌握代表著一個人對Linux的熟悉程度。事實上Linux的命令目前成千成萬,再加上不同命令有不同的參數搭配,所以這些命令的用法大得驚人。我們光憑記憶去掌握這些命令是不切實際的,別忘了我們剛才講的一個命令[man],當我們遇到問題的時候,不妨去問問這個“男人”。