Linux超詳細指令大全

閱讀提示

本文中你將瞭解到Linux運維與實際應用中的超詳細彙總指令。


在大學期間自學linux常常會因爲指令而頭痛,不用就會忘記,查幫助文檔又很繁瑣,在這裏小編整理了大學期間所學的所有常用指令供大家參考,廢話不多說,直接上乾貨。

一、linux文件系統結構

sudo apt-get install tree
tree --help  #查看幫助
tree -L 1  #顯示文件目錄
root@ubuntu16 /# tree -L 1
.           #系統根目錄
├── bin     #存放常見的命令
├── boot    #系統啓動文件和核心文件都在這個目錄
├── cdrom   #光驅
├── dev     #存放設備文件,包括硬盤、光驅、鍵盤、鼠標等
├── etc     #系統配置文件都在這個目錄下
├── home    #普通用戶的家目錄
├── lib     #系統鏈接庫
├── lib64   #64位的鏈接庫
├── lost+found   #系統自動生成的,如果文件系統出錯,會在目錄下產生文件,記錄錯誤
├── media        #系統自動掛載的光驅、usb等
├── mnt          #mount簡寫 掛載其他文件系統
├── opt          #可在此安裝第三方軟件 
├── proc         #系統進程的信息、系統狀態信息
├── root         #超管的目錄
├── run          #進程運行數據
├── sbin         #管理員的命令,普通用戶無法使用
├── srv          #服務信息
├── sys          #系統相關
├── tmp          #臨時目錄,所有用戶都具有讀寫權限
├── usr          #unix software resource  用戶的軟件安裝到這個目錄
|    ├── bin     #應用程序的可執行文件
|    ├── sbin    #用戶或超管的標準命令
|    ├── local   #管理員安裝的應用程序目錄
|    └── share   #共享文件目錄
└── var          #存放不斷擴充的文件。比如數據庫文件、日誌文件
  ├── log     #日誌目錄,各種應用的日誌
  └── run     # /run的軟連接

二、常見命令

  1. ls

    列出目錄下的文件或子目錄

    ls [參數]    #中括號表示可選
    ls  -l    #以列表方式顯示文件的詳細信息
    ls  -a   #顯示隱藏文件,隱藏文件的文件名以.開頭
    ls  -al  #
    
    ls --help #查看命令參數
    
    drwxr-xr-x  2 python python     4096 3月  28 11:20 Templates
    drwxr-xr-x  2 python python     4096 3月  28 11:20 Videos
    

    第一部分:表示文件類型 d代表目錄,-代表普通文件,l代表軟連接
    第2部分,2-10列代表文件的權限:rwxr-xr-x.
    第3部分:數字代表文件的鏈接數
    第四部分:root代表文件的所有者
    第5部分:root表示文件屬於哪個用戶組
    第6部分:數字的表示文件大小,以字節爲單位
    第7部分:時間,表示文件的修改時間
    第8部分:文件名

    
    ~~~shell
    #文件權限
    drwxr-xr-x.  2 root root 4096 Nov 20 07:36 tmp
    r:read  可讀
    w:write 可寫
    x:excute  可執行
    -:表示無權限
    
    權限:
        2-4位   ower  文件的所有者    
        5-7位   group:用戶組
        8-10位  other:其他用戶
    
  2. ll

    以列表方式顯示,其實是ls -l的別名
    白色代表普通文件
    綠色代表可執行文件
    藍色代表目錄
    
  3. man命令

    #命令的幫助文檔
    sudo apt-get  install man
    #用法:
       man  命令名
    常用的快捷鍵
    空格 f     下翻頁
    b          上翻頁
    shift + g   到文件末尾
    g         文件開頭
    q         退出
    上下箭頭   前翻和後翻
    回車鍵     後翻
    home      回到開始
    
  4. history命令

    查看你敲過的命令

  5. 硬鏈接和軟連接

    文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。在 Linux 中,元數據中的 inode 號(inode 是文件元數據的一部分但其並不包含文件名,inode 號即索引節點號)纔是文件的唯一標識而非文件名。文件名僅是爲了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊。

    爲解決文件的共享使用,Linux 系統引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)。鏈接爲 Linux 系統解決了文件的共享使用,還帶來了隱藏文件路徑、增加權限安全及節省存儲等好處。

    • 一個 inode 號對應多個文件名,則稱這些文件爲硬鏈接
    link 源文件名 新文件名 
    ln 源文件名 新文件名 
    
    stat 文件名 #查看文件信息
    ls -i  #查看目錄下文件的硬鏈接數
    python@ubuntu:/csl$ ls -la
    total 4
    913923 lrwxrwxrwx. 1 root root    5 Mar 18 16:20 2.txt -> 1.txt
    913926 -rw-r--r--. 2 root root    0 Mar 18 19:58 31.txt
    913926 -rw-r--r--. 2 root root    0 Mar 18 19:58 32.txt
    913925 -rwxr-xr-x. 1 root root    0 Mar 18 17:29 5.txt
    913924 drwxr-xr-x. 2 root root 4096 Mar 18 17:29 test
    
    # 硬鏈接的特點:
       1.只能對已存在的文件進行創建;
       2.不能交叉文件系統進行硬鏈接的創建;
       3.不能對目錄進行創建,只可對文件創建;
       4.刪除一個硬鏈接文件並不影響其他有相同inode 號的文件。
    
    
  • 軟連接

