日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

0基础学Linux-从小白到大牛(3)Linux命令

發布時間:2023/12/15 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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/g/o/a ]含義
uuser 表示該文件的所有者
ggroup 表示與該文件的所有者屬于同一組( group )者,即用戶組
oother 表示其他以外的人
aall 表示這三者皆是
[ ±= ]含義
+增加權限
-撤銷權限
=設定權限

數字法:“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 :列出行號,連同空白行也會有行號
[root@localhost opt]# cat -b /opt/1.txt1 iii2 text3 text24 aaa [root@localhost opt]# cat -n /opt/1.txt1 iii2 text3 text24 aaa5 6

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]# nl 1.txt1 iii2 text3 text24 aaa#此處空行但不顯示行號#此處空行但不顯示行號

分屏顯示

[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 :代表往回翻頁,不過這動作只對文件有用,對管線無用。
[root@localhost opt]# less /etc/man.config # # Generated automatically from man.conf.in by the # configure script. # # man.conf from man-1.6d ....(中間省略).... : <== 這里可以等待你輸入命令!

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.config

tail取出文件后面幾行

語法:

tail [-n number] 文件

選項與參數:

-n :后面接數字,代表顯示幾行的意思
-f :表示持續偵測后面所接的檔名,要等到按下[ctrl]-c才會結束tail的偵測

[root@localhost opt]# tail /etc/man.config # 默認的情況中,顯示最后的十行!若要顯示最后的 20 行,就得要這樣: [root@localhost opt]# tail -n 20 /etc/man.config

文件管理

輸出重定向:>

可將本應顯示在終端上的內容保存到指定文件中。

如: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
[root@localhost opt]# pwd -P /opt

創建目錄:mkdir

mkdir可以創建一個新的目錄。

注意:新建目錄的名稱不能與當前目錄中已有的目錄或文件同名,并且目錄創建者必須對當前目錄具有寫權限。

語法:

mkdir [-mp] 目錄名稱

選項與參數:

  • -m :指定被創建目錄的權限,而不是根據默認權限 (umask) 設定
  • -p :遞歸創建所需要的目錄
[root@localhost opt]# mkdir -p test1/test2/test3 [root@localhost opt]# ls 1.txt test test1 [root@localhost opt]# cd test1 [root@localhost test1]# ls test2

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命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。
語法:

find path -option [ -print ] [ -exec -ok command ] {} \;

常用參數說明 :

  • -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
在當前目錄下查找所有鏈接文件,并且以長格式顯示文件的基本信息

find . -type l -exec ls -l {} \;

在當前目錄下查找文件名有一個小寫字母、一個大寫字母、兩個數字組成,且擴展名為.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壓縮文件
[root@localhost /]# ll *.tar*[root@localhost /]# gzip -r test.tar test.tar.gz ==>或者:gzip test.tar

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 壓縮包包名
例如:

[root@localhost /]# ls new.tar.gz test.tar.gz [root@localhost /]# tar zxvf 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

解壓到指定目錄:-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.c

bzip2命令跟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 中有出現的使用者

顯示出自己(執行 sudo 的使用者)的權限 sudo -l 以 root 權限執行上一條命令 sudo !!

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]] +format

MM為月,DD為天,hh為小時,mm為分鐘;CC為年前兩位,YY為年的后兩位,ss為秒。

如: date 010203042016.55。

顯示時間格式(date ‘+%y,%m,%d,%H,%M,%S’):

format格式含義
%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顯示文件系統
[root@localhost /]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root 13G 1.5G 12G 12% / devtmpfs 485M 0 485M 0% /dev tmpfs 494M 96K 494M 1% /dev/shm tmpfs 494M 50M 444M 11% /run tmpfs 494M 0 494M 0% /sys/fs/cgroup /dev/sda1 497M 119M 379M 24% /boot tmpfs 99M 0 99M 0% /run/user/0

檢測目錄所占磁盤空間:du

du命令用于統計目錄或文件所占磁盤空間的大小,該命令的執行結果與df類似,du更側重于磁盤的使用狀況。

du命令的使用格式如下: du [選項] 目錄或文件名

選項含義
-a遞歸顯示指定目錄中各文件和子目錄中文件占用的數據塊
-s顯示指定文件或目錄占用的數據塊
-b以字節為單位顯示磁盤占用情況
-l計算所有文件大小,對硬鏈接文件計算多次
[root@localhost /]# du -sh /home/ 12K /home/

查看或配置網卡信息: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 ms

Linux 磁盤管理

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 -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root xfs 13G 1.5G 12G 12% / devtmpfs devtmpfs 485M 0 485M 0% /dev tmpfs tmpfs 494M 96K 494M 1% /dev/shm tmpfs tmpfs 494M 50M 444M 11% /run tmpfs tmpfs 494M 0 494M 0% /sys/fs/cgroup /dev/sda1 xfs 497M 119M 379M 24% /boot tmpfs tmpfs 99M 0 99M 0% /run/user/0

將系統內的所有特殊文件格式及名稱都列出來

[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/0

du

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 /var

fdisk

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 支持的文件格式:
[root@localhost /]# mkfs[tab] mkfs mkfs.cramfs mkfs.ext3 mkfs.minix mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.xfs

按下兩個[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/hdc6

Linux管道命令

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、字節數708

cut - 列選取命令

選項與參數: -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/sh

grep - 行選取命令

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”結尾的行

grep 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 -l

uniq - 去重

選項與參數: -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 friend

tee - 同時輸出多個文件

從標準輸入設備讀取數據,將其內容輸出到標準輸出設備,同時保存成文件。

一般情況下用重定向實現,需要同時輸出多個文件時可以使用該命令。

參數:

  • -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 world

split - 文件切割

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命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。