0基础学Linux-从小白到大牛(3)Linux命令
文章目錄
- 權限管理
- 列出目錄內容: ls
- 顯示inode的內容:stat
- 文件訪問權限
- 修改文件權限:chmod
- 修改文件所有者:chown
- 修改文件所屬組:chgrp
 
- 文件內容查看
- 基本顯示:cat、tac
- 顯示行號:nl
- 分屏顯示
- 取首尾n行:head、tail
 
- 文件管理
- 輸出重定向:>
- 管道:|
- 清屏:clear
- 切換工作目錄:cd
- 創建目錄:mkdir
- 刪除文件:rm
- 建立鏈接文件:ln
- 文本搜索:grep
- 查找文件:find
- 拷貝文件:cp
- 移動文件:mv
- 歸檔管理:tar
- 文件壓縮解壓:gzip、bzip2
- 文件壓縮解壓:zip、unzip
- 查看命令位置:which
 
- 用戶和用戶組管理
- 查看當前用戶:whoami
- 查看登錄用戶:who
- 退出登錄賬戶: exit
- 添加用戶賬戶:useradd
- 修改用戶:usermod
- 設置用戶密碼:passwd
- 刪除用戶:userdel
- 以root身份執行指令:sudo
- 添加和刪除組賬戶:groupadd、groupdel
- 用戶組管理:groupmod
 
- 系統管理
- 查看當前日歷:cal
- 顯示或設置時間:dete
- 查看網絡狀態:netstat
- 查看進程信息:ps
- 以樹狀圖顯示進程關系:pstree
- 動態顯示進程:top
- 終止進程:kill
- 關機重啟:reboot、shutdown、init
- 檢查磁盤空間:df
- 檢測目錄所占磁盤空間:du
- 查看或配置網卡信息:ifconfig
- 測試遠程主機連通性:ping
- Linux 磁盤管理
- df
- du
- fdisk
- 磁盤格式化
- 磁盤檢驗
- 磁盤掛載與卸除
- Linux管道命令
- WC - 統計字數
- cut - 列選取命令
- grep - 行選取命令
- sort - 排序
- uniq - 去重
- tee - 同時輸出多個文件
- split - 文件切割
 
權限管理
列出目錄內容: ls
Linux文件或者目錄名稱最長可以有265個字符,“.”代表當前目錄,“…”代表上一級目錄,以“.”開頭的文件為隱藏文件,需要用 -a 參數才能顯示。
ls常用參數:
| -a | 顯示指定目錄下所有子目錄與文件,包括隱藏文件 | 
| -l | 以列表方式顯示文件的詳細信息 | 
| -h | 配合 -l 以人性化的方式顯示文件大小 | 
 信息含義:
 
 ls支持通配符:
| * | 文件代表文件名中所有字符 | 
| ls te* | 查找以te開頭的文件 | 
| ls *html | 查找結尾為html的文件 | 
| ? | 代表文件名中任意一個字符 | 
| ls ?.c | 只找第一個字符任意,后綴為.c的文件 | 
| ls a.? | 只找只有3個字符,前2字符為a.,最后一個字符任意的文件 | 
| [] | [”和“]”將字符組括起來,表示可以匹配字符組中的任意一個。“-”用于表示字符范圍。 | 
| [abc] | 匹配a、b、c中的任意一個 | 
| [a-f] | 匹配從a到f范圍內的的任意一個字符 | 
| ls [a-f]* | 找到從a到f范圍內的的任意一個字符開頭的文件 | 
| ls a-f | 查找文件名為a-f的文件,當“-”處于方括號之外失去通配符的作用 | 
| \ | 如果要使通配符作為普通字符使用,可以在其前面加上轉義字符。“?”和“*”處于方括號內時不用使用轉義字符就失去通配符的作用。 | 
| ls *a | 查找文件名為*a的文件 | 
顯示inode的內容:stat
stat [文件或目錄]文件訪問權限
用戶能夠控制一個給定的文件或目錄的訪問程度,一個文件或目錄可能有讀、寫及執行權限:
- 讀權限(r) :對于文件,具有讀取文件內容的權限;對于目錄,具有瀏覽目錄的權限。
- 寫權限(w) :對于文件,具有修改文件內容的權限;對于目錄,具有刪除、移動目錄內文件的權限。
- 可執行權限(x): 對于文件,具有執行文件的權限;對于目錄,該用戶具有進入目錄的權限。
通常,Unix/Linux系統只允許文件的屬主(所有者)或超級用戶改變文件的讀寫權限。
示例:
 
 第1個字母代表文件的類型:
- “d” 代表文件夾
- “-” 代表普通文件
- “c” 代表硬件字符設備
- “b” 代表硬件塊設備
- “s”表示管道文件
- “l” 代表軟鏈接文件。
后9個字母分別代表三組權限:文件所有者、用戶組、其他用戶擁有的權限。
修改文件權限:chmod
chmod 修改文件權限有兩種使用格式:字母法與數字法。
字母法:chmod u/g/o/a + +/-/= rwx 文件
| u | user 表示該文件的所有者 | 
| g | group 表示與該文件的所有者屬于同一組( group )者,即用戶組 | 
| o | other 表示其他以外的人 | 
| a | all 表示這三者皆是 | 
| + | 增加權限 | 
| - | 撤銷權限 | 
| = | 設定權限 | 
數字法:“rwx” 這些權限也可以用數字來代替
| r | 讀取權限,數字代號為 “4” | 
| w | 寫入權限,數字代號為 “2” | 
| x | 執行權限,數字代號為 “1” | 
| - | 不具任何權限,數字代號為 “0” | 
如執行:chmod u=rwx,g=rx,o=r filename 就等同于:chmod u=7,g=5,o=4 filename
chmod 751 file:- 文件所有者:讀、寫、執行權限 - 同組用戶:讀、執行的權限 - 其它用戶:執行的權限 chmod 777 file:- 所有用戶擁有讀、寫、執行權限注意:如果想遞歸所有目錄加上相同權限,需要加上參數“ -R ”。 如:chmod 777 test/ -R 遞歸 test 目錄下所有文件加 777 權限
修改文件所有者:chown
[root@localhost opt]# ll 總用量 4 -rw-r--r-- 1 root root 5 10月 8 14:05 1.txt[root@localhost opt]# sudo useradd -m test [root@localhost opt]# chown test 1.txt [root@localhost opt]# ll 總用量 4 -rw-r--r-- 1 test root 5 10月 8 14:05 1.txt可以看到已經修改了文件所有者修改文件所屬組:chgrp
[root@localhost opt]# ll 1.txt -rw-r--r-- 1 test root 5 10月 8 14:05 1.txt [root@localhost opt]# sudo chgrp test 1.txt [root@localhost opt]# ll 1.txt -rw-r--r-- 1 test test 5 10月 8 14:05 1.txt文件內容查看
Linux系統中使用以下命令來查看文件的內容:
- cat 由第一行開始顯示文件內容
- tac 從最后一行開始顯示
- nl 顯示的時候,順道輸出行號
- more 一頁一頁的顯示文件內容
- less與more 類似,但可以往前翻頁
- head 只看頭幾行
- tail 只看尾部幾行
基本顯示:cat、tac
語法:
cat [-AbEnTv]選項與參數:
- -A :相當于 -vET 的整合選項,可列出一些特殊字符而不是空白而已;
- -v :列出一些看不出來的特殊字符
- -E :將結尾的斷行字節 $ 顯示出來;
- -T :將 [tab] 按鍵以 ^I 顯示出來;
- -b :列出行號,空白行不標行號
- -n :列出行號,連同空白行也會有行號
tac與cat命令剛好相反,文件內容從最后一行開始顯示,可以看出 tac 是 cat 的倒著寫!如:
[root@localhost opt]# tac 1.txtaaa text2 text iii顯示行號:nl
語法:
nl [-bnw] 文件選項與參數:
- -b :指定行號指定的方式,主要有兩種: - -b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);
- -b t :如果有空行,空的那一行不要列出行號(默認值);
 