軟鏈接與硬鏈接不同,若文件用戶數據塊中存放的內容是另一文件的路徑名的指向,則該文件就是軟連接。軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接類似快捷方式

ln -s 源文件 目標文件。
   
軟連接的特點:
   軟鏈接有自己的文件屬性及權限等;
   可對不存在的文件或目錄創建軟鏈接;
   軟鏈接可交叉文件系統;
   軟鏈接可對文件或目錄創建;
   創建軟鏈接時,鏈接計數 i_nlink 不會增加;
   刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱爲死鏈接

三、目錄管理

  1. 絕對路徑和相對路徑

    linux的目錄和windows不同,不區分盤符,只有一個根目錄,根目錄用/表示。

    • 絕對路徑:從根目錄到當前文件(目錄)的路徑,比如:/home/python
    • 相對路徑:以當前目錄爲基準,表示上級目錄或子目錄
      • 用 . 表示當前目錄,一般執行shell腳本可以用 . 1.sh或者 ./1.sh
      • 用…表示上級目錄
    • linux目錄分隔符只能用正斜線(/)表示
    • 用 ~ 表示用戶主目錄,用 - 表示來源目錄(你從哪個目錄切換到當前目錄的)
  2. 目錄切換

    cd 目錄名  #切換目錄
     .  #當前目錄
     ..  #代表上級目錄
     /   #代表根目錄
     ~   #用戶家目錄  root用戶的家目錄/root   普通用戶的家目錄/home/用戶名
     cd /etc/yum.repos.d
     cd / #切換到根目錄
     cd -  #切換到來源目錄
     cd ~ #返回用戶的家目錄
     
     pwd #顯示當前的目錄名
    
  3. 提示信息

    [root@localhost ~]# cd /
    [root@localhost /]$
    root代表用戶名
    localhost 主機名
    ~ 用戶的家目錄
    /  根目錄
    # 表示超級管理員在操作
    $ 普通用戶在操作
    
  4. 創建目錄

    sudo mkdir  目錄名
    sudo mkdir -p  目錄名    #遞歸創建目錄
    sudo mkdir -p  h1801/1/2
    sudo mkdir -p  1/{2,3}/{4,5,6} #
    
  5. 刪除目錄 rmdir

    sudo rmdir [option]  目錄名    #刪除的時候目錄必須爲空
    sudo rmdir -p  目錄名   #遞歸刪除空目錄
    sudo rmdir -p 1/2/3 #1,2,3目錄都必須不能有文件
    