- -n :列出行號表示的方法,主要有三種: - -n ln :行號在熒幕的最左方顯示;
- -n rn :行號在自己欄位的最右方顯示,且不加 0 ;
- -n rz :行號在自己欄位的最右方顯示,且加 0 ;
 
- -w :行號欄位的占用的位數。
分屏顯示
[root@localhost opt]# more /etc/man_db.config # # Generated automatically from man.conf.in by the # configure script. # # man.conf from man-1.6d ....(中間省略).... --More--(28%) <== 光標在這里等待命令more運行時可以輸入的命令有
- 空格鍵 (space):代表向下翻一頁;
- Enter :代表向下翻『一行』;
- /字串 :代表在這個顯示的內容當中,向下搜尋『字串』這個關鍵字;
- :f :立刻顯示出檔名以及目前顯示的行數;
- q :代表立刻離開 more ,不再顯示該文件內容。
- b 或 [ctrl]-b :代表往回翻頁,不過這動作只對文件有用,對管線無用。
less運行時可以輸入的命令有
- 空白鍵 :向下翻動一頁;
- [pagedown]:向下翻動一頁;
- [pageup] :向上翻動一頁;
- /字串 :向下搜尋『字串』的功能;
- ?字串 :向上搜尋『字串』的功能;
- n :重復前一個搜尋 (與 / 或 ? 有關!)
- N· :反向的重復前一個搜尋 (與 / 或 ? 有關!)
- q:離開 less 這個程序;
取首尾n行:head、tail
head取出文件前面幾行
語法:
head [-n number] 文件選項與參數:
-n :后面接數字,代表顯示幾行的意思
[root@localhost opt]# head /etc/man.config默認的情況中,顯示前面 10 行!若要顯示前 20 行,就得要這樣:
[root@localhost opt]# head -n 20 /etc/man.configtail取出文件后面幾行
語法:
tail [-n number] 文件選項與參數:
-n :后面接數字,代表顯示幾行的意思
 -f :表示持續偵測后面所接的檔名,要等到按下[ctrl]-c才會結束tail的偵測
文件管理
輸出重定向:>
可將本應顯示在終端上的內容保存到指定文件中。
如:ls > test.txt ( test.txt 如果不存在,則創建,存在則覆蓋其內容 )
注意: >輸出重定向會覆蓋原來的內容,>>輸出重定向則會追加到文件的尾部。
管道:|
管道:一個命令的輸出可以通過管道做為另一個命令的輸入。
“ | ”的左右分為兩端,從左端寫入到右端。
[root@localhost opt]# ll -h |more 總用量 13M drwxr-xr-x 2 root root 4.0K 8月 4 2016 ./ drwxr-xr-x 26 root root 4.0K 7月 30 2016 ../ -rwxr-xr-x 1 root root 1014K 6月 24 2016 bash* -rwxr-xr-x 1 root root 31K 5月 20 2015 bunzip2* -rwxr-xr-x 1 root root 1.9M 8月 19 2015 busybox* -rwxr-xr-x 1 root root 31K 5月 20 2015 bzcat* lrwxrwxrwx 1 root root 6 5月 16 2016 bzcmp -> bzdiff* -rwxr-xr-x 1 root root 2.1K 5月 20 2015 bzdiff* lrwxrwxrwx 1 root root 6 5月 16 2016 bzegrep -> bzgrep* --更多--清屏:clear
clear作用為清除終端上的顯示(類似于DOS的cls清屏功能),快捷鍵:Ctrl + l ( “l” 為字母 )。
切換工作目錄:cd
Linux所有的目錄和文件名大小寫敏感
 cd后面可跟絕對路徑,也可以跟相對路徑。如果省略目錄,則默認切換到當前用戶的主目錄。
| cd | 相當于cd ~ | 
| cd ~ | 切換到當前用戶的主目錄(/home/用戶目錄) | 
| cd . | 切換到當前目錄 | 
| cd … | 切換到上級目錄 | 
| cd - | 進入上次所在的目錄 | 
顯示當前路徑:pwd
[root@localhost opt]# pwd /opt選項與參數:
- P :顯示出確實的路徑,而非使用連結 (link) 路徑。
 注意:是大寫的P
創建目錄:mkdir
mkdir可以創建一個新的目錄。
注意:新建目錄的名稱不能與當前目錄中已有的目錄或文件同名,并且目錄創建者必須對當前目錄具有寫權限。
語法:
mkdir [-mp] 目錄名稱選項與參數:
- -m :指定被創建目錄的權限,而不是根據默認權限 (umask) 設定
- -p :遞歸創建所需要的目錄
mkdir創建的目錄權限默認根據umask得到,而-m參數可以指定被創建目錄的權限:
[root@localhost opt]# mkdir t1 [root@localhost opt]# ll drwxr-xr-x 2 root root 4096 Nov 22 18:54 t1 [root@localhost opt]# mkdir t2 -m 711 [root@localhost opt]# ll drwxr-xr-x 2 root root 4096 Nov 22 18:54 t1 drwx--x--x 2 root root 4096 Nov 22 18:54 t2刪除文件:rm
可通過rm刪除文件或目錄。使用rm命令要小心,因為文件刪除后不能恢復。為了防止文件誤刪,可以在rm后使用-i參數以逐個確認要刪除的文件。
常用參數及含義如下表所示:
| -i | 以進行交互式方式執行 | 
| -f | 強制刪除,忽略不存在的文件,無需提示 | 
| -r | 遞歸地刪除目錄下的內容,刪除文件夾時必須加此參數 | 
建立鏈接文件:ln
軟鏈接:ln -s 源文件 鏈接文件
硬鏈接:ln 源文件 鏈接文件
軟鏈接類似于Windows下的快捷方式,如果軟鏈接文件和源文件不在同一個目錄,源文件要使用絕對路徑,不能使用相對路徑。
硬鏈接只能鏈接普通文件不能鏈接目錄。 兩個文件占用相同大小的硬盤空間,即使刪除了源文件,鏈接文件還是存在,所以-s選項是更常見的形式。
文本搜索:grep
Linux系統中grep命令是一種強大的文本搜索工具,grep允許對文本文件進行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式為:
grep [-選項] '搜索內容串' 文件名在grep命令中輸入字符串參數時,最好引號或雙引號括起來。例如:grep ‘a’ 1.txt。
在當前目錄中,查找前綴有test字樣的文件中包含 test 字符串的文件,并打印出該字符串的行。此時,可以使用如下命令:
$ grep test test* #查找前綴有test的文件包含test字符串的文件 testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行 testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行 testfile_2:Linux test #列出testfile_2 文件中包含test字符的行以遞歸的方式查找符合條件的文件。例如,查找指定目錄/etc/acpi 及其子目錄(如果存在子目錄的話)下所有文件中包含字符串"update"的文件,并打印出該字符串所在行的內容,使用的命令為:
$ grep -r update /etc/acpi #以遞歸的方式查找“etc/acpi” #下包含“update”的文件 /etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than /etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.) Rather than /etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update反向查找。前面各個例子是查找并打印出符合條件的行,通過"-v"參數可以打印出不符合條件行的內容。
查找文件名中包含 test 的文件中不包含test 的行,此時,使用的命令為:
$ grep -v test* #查找文件名中包含test 的文件中不包含test 的行 testfile1:helLinux! testfile1:Linis a free Unix-type operating system. testfile1:Lin testfile_1:HELLO LINUX! testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM. testfile_1:THIS IS A LINUX TESTFILE! testfile_2:HELLO LINUX! testfile_2:Linux is a free unix-type opterating system.查找文件:find
常用用法:
| find ./ -name test.sh | 查找當前目錄下所有名為test.sh的文件 | 
| find ./ -name ‘*.sh’ | 查找當前目錄下所有后綴為.sh的文件 | 
| find ./ -name “[A-Z]*” | 查找當前目錄下所有以大寫字母開頭的文件 | 
| find /tmp -size 2M | 查找在/tmp 目錄下等于2M的文件 | 
| find /tmp -size +2M | 查找在/tmp 目錄下大于2M的文件 | 
| find /tmp -size -2M | 查找在/tmp 目錄下小于2M的文件 | 
| find ./ -size +4k -size -5M | 查找當前目錄下大于4k,小于5M的文件 | 
| find ./ -perm 0777 | 查找當前目錄下權限為 777 的文件或目錄 | 
Linux find命令用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。
 語法:
常用參數說明 :
- -perm xxxx:權限為 xxxx的文件或目錄
- -user: 按照文件屬主來查找文件。
- -size n : n單位,b:512位元組的區塊,c:字元數,k:kilo bytes,w:二個位元組
- -mount, -xdev : 只檢查和指定目錄在同一個文件系統下的文件,避免列出其它文件系統中的文件
- -amin n : 在過去 n 分鐘內被讀取過
- -anewer file : 比文件 file 更晚被讀取過的文件
- -atime n : 在過去n天內被讀取過的文件
- -cmin n : 在過去 n 分鐘內被修改過
- -cnewer file :比文件 file 更新的文件
- -ctime n : 在過去n天內被修改過的文件
- -empty : 空的文件
- -gid n or -group name : gid 是 n 或是 group 名稱是 name
- -ipath p, -path p : 路徑名稱符合 p 的文件,ipath 會忽略大小寫
- -name name, -iname name : 文件名稱符合 name 的文件。iname 會忽略大小寫
- -type 查找某一類型的文件: - b - 塊設備文件
- d - 目錄
- c - 字符設備文件
- p - 管道文件
- l - 符號鏈接文件
- f - 普通文件
 
- -exec 命令名{} \ (注意:“}”和“\”之間有空格)
find實例:
顯示當前目錄中大于20字節并以.c結尾的文件名
find . -name "*.c" -size +20c將目前目錄其其下子目錄中所有一般文件列出
find . -type f將目前目錄及其子目錄下所有最近 20 天內更新過的文件列出
find . -ctime -20查找/var/log目錄中更改時間在7日以前的普通文件,并在刪除之前詢問它們:
find /var/log -type f -mtime +7 -ok rm {} \;查找前目錄中文件屬主具有讀、寫權限,并且文件所屬組的用戶和其他用戶具有讀權限的文件:
find . -type f -perm 644 -exec ls -l {} \;查找系統中所有文件長度為0的普通文件,并列出它們的完整路徑:
find / -type f -size 0 -exec ls -l {} \;從根目錄查找類型為符號鏈接的文件,并將其刪除:
find / -type l -exec rm -rf {} \從當前目錄查找用戶tom的所有文件并顯示在屏幕上
find . -user tom在當前目錄中查找所有文件以.doc結尾,且更改時間在3天以上的文件,找到后刪除,并且給出刪除提示
find . -name *.doc -mtime +3 -ok rm {} ;
 1
 在當前目錄下查找所有鏈接文件,并且以長格式顯示文件的基本信息
在當前目錄下查找文件名有一個小寫字母、一個大寫字母、兩個數字組成,且擴展名為.doc的文件
find . -name '[a-z][A-Z][0-9][0-9].doc'拷貝文件:cp
cp命令的功能是將給出的文件或目錄復制到另一個文件或目錄中,相當于DOS下的copy命令。
常用選項說明:
| -a | 該選項通常在復制目錄時使用,它保留鏈接、文件屬性,并遞歸地復制目錄,簡單而言,保持文件原有屬性。 | 
| -f | 已經存在的目標文件而不提示 | 
| -i | 交互式復制,在覆蓋目標文件之前將給出提示要求用戶確認 | 
| -r | 若給出的源文件是目錄文件,則cp將遞歸復制該目錄下的所有子目錄和文件,目標文件必須為一個目錄名。 | 
| -v | 顯示拷貝進度 | 
| -l | 創建硬鏈接(hard link),而非復制文件本身 | 
| -s | 復制成為符號鏈接 (symbolic link),相當于批量創建快捷方式 | 
| -u | 若 destination 比 source 舊才升級 destination ! | 
cp vim_configure/ code/ -ivr 把文件夾 vim_configure 拷貝到 code 目錄里。
移動文件:mv
mv命令用來移動文件或目錄,也可以給文件或目錄重命名。
常用選項說明:
| -f | 禁止交互式操作,如有覆蓋也不會給出提示 | 
| -i | 確認交互方式操作,如果mv操作將導致對已存在的目標文件的覆蓋,系統會詢問是否重寫,要求用戶回答以避免誤覆蓋文件 | 
| -v | 顯示移動進度 | 
歸檔管理:tar
此命令可以把一系列文件歸檔到一個大文件中,也可以把檔案文件解開以恢復數據。
tar使用格式 tar [參數] 打包文件名 文件
tar命令參數很特殊,其參數前面可以使用“-”,也可以不使用。
常用參數:
| -c | 生成檔案文件,創建打包文件 | 
| -v | 列出歸檔解檔的詳細過程,顯示進度 | 
| -f | 指定檔案文件名稱,f后面一定是.tar文件,所以必須放選項最后 | 
| -t | 列出檔案中包含的文件 | 
| -x | 解開檔案文件 | 
注意:除了f需要放在參數的最后,其它參數的順序任意。
[root@localhost /]# tar -cvf test.tar 1.txt 2.txt 3.txt 1.txt 2.txt 3.txt文件壓縮解壓:gzip、bzip2
tar與gzip命令結合使用實現文件打包、壓縮。 tar只負責打包文件,但不壓縮,用gzip壓縮tar打包后的文件,其擴展名一般用xxxx.tar.gz。
gzip使用格式如下:
gzip [選項] 被壓縮文件| -d | 解壓文件 | 
| -r | 壓縮文件 | 
tar命令中-z選項可以調用gzip實現了一個壓縮的功能,實行一個先打包后壓縮的過程。
壓縮用法:tar zcvf 壓縮包包名 文件1 文件2 …
例如: tar zcvf test.tar.gz 1.c 2.c 3.c 4.c把 1.c 2.c 3.c 4.c 壓縮成 test.tar.gz
[root@localhost /]# ls 1.c 2.c 3.c 4.c [root@localhost /]#tar zcvf test.tar.gz 1.c 2.c 3.c 4.c [root@localhost /]# ls 1.c 2.c 3.c 4.c test.tar.gz [root@localhost /]# tar -zcvf new.tar.gz 1.c 2.c 3.c 4.c [root@localhost /]# ls 1.c 2.c 3.c 4.c new.tar.gz test.tar.gz解壓用法: tar zxvf 壓縮包包名
 例如:
解壓到指定目錄:-C (解壓時可以不指定-z選項)
[root@localhost /]# ls number/ [root@localhost /]# tar xvf test.tar.gz -C number/ [root@localhost /]# ls number/ 1.c 2.c 3.c 4.cbzip2命令跟gzip用法類似
壓縮用法:tar jcvf 壓縮包包名 文件…(tar jcvf bk.tar.bz2 *.c)
解壓用法:tar jxvf 壓縮包包名 (tar jxvf bk.tar.bz2)
文件壓縮解壓:zip、unzip
通過zip壓縮文件的目標文件不需要指定擴展名,默認擴展名為zip。
壓縮文件:zip [-r] 目標文件(沒有擴展名) 源文件
解壓文件:unzip -d 解壓后目錄文件 壓縮文件
[root@localhost /]# ls 1.txt 2.txt 3.txt test.tar [root@localhost /]# zip myzip *.txtadding: 1.txt (stored 0%)adding: 2.txt (stored 0%)adding: 3.txt (stored 0%) [root@localhost /]# ls 1.txt 2.txt 3.txt myzip.zip test.tar [root@localhost /]# rm -f *.txt *.tar [root@localhost /]# ls myzip.zip [root@localhost /]# unzip myzip.zip Archive: myzip.zipextracting: 1.txt extracting: 2.txt extracting: 3.txt [root@localhost /]# ls 1.txt 2.txt 3.txt myzip.zip [root@localhost /]# unzip -d dir myzip.zip Archive: myzip.zipextracting: dir/1.txt extracting: dir/2.txt extracting: dir/3.txt [root@localhost /]# ls 1.txt 2.txt 3.txt dir myzip.zip查看命令位置:which
[root@localhost /]# which ls /bin/ls [root@localhost /]# which sudo /usr/bin/sudo用戶和用戶組管理
用戶管理包括用戶與組賬號的管理。
在Unix/Linux系統中,不論是由本機或是遠程登錄系統,每個系統都必須擁有一個賬號,并且對于不同的系統資源擁有不同的使用權限。
Unix/Linux系統中的root賬號通常用于系統的維護和管理,它對Unix/Linux操作系統的所有部分具有不受限制的訪問權限。
在Unix/Linux安裝的過程中,系統會自動創建許多用戶賬號,而這些默認的用戶就稱為“標準用戶”。
在大多數版本的Unix/Linux中,都不推薦直接使用root賬號登錄系統。
查看當前用戶:whoami
查看當前系統當前賬號的用戶名。可通過cat /etc/passwd查看系統用戶信息。
[root@localhost ~]# whoami root查看登錄用戶:who
who命令用于查看當前所有登錄系統的用戶信息。
| -m或am I | 只顯示運行who命令的用戶名、登錄終端和登錄時間 | 
| -q或–count | 只顯示用戶的登錄賬號和登錄用戶的數量 | 
| -u | 在登錄時間后顯示該用戶最后一次操作到當前的時間間隔 | 
| -u或–heading | 顯示列標題 | 
退出登錄賬戶: exit
如果是圖形界面,退出當前終端;
如果是使用ssh遠程登錄,退出登陸賬戶;
如果是切換后的登陸用戶,退出則返回上一個登陸賬號。
添加用戶賬戶:useradd
在Unix/Linux中添加用戶賬號可以使用adduser或useradd命令,因為adduser命令是指向useradd命令的一個鏈接,因此,這兩個命令的使用格式完全一樣。
useradd命令的使用格式如下: useradd [參數] 新建用戶賬號
| -d | 指定用戶登錄系統時的主目錄 | 
| -m | 自動建立目錄,未指定-d參數時會在/home/{當前用戶}目錄下建立主目錄 | 
| -g | 指定組名稱 | 
相關說明:
- Linux每個用戶都要有一個主目錄,主目錄就是第一次登陸系統,用戶的默認當前目錄(/home/用戶);
- 每一個用戶必須有一個主目錄,所以用useradd創建用戶的時候,一定給用戶指定一個主目錄;
- 如果創建用戶的時候,不指定組名,那么系統會自動創建一個和用戶名一樣的組名。
若創建用戶時未指定家目錄,后期可通過usermod -d /home/abc abc指定
| useradd -d /home/abc abc -m | 創建abc用戶,如果/home/abc目錄不存在,就自動創建這個目錄,同時用戶屬于abc組 | 
| useradd -d /home/a a -g test -m | 創建一個用戶名字叫a,主目錄在/home/a,如果主目錄不存在,就自動創建主目錄,同時用戶屬于test組 | 
| cat /etc/passwd | 查看系統當前用戶名 | 
修改用戶:usermod
常用的選項包括-c, -d, -m, -g, -G, -s, -u以及-o等,這些選項的意義與useradd命令中的選項一樣,可以為用戶指定新的資源值 。
修改用戶所在組:usermod -g 用戶組 用戶名
usermod -g test abc改abc用戶的家目錄位置:usermod -d 家目錄 用戶名
usermod -d /home/abc abc選項-l 新用戶名指定一個新的賬號,可修改用戶名:
[root@localhost ~]# tail /etc/passwd -n 1 aaa:x:1001:1001::/home/aaa: [root@localhost ~]# sudo usermod -l bbb -d /home/bbb aaa [root@localhost ~]# tail /etc/passwd -n 1 bbb:x:1001:1001::/home/bbb:設置用戶密碼:passwd
超級用戶可以為自己和其他用戶指定口令,普通用戶只能用它修改自己的口令。命令的格式為:
passwd 選項 用戶名可使用的選項:
- -l 鎖定口令,即禁用賬號。
- -u 口令解鎖。
- -d 使賬號無口令。
- -f 強迫用戶下次登錄時修改口令。
假設當前用戶是sam,則下面的命令修改該用戶自己的口令:
$ passwd Old password:****** New password:******* Re-enter new password:*******如果是超級用戶,可以用下列形式指定任何用戶的口令:
# passwd sam New password:******* Re-enter new password:*******普通用戶修改自己的口令時,passwd命令會先詢問原口令,驗證后再要求用戶輸入兩遍新口令,如果兩次輸入的口令一致,則將這個口令指定給用戶;而超級用戶為用戶指定口令時,就不需要知道原口令。
為用戶指定空口令時,執行下列形式的命令:
passwd -d sam此命令將用戶的 sam 的口令刪除,這樣用戶 sam 下一次登錄的時候,系統就不在允許該用戶登錄。
passwd 命令還可以用 -l(lock)選項鎖定某一用戶,使其不能登錄,例如:
passwd -l sam刪除用戶:userdel
| su | 切換到root用戶 | 
| su root | 切換到root用戶 | 
| su - | 切換到root用戶,同時切換目錄到/root | 
| su - root | 切換到root用戶,同時切換目錄到/root | 
| su 普通用戶 | 切換到普通用戶 | 
| su - 普通用戶 | 切換到普通用戶,同時切換普通用戶所在的目錄 | 
注意,對于ubuntu平臺,只能通過sudo su 進入到root賬戶
 sudo 允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具
以root身份執行指令:sudo
sudo 命令可以臨時獲取root的權限
 使用權限:在 /etc/sudoers 中有出現的使用者