四、文件操作

  1. 文件創建

    sudo touch  文件名 [文件名2] [文件名3]....   #創建多個空文件,如果文件存在,自動忽略,不會覆蓋
    echo 'hello world'  > 1.txt   #可以將顯示內容輸出到文件,但會覆蓋原來的內容,文件不存在則創建
    echo '世界,你好'    >> 1.txt  #將顯示內容追加到文件末尾,文件不存在則創建
    # >  >> 輸出重定向
    
  2. 文件移動

    sudo mv 源文件   目標文件   #銷燬原件
    sudo mv  1.txt  ./lpl/  #將1.txt移動到字目錄lpl下,文件名不變
    sudo mv  1.txt  2.txt   #如果在同一個目錄就是文件重命名  將1.txt重命名爲2.txt
    
  3. 文件拷貝

    sudo cp 源文件   目標文件
    sudo cp -r  源目錄   目標目錄   #遞歸拷貝目錄
    
  4. 文件刪除

    sudo rm  文件名  
    sudo rm -i 文件名  #刪除前逐一確認
    sudo rm  -f  文件名   #刪除文件不帶提示
    sudo rm -rf  目錄名   #遞歸刪除目錄
    
  5. 文件查看

    cat  文件名       #輸出文件內容,從前往後輸出,
    tac   文件名      #cat的反寫,從後往前輸出
    head -n N  文件名   #顯示文件的前幾行,可以指定查看的行數,默認顯示10行
    tail -n N 文件名   #顯示文件的最後幾行,可以指定查看的行數
    tail -f  cat 文件名   #實時顯示文件內容
    watch -d -n 秒殺 cat 文件名  #實時顯示文件內容 有高亮
    sudo vi  文件名   
    more  文件名       #從前往後查看,可以翻屏 ,不能往前翻  回車一行行查看,空格翻屏  q退
    less  文件名       #和more類似,可以前翻頁,g首頁 G尾頁,b前翻頁,空格和f後翻頁,q退出
    stat  文件名       #查看文件詳細信息
    
    stat 2.txt
      File: `2.txt'
      Size: 146       	Blocks: 8          IO Block: 4096   regular file
    Device: fd00h/64768d	Inode: 913936      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2019-9-19 21:44:49.108999194 -0500
    Modify: 2017-9-19 21:44:43.773000078 -0500
    Change: 2017-9-19 21:44:43.775000065 -0500
    
  6. 文件查找

    • find
    # find 用於在系統內搜索指定文件
    用法:
       find [路徑] [參數]
         -name  按文件名查找
         -mtime +/-n  #-n表示n天以內修改的文件,+n表示修改超過n天的文件
         -user   #按文件屬主查找
         -size [+/-]n[c/k/M/G] #查找文件長度爲n塊,+表示大於,-表示小於;c是字節 
         -perm 權限數值    #按照文件權限進行查找
         
    find /  -name  "文件名"  		 #從根目錄查找指定文件名的文件
    find /csl/sh1702 -name "2.txt"  #查找指定目錄先的文件
    find /tools -mtime -3           #查找tools目錄下修改時間是3天以內的文
    find /tools  -size 12c 		   #查找長度爲12字節的文件
    find /var ‐perm 0642 ‐size +10k ‐size ‐100k ‐name '*.log' #在/var目錄下,查找10-100k
    
    grep  hello  2.txt  #查找文件內容
    
    ls -al | grep 1.php    # |管道操作,將ls -al操作結果傳遞給grep,grep 在查找結果搜索指定文件名
     
     which 命令名   #查找命令
     whereis  文件名     #只能搜索命令、源文件、二進制文件
    
    • grep
    #grep 用於搜索文件內容
    用法:
       grep [options] 'pattern' filename
         -i  不區分大小寫
         -r  遞歸查找子目錄
         -l  列出文件內容符合指定的範本樣式的文件名稱。
         -n  顯示行號
         -w  只匹配單詞,不是匹配單詞一部分
         -E 按正則表達式搜索
         --include '*.py'  #僅搜索py文件
         --exclude '*.py'  #不搜索py文件
       
       #只在目錄中所有的.php和.html文件中遞歸搜索字符"echo"
       grep "Root" -w -n -i /etc/passwd
    
    
  7. 文件內容統計(wc)

    用法:
       wc [options] [文件列表]
          -l  統計有多少行
          -w  統計有多少單詞
     $ wc -l  /etc/passwd  #統計passwd有多少用戶
    

  8. awk

    awk就是把文件逐行的讀入,以空格爲默認分隔符將每行切片,切開的部分再進行各種分析處理。

    語法:awk '{pattern + action}' {filenames}
    cat /etc/passwd |awk  -F ':'  '{print $1}'   #$1顯示第一列  -F 指定分割符爲':'
    

  9. sort

    sort將文件/文本的每一行作爲一個單位,相互比較,比較原則是從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。

    sort(選項)(參數)
    選項:
       -u忽略相同行
       -k 按指定列排序
       -n 按數值排序
       -t 分割符
       -r 逆序
     #指定passwd文件按第三列 的數值比較,列之間的分隔符爲:
     cat /etc/passwd | sort -n -t ':' -k 3  
    

五. 文件權限

1.文件權限修改

-rwxr-xr-x.  1 root root   24 Nov 21 20:26 1.sh
-rw-r--r-x.  1 root root    0 Nov 20 07:37 1.txt
-rw-r--r--.  1 root root    0 Nov 20 07:37 2.txt

#1.數字表示
r  4 100   讀
w  2 010   寫
x  1 001   執行
-  0       沒有權限
rwx   7 可讀可寫可執行
rwxrw-r-- 764  文件擁有者可讀可寫可執行  文件所屬的組可讀可寫  其他人可讀

#2.符號表示
u  表示文件的擁有者 
g  文件所屬的組
o  其他人
a  所有的人  all

u+/-/=  u=rwx  g+x  o-r
+ 表示增加權限
-  削減權限
=  賦權限
chmod o-x 32.txt   #削減其他用戶的可執行權限
chmod a=rwx 32.txt  #給所有人賦可讀可寫可執行權限
chmod o+x,g+w 32.txt
chmod o=x 32.txt
  • chmod

    ​~~~
    

    用法:
    chmod 權限 文件名/目錄
    chmod -R 權限 目錄 遞歸修改目錄及其子目錄的所有文件的權限

    #數字表示
    chmod 641  1.sh  
    
    #符號表示
    chmod a=rwx 1.sh
    chmod g-w 1.sh
    chmod -R  o+w tmp   #遞歸修改tmp及其子目錄中所有文件的權限
    ​~~~
    
  1. chown(change owner) 修改文件的所有者

    要求:所有者必須在/etc/passwd文件中
    
         chown 用戶名  文件名/目錄名 
         chown 用戶名:組名  文件名/目錄名
         chown :組名  文件名/目錄名
         chown -R 用戶名  文件名/目錄名
         
         chown csl 1.sh
         chown csl:csl 1.sh  #修改用戶和所屬組
    
  2. 修改用戶組 chgrp(change group )

      chgrp 組名  文件名/目錄名
      chgrp -R 組名  文件名/目錄名
      chgrp -R csl tmp  #遞歸修改tmp及其子目錄下文件所屬組  
    
  3. lsattr/chattr 修改和查看文件只讀屬性

    lsattr 文件名 查看文件的只讀屬性,使用ls無法查看
    chattr +/-i 文件名 給文件增加或去除只讀屬性
    chattr +/-a 文件名 只能追加數據,不能修改或刪除
    lsattr 3.py #3.py有隻讀屬性
    ----i--------e- 3.py

    chattr -i 3.py #去掉只讀屬性
    chattr +i 3.py #添加只讀屬性

六. 用戶管理

  1. 用戶和組

    • 一個用戶必須有一個主組
    • 一個用戶可以有多個組
    • 一個組可以有多個用戶
    • 用戶賬戶的信息存放在/etc/passwd文件中;用戶的密碼存放到/etc/shadow,該文件只有root可以修改;組賬戶信息存放到/etc/group中
  2. useradd 添加一個用戶

    ​~~~
    用法:
       useradd [-gud] 用戶名  
         -g 指定主組名或組id
         -u 指定用戶的id
         -m 自動建立用戶主目錄
         -d 指定用戶的家目錄
         -s 指定用戶登錄後使用shell,默認是/bin/bash
       #創建一個用戶沒有指定組,則默認創建一個和用戶名一樣的組,作爲用戶的主組
    
    所有的用戶都在/etc/passwd文件中
    luoming:x:501:501::/home/luoming:/bin/bash
    用戶名  密碼 用戶id  用戶所屬組的id  用戶的家目錄   shell
                  uid     gid
    #Ubuntu 特別提供了一個adduser 命令以交互模式創建用戶,
    adduser csl
    ​~~~
    

  1. 刪除用戶 userdel
userdel -r 用戶名  刪除用戶同時刪除家目錄(家目錄要和用戶名一致才能刪除)
#如果用戶登錄了無法刪除,應該先切換用戶,然後kill -9 用戶進程號,然後在刪除
  1. 修改用戶信息 usermod

    usermod [option]  用戶名
         -u  用戶id
         -g  主組id
         -G  附屬組名稱
         -a  將用戶添加到附屬組,必須與-G配合使用
         -d  用戶的家目錄
         -l  用戶登錄名
       sudo usermod -u 1001 -g 999 -l lkz  liwenkai
       sudo usermod -a -G csl python  #將用戶python添加到附屬組csl中
       sudo usermod -l newusername  oldusername #修改用戶名
    
  2. 修改用戶密碼

    用法:
    passwd [-lu] 用戶名
    -l 鎖定賬戶密碼
    -u 解鎖賬戶密碼
    root 可以修改其他用戶的密碼
    普通用戶只能修改自己的密碼

  3. su和sudo

​ Ubuntu默認禁止使用root賬戶,在系統安裝的時候,創建的第一個用戶作爲管理員(屬於sudo組),其權限要低於root,但比普通用戶高,普通用戶只能處理自己創建的東西,管理員可以安裝軟件、修改日期、刪除用戶等。在Ubuntu中一般看到提示符是$,當執行需要root權限操作的時候需要提升權限,我們可以使用sudo暫時提升用戶權限

我們也可以使用sudo切換用戶身份,可以切換到root或管理員,完成工作後再切換回來

用法:
   sudo  命令  #需要輸入用戶自己的密碼
   
用法:   
   su    用戶名  #需要輸入目標用戶的密碼
root切換到普通用戶不用輸入密碼
普通用戶切換,必須輸入密碼
因爲Ubuntu默認提供root密碼,不能直接由su切換到root,可以先使用sudo來獲取root權限
$ sudo su root  #臨時切換到root

#啓用root賬戶
$ sudo password root #根據提示爲root輸入密碼

7.其他命令

  • id 查看用戶的id和組信息
  • groups查看用戶的組
  • whoami 查看當前的用戶是誰

七. 組管理

 #添加一個組
 groupadd 組名
      
    1702:x:1001:
    組名 密碼  gid
 groupdel  組名  #刪除組
 groupmod  -n 新組名  舊組名
 groups 顯示用戶的組
 
 #所有的組信息都在/etc/group文件中記錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章