sudoers 文件配置語法
user MACHINE = COMMANDS 用戶 登錄的主機= (可以變換的身份)可以執行的命令例子:
允許root用戶執行任意路徑下的任意命令 root ALL=(ALL) ALL 允許wheel用戶組中的用戶執行所有命令 %wheel ALL=(ALL) ALL 允許wheel用戶組中的用戶在不輸入該用戶的密碼的情況下使用所有命令 %wheel ALL=(ALL) NOPASSWD: ALL 允許support用戶在EPG的機器上不輸入密碼的情況下使用SQUID中的命令 Cmnd_Alias SQUID = /opt/vtbin/squid_refresh, /sbin/service, /bin/rm Host_Alias EPG = 192.168.1.1, 192.168.1.2 support EPG=(ALL) NOPASSWD: SQUID添加和刪除組賬戶:groupadd、groupdel
groupadd 新建組賬號 groupdel 組賬號 cat/etc/group 查看用戶組
[root@localhost ~]# sudo groupadd abc [root@localhost ~]# sudo groupdel abc [root@localhost ~]# sudo groupdel abc groupdel:“abc”組不存在用戶組管理:groupmod
修改用戶組的屬性使用groupmod命令,其語法如下:
groupmod 選項 用戶組常用的選項有:
- -g GID為用戶組指定新的組織標號
- -o 和 -g選項同時使用,用戶組新的GID可以與系統已有的用戶組GID相同
- -n 新用戶組將用戶組的名字改為新名字
將組group2的組標識號修改為102:
groupmod -g 102 group2將組group2的標識號改為10000,組名修改為group3:
groupmod –g 10000 -n group3 group2如果一個用戶同時屬于多個用戶組,那么用戶可以在用戶組之間切換,以便具有其它用戶組的權限,用戶在登錄后,使用命令newgrp切換到其它用戶組,這個命令的參數就是目的的用戶組,例如:
newgrp root這條命令將當前用戶切換到root用戶組,前提條件是root用戶組確實是該用戶的主組或附加組。類似于用戶賬號的管理,用戶組的管理也可以通過集成的系統管理工具來完成。
系統管理
查看當前日歷:cal
cal命令用于查看當前日歷,-y顯示整年日歷:
[root@localhost ~]# cal十月 2022 日 一 二 三 四 五 六12 3 4 5 6 7 89 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31顯示或設置時間:dete
設置時間格式(需要管理員權限):
date [MMDDhhmm[[CC]YY][.ss]] +formatMM為月,DD為天,hh為小時,mm為分鐘;CC為年前兩位,YY為年的后兩位,ss為秒。
如: date 010203042016.55。
顯示時間格式(date ‘+%y,%m,%d,%H,%M,%S’):
| %Y,%y | 年 | 
| %m | 月 | 
| %d | 日 | 
| %H | 時 | 
| %M | 分 | 
| %S | 秒 | 
查看網絡狀態:netstat
netstat命令用于顯示網絡狀態。
利用netstat指令可讓你得知整個Linux系統的網絡情況。
語法:
netstat [-acCeFghilMnNoprstuvVwx][-A<網絡類型>][--ip]參數說明:
- -a或–all 顯示所有連線中的Socket。
- -A<網絡類型>或–<網絡類型> 列出該網絡類型連線中的相關地址。
- -c或–continuous 持續列出網絡狀態。
- -C或–cache 顯示路由器配置的快取信息。
- -e或–extend 顯示網絡其他相關信息。
- -F或–fib 顯示FIB。
- -g或–groups 顯示多重廣播功能群組組員名單。
- -h或–help 在線幫助。
- -i或–interfaces 顯示網絡界面信息表單。
- -l或–listening 顯示監控中的服務器的Socket。
- -M或–masquerade 顯示偽裝的網絡連線。
- -n或–numeric 直接使用IP地址,而不通過域名服務器。
- -N或–netlink或–symbolic 顯示網絡硬件外圍設備的符號連接名稱。
- -o或–timers 顯示計時器。
- -p或–programs 顯示正在使用Socket的程序識別碼和程序名稱。
- -r或–route 顯示Routing Table。
- -s或–statistice 顯示網絡工作信息統計表。
- -t或–tcp 顯示TCP傳輸協議的連線狀況。
- -u或–udp 顯示UDP傳輸協議的連線狀況。
- -v或–verbose 顯示指令執行過程。
- -V或–version 顯示版本信息。
- -w或–raw 顯示RAW傳輸協議的連線狀況。
- -x或–unix 此參數的效果和指定"-A unix"參數相同。
- -ip或–inet 此參數的效果和指定"-A inet"參數相同。
常用如下:
[root@localhost yum.repos.d]# netstat -nltp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1219/sshd tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 1512/python tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1460/master tcp6 0 0 :::22 :::* LISTEN 1219/sshd tcp6 0 0 ::1:25 :::* LISTEN 1460/master查看進程信息:ps
進程是一個具有一定獨立功能的程序,它是操作系統動態執行的基本單元。
ps命令選項:
- ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
- ps -A 顯示所有程序。
- ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路 徑,參數或常駐服務的標示。
- ps -e 此參數的效果和指定"A"參數相同。
- ps e 列出程序時,顯示每個程序所使用的環境變量。
- ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關系。
- ps -H 顯示樹狀結構,表示程序間的相互關系。
- ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
- ps s 采用程序信號的格式顯示程序狀況。
- ps u 以用戶為主的格式來顯示程序狀況。
- ps x 顯示所有程序,不以終端機來區分。
| -a | 顯示終端上的所有進程,包括其他用戶的進程 | 
| -u | 顯示進程的詳細狀態 | 
| -x | 顯示沒有控制終端的進程 | 
| -w | 顯示加寬,以便顯示更多的信息 | 
| -r | 只顯示正在運行的進程 | 
常見用法:
- ps -e 查看所有進程信息(瞬時的)
- ps -u root -N 查看所有不是root運行的進程
- ps ax 顯示所有進程狀態狀態
- ps -ef |grep xxx 顯示含有xxx的進程
實例:
# ps -A 顯示進程信息 PID TTY TIME CMD1 ? 00:00:02 init2 ? 00:00:00 kthreadd ……省略部分結果 30749 pts/0 00:00:15 gedit 30886 ? 00:01:10 qtcreator.bin 30894 ? 00:00:00 qtcreator.bin顯示指定用戶信息:
# ps -u root //顯示root進程用戶信息PID TTY TIME CMD1 ? 00:00:02 init2 ? 00:00:00 kthreadd3 ? 00:00:00 migration/0 ……省略部分結果 30487 ? 00:00:06 gnome-terminal 30488 ? 00:00:00 gnome-pty-helpe 30489 pts/0 00:00:00 bash顯示所有進程信息,連同命令行
# ps -ef //顯示所有命令,連帶命令行 UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:22 ? 00:00:02 /sbin/init root 2 0 0 10:22 ? 00:00:00 [kthreadd] root 3 2 0 10:22 ? 00:00:00 [migration/0] root 4 2 0 10:22 ? 00:00:00 [ksoftirqd/0] root 5 2 0 10:22 ? 00:00:00 [watchdog/0] root 6 2 0 10:22 ? /usr/lib/NetworkManager ……省略部分結果 root 31302 2095 0 17:42 ? 00:00:00 sshd: root@pts/2 root 31374 31302 0 17:42 pts/2 00:00:00 -bash root 31400 1 0 17:46 ? 00:00:00 /usr/bin/python /usr/sbin/aptd root 31407 31374 0 17:48 pts/2 00:00:00 ps -ef以樹狀圖顯示進程關系:pstree
顯示進程的關系
pstree init-+-amd |-apmd |-atd |-httpd---10*[httpd] %pstree -p init(1)-+-amd(447) |-apmd(105) |-atd(339) %pstree -c init-+-amd |-apmd |-atd |-httpd-+-httpd | |-httpd | |-httpd | |-httpd ....特別表明在運行的進程:
# pstree -apnh //顯示進程間的關系同時顯示用戶名稱:
# pstree -u //顯示用戶名稱動態顯示進程:top
top命令用來動態顯示運行中的進程。top命令能夠在運行后,在指定的時間間隔更新顯示信息。-d參數可以指定顯示信息更新的時間間隔。
在top命令執行后,可以按下按鍵得到對顯示的結果進行排序:
| M | 根據內存使用量來排序 | 
| P | 根據CPU占有率來排序 | 
| T | 根據進程運行時間的長短來排序 | 
| U | 可以根據后面輸入的用戶名來篩選進程 | 
| K | 可以根據后面輸入的PID來殺死進程。 | 
| q | 退出 | 
| h | 獲得幫助 | 
圖示:
 
 更高級的命令是htop,但需要安裝:
 
終止進程:kill
kill命令指定進程號的進程,需要配合 ps 使用。
使用格式:
kill [-signal] pid信號值從0到15,其中9為絕對終止,可以處理一般信號無法終止的進程。
關機重啟:reboot、shutdown、init
| reboot | 重新啟動操作系統 | 
| shutdown –r now | 重新啟動操作系統,shutdown會給別的用戶提示 | 
| shutdown -h now | 立刻關機,其中now相當于時間為0的狀態 | 
| shutdown -h 20:25 | 系統在今天的20:25 會關機 | 
| shutdown -h +10 | 系統再過十分鐘后自動關機 | 
| init 0 | 關機 | 
| init 6 | 重啟 | 
檢查磁盤空間:df
df命令用于檢測文件系統的磁盤空間占用和空余情況,可以顯示所有文件系統對節點和磁盤塊的使用情況。
| -a | 顯示所有文件系統的磁盤使用情況 | 
| -m | 以1024字節為單位顯示 | 
| -t | 顯示各指定文件系統的磁盤空間使用情況 | 
| -T | 顯示文件系統 | 
檢測目錄所占磁盤空間:du
du命令用于統計目錄或文件所占磁盤空間的大小,該命令的執行結果與df類似,du更側重于磁盤的使用狀況。
du命令的使用格式如下: du [選項] 目錄或文件名
| -a | 遞歸顯示指定目錄中各文件和子目錄中文件占用的數據塊 | 
| -s | 顯示指定文件或目錄占用的數據塊 | 
| -b | 以字節為單位顯示磁盤占用情況 | 
| -l | 計算所有文件大小,對硬鏈接文件計算多次 | 
查看或配置網卡信息:ifconfig
ifconfig顯示所有網卡的信息:
[root@localhost /]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 1**.6*.1**.1** netmask 255.255.240.0 broadcast 1**.6*.2**.255inet6 fe80::***:****:****:**** prefixlen 64 scopeid 0x20<link>ether 00:**:5d:**:**:** txqueuelen 1000 (Ethernet)RX packets 110480231 bytes 9437413113 (8.7 GiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 796651 bytes 134723358 (128.4 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 0 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0修改ip:
sudo ifconfig ens0 192.168.40.10測試遠程主機連通性:ping
[root@localhost /]# ping www.baidu.com PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data. 64 bytes from 110.242.68.3: icmp_seq=1 ttl=51 time=11.9 ms 64 bytes from 110.242.68.3: icmp_seq=2 ttl=51 time=11.1 ms 64 bytes from 110.242.68.3: icmp_seq=3 ttl=51 time=11.4 msLinux 磁盤管理
Linux磁盤管理常用三個命令為df、du和fdisk。
- df:列出文件系統的整體磁盤使用量
- du:檢查磁盤空間使用量
- fdisk:用于磁盤分區
df
獲取硬盤被占用了多少空間,目前還剩下多少空間等信息。
語法:
df [-ahikHTm] [目錄或文件名]選項與參數:
- -a :列出所有的文件系統,包括系統特有的 /proc 等文件系統;
- -k :以 KBytes 的容量顯示各文件系統;
- -m :以 MBytes 的容量顯示各文件系統;
- -h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
- -H :以 M=1000K 取代 M=1024K 的進位方式;
- -T :顯示文件系統類型, 連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
- -i :不用硬盤容量,而以 inode 的數量來顯示
將系統內的所有特殊文件格式及名稱都列出來
[root@localhost /]# df -aT 文件系統 類型 1K-塊 已用 可用 已用% 掛載點 rootfs rootfs 13588480 1522984 12065496 12% / proc proc 0 0 0 - /proc sysfs sysfs 0 0 0 - /sys devtmpfs devtmpfs 495768 0 495768 0% /dev securityfs securityfs 0 0 0 - /sys/kernel/security tmpfs tmpfs 505200 96 505104 1% /dev/shm devpts devpts 0 0 0 - /dev/pts tmpfs tmpfs 505200 50840 454360 11% /run tmpfs tmpfs 505200 0 505200 0% /sys/fs/cgroup cgroup cgroup 0 0 0 - /sys/fs/cgroup/systemd pstore pstore 0 0 0 - /sys/fs/pstore cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpuset cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct cgroup cgroup 0 0 0 - /sys/fs/cgroup/memory cgroup cgroup 0 0 0 - /sys/fs/cgroup/devices cgroup cgroup 0 0 0 - /sys/fs/cgroup/freezer cgroup cgroup 0 0 0 - /sys/fs/cgroup/net_cls cgroup cgroup 0 0 0 - /sys/fs/cgroup/blkio cgroup cgroup 0 0 0 - /sys/fs/cgroup/perf_event cgroup cgroup 0 0 0 - /sys/fs/cgroup/hugetlb configfs configfs 0 0 0 - /sys/kernel/config /dev/mapper/centos-root xfs 13588480 1522984 12065496 12% / systemd-1 autofs 0 0 0 - /proc/sys/fs/binfmt_misc mqueue mqueue 0 0 0 - /dev/mqueue hugetlbfs hugetlbfs 0 0 0 - /dev/hugepages debugfs debugfs 0 0 0 - /sys/kernel/debug /dev/sda1 xfs 508588 121240 387348 24% /boot binfmt_misc binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc tmpfs tmpfs 101040 0 101040 0% /run/user/0du
du命令是對文件和目錄磁盤使用的空間的查看.
語法:
du [-ahskm] 文件或目錄名稱選項與參數:
- -a :列出所有的文件與目錄容量,因為默認僅統計目錄底下的文件量而已。
- -h :以人們較易讀的容量格式 (G/M) 顯示;
- -s :列出總量而已,而不列出每個各別的目錄占用容量;
- -S :不包括子目錄下的總計,與 -s 有點差別。
- -k :以 KBytes 列出容量顯示;
- -m :以 MBytes 列出容量顯示;
du沒有加任何選項時,只列出當前目錄下的所有文件夾容量(包括隱藏文件夾):
[root@localhost ~]# du 8 ./test4 <==每個目錄都會列出來 8 ./test2 ....中間省略.... 12 ./.gconfd <==包括隱藏文件的目錄 220 . <==這個目錄(.)所占用的總量直接輸入 du 沒有加任何選項時,則 du 會分析當前所在目錄的文件與目錄所占用的硬盤空間。
加-a選項才顯示文件的容量:
[root@localhost ~]# du -a 12 ./install.log.syslog <==有文件的列表了 8 ./.bash_logout 8 ./test4 8 ./test2 ....中間省略.... 12 ./.gconfd 220 .檢查根目錄底下每個目錄所占用的容量
[root@localhost ~]# du -sh /* 0 /bin 108M /boot 4.0K /data .....中間省略.... 0 /proc .....中間省略.... 40K /tmp 2.4G /usr 2.4G /varfdisk
fdisk 是 Linux 的磁盤分區表操作工具。
語法:
fdisk [-l] 裝置名稱選項與參數:
- -l :輸出后面接的裝置所有的分區內容。若僅有 fdisk -l 時, 則系統將會把整個系統內能夠搜尋到的裝置的分區均列出來。
列出所有分區信息:
[root@localhost /]# fdisk -l磁盤 /dev/sda:16.1 GB, 16106127360 字節,31457280 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標簽類型:dos 磁盤標識符:0x00099802設備 Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 31457279 15215616 8e Linux LVM磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節磁盤 /dev/mapper/centos-root:13.9 GB, 13925089280 字節,27197440 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節磁盤 /dev/mapper/centos-swap:1610 MB, 1610612736 字節,3145728 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節查看根目錄所在磁盤,并查閱該硬盤內的相關信息:
[root@localhost /]# df / <==注意:重點在找出磁盤文件名而已 Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc2 9920624 3823168 5585388 41% /[root@localhost /]# fdisk /dev/hdc <==不要加上數字! The number of cylinders for this disk is set to 5005. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs(e.g., DOS FDISK, OS/2 FDISK)Command (m for help): <==等待你的輸入!輸入 m 后,就會看到底下這些命令介紹
Command (m for help): m <== 輸入 m 后,就會看到底下這些命令介紹 Command actiona toggle a bootable flagb edit bsd disklabelc toggle the dos compatibility flagd delete a partition <==刪除一個partitionl list known partition typesm print this menun add a new partition <==新增一個partitiono create a new empty DOS partition tablep print the partition table <==在屏幕上顯示分割表q quit without saving changes <==不儲存離開fdisk程序s create a new empty Sun disklabelt change a partition's system idu change display/entry unitsv verify the partition tablew write table to disk and exit <==將剛剛的動作寫入分割表x extra functionality (experts only)離開 fdisk 時按下 q,那么所有的動作都不會生效!相反的, 按下w就是動作生效的意思。
Command (m for help): p <== 這里可以輸出目前磁盤的狀態Disk /dev/hdc: 41.1 GB, 41174138880 bytes <==這個磁盤的文件名與容量 255 heads, 63 sectors/track, 5005 cylinders <==磁頭、扇區與磁柱大小 Units = cylinders of 16065 * 512 = 8225280 bytes <==每個磁柱的大小Device Boot Start End Blocks Id System /dev/hdc1 * 1 13 104391 83 Linux /dev/hdc2 14 1288 10241437+ 83 Linux /dev/hdc3 1289 1925 5116702+ 83 Linux /dev/hdc4 1926 5005 24740100 5 Extended /dev/hdc5 1926 2052 1020096 82 Linux swap / Solaris # 裝置文件名 啟動區否 開始磁柱 結束磁柱 1K大小容量 磁盤分區槽內的系統Command (m for help): q使用 p 可以列出目前這顆磁盤的分割表信息,這個信息的上半部在顯示整體磁盤的狀態。
磁盤格式化
磁盤分割完畢后自然就是要進行文件系統的格式化,格式化的命令非常的簡單,使用 mkfs(make filesystem) 命令。
語法:
mkfs [-t 文件系統格式] 裝置文件名選項與參數:
- -t :可以接文件系統格式,例如 ext3, ext2, vfat 等(系統有支持才會生效)
 查看 mkfs 支持的文件格式:
按下兩個[tab],會發現 mkfs 支持的文件格式如上所示。
將分區 /dev/hdc6(可指定其他分區) 格式化為ext3文件系統:
[root@localhost /]# mkfs -t ext3 /dev/hdc6 mke2fs 1.39 (29-May-2006) Filesystem label= <==這里指的是分割槽的名稱(label) OS type: Linux Block size=4096 (log=2) <==block 的大小配置為 4K Fragment size=4096 (log=2) 251392 inodes, 502023 blocks <==由此配置決定的inode/block數量 25101 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=515899392 16 block groups 32768 blocks per group, 32768 fragments per group 15712 inodes per group Superblock backups stored on blocks:32768, 98304, 163840, 229376, 294912Writing inode tables: done Creating journal (8192 blocks): done <==有日志記錄 Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # 這樣就創建起來我們所需要的 Ext3 文件系統了!簡單明了!磁盤檢驗
fsck(file system check)用來檢查和維護不一致的文件系統。
若系統掉電或磁盤發生問題,可利用fsck命令對文件系統進行檢查。
語法:
fsck [-t 文件系統] [-ACay] 裝置名稱選項與參數:
- -t : 給定檔案系統的型式,若在 /etc/fstab 中已有定義或 kernel 本身已支援的則不需加上此參數
- -s : 依序一個一個地執行 fsck 的指令來檢查
- -A : 對/etc/fstab 中所有列出來的 分區(partition)做檢查
- -C : 顯示完整的檢查進度
- -d : 打印出 e2fsck 的 debug 結果
- -p : 同時有 -A 條件時,同時有多個 fsck 的檢查一起執行
- -R : 同時有 -A 條件時,省略 / 不檢查
- -V : 詳細顯示模式
- -a : 如果檢查有錯則自動修復
- -r : 如果檢查有錯則由使用者回答是否修復
- -y : 選項指定檢測每個文件是自動輸入yes,在不確定那些是不正常的時候,可以執行 # fsck -y 全部檢查修復。
查看系統有多少文件系統支持的 fsck 命令:
[root@localhost /]# fsck[tab][tab] fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat強制檢測 /dev/hdc6 分區:
[root@localhost /]# fsck -C -f -t ext3 /dev/hdc6 fsck 1.39 (29-May-2006) e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks如果沒有加上 -f 的選項,則由于這個文件系統不曾出現問題,檢查的經過非常快速!若加上 -f 強制檢查,才會一項一項的顯示過程。
磁盤掛載與卸除
Linux 的磁盤掛載使用mount命令,卸載使用umount命令。
磁盤掛載語法:
mount [-t 文件系統] [-L Label名] [-o 額外選項] [-n] 裝置文件名 掛載點用默認的方式,將剛剛創建的 /dev/hdc6 掛載到 /mnt/hdc6 上面!
[root@localhost /]# mkdir /mnt/hdc6 [root@localhost /]# mount /dev/hdc6 /mnt/hdc6 [root@localhost /]# df Filesystem 1K-blocks Used Available Use% Mounted on .....中間省略..... /dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6磁盤卸載命令umount語法:
umount [-fn] 裝置文件名或掛載點選項與參數:
- -f :強制卸除!可用在類似網絡文件系統 (NFS) 無法讀取到的情況下;
- -n :不升級 /etc/mtab 情況下卸除。
卸載/dev/hdc6
[root@localhost /]# umount /dev/hdc6Linux管道命令
Linux的管道命令是’|’,通過它可以對數據進行連續處理,其示意圖如下:
 
 注意:
1)管道命令僅處理標準輸出,對于標準錯誤輸出,將忽略
2)管道命令右邊命令,必須能夠接收標準輸入流命令才行,否則傳遞過程中數據會拋棄。
常用來作為接收數據管道命令有: less,more,head,tail,而ls, cp, mv就不行。
WC - 統計字數
可以計算文件的Byte數、字數、或是列數,若不指定文件名稱、或是所給予的文件名為"-",則wc指令會從標準輸入設備讀取數據。
wc [-lwm] [filename] -l: 統計行數 -w:統計英文單詞 -m:統計字符數 [root@localhost /]# wc -l /etc/passwd 49 /etc/passwd [root@localhost /]# wc -w /etc/passwd 81 /etc/passwd [root@localhost /]# wc -m /etc/passwd 2696 /etc/passwd在默認的情況下,wc將計算指定文件的行數、字數,以及字節數。使用的命令為:
$ wc testfile # testfile文件的統計信息 3 92 598 testfile # testfile文件的行數為3、單詞數92、字節數598其中,3 個數字分別表示testfile文件的行數、單詞數,以及該文件的字節數。
如果想同時統計多個文件的信息,例如同時統計testfile、testfile_1、testfile_2,可使用如下命令:
$ wc testfile testfile_1 testfile_2 #統計三個文件的信息 3 92 598 testfile #第一個文件行數為3、單詞數92、字節數598 9 18 78 testfile_1 #第二個文件的行數為9、單詞數18、字節數78 3 6 32 testfile_2 #第三個文件的行數為3、單詞數6、字節數32 15 116 708 總用量 #三個文件總共的行數為15、單詞數116、字節數708cut - 列選取命令
選項與參數: -d :后面接分隔字符。與 -f 一起使用; -f :依據 -d 的分隔字符將一段信息分割成為數段,用 -f 取出第幾段的意思; -c :以字符 (characters) 的單位取出固定字符區間;cut以行為單位,根據分隔符把行分成若干列,這樣就可以指定選取哪些列了。
cut -d '分隔字符' -f 選取的列數 echo $PATH|cut -d ':' -f 2 --選取第2列 echo $PATH|cut -d ':' -f 3,5 --選取第3列和第5列 echo $PATH|cut -d ':' -f 3-5 --選取第3列到第5列 echo $PATH|cut -d ':' -f 3- --選取第3列到最后1列 echo $PATH|cut -d ':' -f 1-3,5 --選取第1到第3列還有第5列只顯示/etc/passwd的用戶和shell:
#cat /etc/passwd | cut -d ':' -f 1,7 root:/bin/bash daemon:/bin/sh bin:/bin/shgrep - 行選取命令
grep一般格式為:
grep [-cinv] '查找的字符串' filename在grep命令中輸入字符串參數時,最好引號或雙引號括起來。例如:grep 'a' 1.txt
常用選項說明:
| -v | 顯示不包含匹配文本的所有行(相當于求反) | 
| -n | 顯示匹配行及行號 | 
| -i | 忽略大小寫 | 
| -c | 計算找到的行數 | 
grep搜索內容串可以是正則表達式,常用正則表達式:
| ^a | 行首,搜尋以 m 開頭的行;grep -n ‘^a’ 1.txt | 
| ke$ | 行尾,搜尋以 ke 結束的行;grep -n ‘ke$’ 1.txt | 
| [Ss]igna[Ll] | 匹配 [] 里中一系列字符中的一個;搜尋匹配單詞signal、signaL、Signal、SignaL的行;grep -n ‘[Ss]igna[Ll]’ 1.txt | 
| . | 匹配一個非換行符的字符;grep -n ‘e.e’ 1.txt可以匹配 eee,eae,eve,但是不匹配 ee,eaae; | 
- |匹配零個或多個先前字符
 [^] |匹配一個不在指定范圍內的字符
 (…) |標記匹配字符
 \ |錨定單詞的開始
 < |錨定單詞的開頭
 > |錨定單詞的結束
 x{m} |重復字符x,m次
 x{m,} |重復字符x,至少m次
 x{m,n} |重復字符x,至少m次,不多于n次
 \w |匹配文字和數字字符,也就是[A-Za-z0-9]
 \b |單詞鎖定符
實例:
 顯示所有以“h”結尾的行
匹配所有以“a”開頭且以“e”結尾的,中間包含2個字符的單詞
grep ‘<a…e>’顯示所有包含一個”y”或”h”字符的行
grep [yh]顯示不包含字母a~k 且后緊跟“pple”的單詞
grep [^a-k]pple從系統詞典中選擇所有以“c”開頭且以“o”結尾的單詞
grep '\<c.*o\>'找出一個文件中或者輸出中找到包含*的行
grep '\*'顯示所有包含每個字符串至少有20個連續字母的單詞的行
grep [a-Z]\{20,\}sort - 排序
語法:
sort [-fbMnrtuk] [file or stdin]參數說明:
- -f :忽略大小寫的差異,例如 A 與 a 視為編碼相同;
- -b :忽略最前面的空格符部分;
- -M :以月份的名字來排序,例如 JAN, DEC 等等的排序方法;
- -n :使用『純數字』進行排序(默認是以文字型態來排序的);
- -r :反向排序;
- -u :就是 uniq ,相同的數據中,僅出現一行代表;
- -t :分隔符,默認是用 [tab] 鍵來分隔;
- -k :以哪個區間 (field) 來進行排序
默認是以第一個字符升序排序:
# cat /etc/passwd | sort adm:x:3:4:adm:/var/adm:/sbin/nologin avahi-autoipd:x:100:156:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin avahi:x:70:70:Avahi daemon:/:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin ......以第3列排序:
[root@localhost /]# cat /etc/passwd | sort -t ':' -k 3 root:x:0:0:root:/root:/bin/bash uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin使用數字排序:
cat /etc/passwd | sort -t ':' -k 3n root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh倒序排序:
cat /etc/passwd | sort -t ':' -k 3nr nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ntp:x:106:113::/home/ntp:/bin/false messagebus:x:105:109::/var/run/dbus:/bin/false sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin 或者 cat /etc/passwd | sort -t ':' -k 3 -nr先以第六個域的第2個字符到第4個字符進行正向排序,再基于第一個域進行反向排序:
cat /etc/passwd | sort -t ':' -k 6.2,6.4 -k 1r sync:x:4:65534:sync:/bin:/bin/sync proxy:x:13:13:proxy:/bin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh查看/etc/passwd有多少個shell:
方法對/etc/passwd的第七個域排序并去重,然后統計行數:
[root@localhost /]# cat /etc/passwd | sort -t':' -k 7 -u root:x:0:0:root:/root:/bin/bash syslog:x:996:994::/home/syslog:/bin/false sync:x:5:0:sync:/sbin:/bin/sync halt:x:7:0:halt:/sbin:/sbin/halt bin:x:1:1:bin:/bin:/sbin/nologin shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown [root@localhost /]# cat /etc/passwd | sort -t':' -k 7 -u|wc -luniq - 去重
選項與參數: -i :忽略大小寫字符的不同; -c :進行計數 -u :只顯示唯一的行該命令用于排完序之后,對排序結果進行去重
[root@localhost /]# last | cut -d ' ' -f 1 | sort | uniqhaha python reboot wtmp [root@localhost /]# last | cut -d ' ' -f 1 | sort | uniq -c1 2 haha22 python7 reboot1 wtmp排序文件,默認是去重:
#cat words | sort |uniq friend hello world排序之后刪除了重復行,同時在行首位置輸出該行重復的次數:
#sort testfile | uniq -c 1 friend 3 hello 2 world僅顯示存在重復的行,并在行首顯示該行重復的次數:
#sort testfile | uniq -dc 3 hello 2 world僅顯示不重復的行:
sort testfile | uniq -u friendtee - 同時輸出多個文件
從標準輸入設備讀取數據,將其內容輸出到標準輸出設備,同時保存成文件。
一般情況下用重定向實現,需要同時輸出多個文件時可以使用該命令。
參數:
- -a或–append 附加到既有文件的后面,而非覆蓋它.
將輸出同時保存到多個文件中,同時將輸出內容顯示到控制臺:
[root@localhost /]# echo "hello world"|tee f1 f2 hello world [root@localhost /]# cat f1 hello world [root@localhost /]# echo "hello world"|tee f1 f2 -a hello world [root@localhost /]# cat f1 hello world hello worldsplit - 文件切割
split命令用于將一個文件分割成數個。
該指令將大文件分割成較小的文件,在默認情況下將按照每1000行切割成一個小文件。
語法:
split [-bl] file prefix -b: 以大小切割 -l:以行數切割 prefix:切割后文件的前綴參數說明:
- -<行數> : 指定每多少行切成一個小文件
- -b<字節> : 指定每多少字節切成一個小文件
- -C<字節> : 與參數"-b"相似,但是在切 割時將盡量維持每行的完整性
- [輸出文件名] : 設置切割后文件的前置文件名, split會自動在前置文件名后再加上編號
使用指令"split"將文件"README"每6行切割成一個文件,輸入如下命令:
$ split -6 README #將README文件每六行分割成一個文件 $ ls #執行ls指令 #獲得當前目錄結構 README xaa xad xag xab xae xah xac xaf xai以上命令執行后,指令"split"會將原來的大文件"README"切割成多個以"x"開頭的小文件。而在這些小文件中,每個文件都只有6行內容。
以大小切割:
$ ls -lh disease.dmp -rwxr-xr-x 1 root root 122M Jul 4 2013 disease.dmp $ split -b 50m disease.dmp disease.dmp $ ls -lh disease.dmp* -rwxr-xr-x 1 root root 122M Jul 4 2013 disease.dmp -rw-r--r-- 1 root root 50M Jan 9 16:10 disease.dmpaa -rw-r--r-- 1 root root 50M Jan 9 16:10 disease.dmpab -rw-r--r-- 1 root root 22M Jan 9 16:10 disease.dmpac總結
以上是生活随笔為你收集整理的0基础学Linux-从小白到大牛(3)Linux命令的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 七十二变
- 下一篇: 解决error: unknown typ
