1. 程式人生 > 實用技巧 >Linux目錄結構&檔案管理

Linux目錄結構&檔案管理

Windows: 以多根的方式組織檔案 C:\ D:\ E:\
Linux: 以單根的方式組織檔案 /

/目錄結構: FSH (Filesystem Hierarchy Standard)

  1 [root@admin ~]# ls /
  2 bin     dev   lib          media  net   root     srv  usr
  3 boot    etc   lib64       misc   opt   sbin     sys  var
  4 cgroup  home  lost+found  mnt    proc  selinux  tmp

注:下圖為Centos7目錄結構


  1 bin            普通使用者使用的命令 /bin/ls, /bin/date
  2 sbin           管理員使用的命令 /sbin/service
  3 dev            裝置檔案 /dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1, /dev/zero,/dev/null, /dev/random
  4 root            root使用者的HOME
  5 home            儲存普通使用者家目錄
  6 lost+found      fsck修復時,儲存沒有連結的檔案或目錄
  7 proc            虛擬的檔案系統,反映出來的是核心,程序資訊或實時狀態


  1 usr               系統檔案,相當於C:\Windows
  2                      /usr/local     軟體安裝的目錄,相當於C:\Program
  3                      /usr/bin      普通使用者使用的應用程式
  4                      /usr/sbin     管理員使用的應用程式
  5                      /usr/lib      庫檔案Glibc
  6                      /usr/lib64   庫檔案Glibc
  7 
  1 boot                存放的系統啟動相關的檔案,例如kernel,grub(引導裝載程式)
  2
etc 配置檔案(系統相關如網路/etc/sysconfig/network,應用相關配置檔案如/etc/ssh/sshd_config...) 3 lib 庫檔案Glibc 4 lib64 庫檔案Glibc 5 tmp 臨時檔案(全域性可寫:程序產生的臨時檔案) 6 var 存放的是一些變化檔案,比如資料庫,日誌,郵件.... 7 mysql: /var/lib/mysql 8 vsftpd: /var/ftp 9 mail: /var/spool/mail 10 cron: /var/spool/cron 11 log: /var/log 12 臨時檔案: /var/tmp(程序產生的臨時檔案)
==裝置(主要指儲存裝置)掛載目錄==
    media         移動裝置預設的掛載點
    mnt           手工掛載裝置的掛載點
    misc          automount程序掛載
    net           automount程序掛載
命令儲存位置:
  1 /bin              普通使用者使用的命令 /bin/ls, /bin/date           RHEL7淘汰
  2 /sbin             管理員使用的命令                                RHEL7淘汰
  3 /usr/bin          普通使用者使用的應用程式
  4 /usr/sbin         管理員使用的應用程式
庫檔案儲存位置:
  1 /lib      庫檔案Glibc RHEL7淘汰
  2 /lib64      庫檔案Glibc RHEL7淘汰
  3 /usr/lib   庫檔案Glibc
  4 /usr/lib64   庫檔案Glibc


檔案時間

ls -l 檔名 僅看的是檔案的修改時間

Linux檔案有四種時間:

# stat anaconda-ks.cfg //檢視檔案的詳細屬性(其中包括檔案時間屬性)
訪問時間:atime, 檢視內容 //RHEL6會延後修改atime
修改時間:mtime,修改內容
改變時間:ctime, 檔案屬性,比如許可權
刪除時間:dtime, 檔案被刪除的時間

  1 [root@root ~]# ls -l install.log
  2 -rw-r--r-- 1 root root 34793 08-23 13:49 install.log
  1 [root@root ~]# stat install.log
  2   File: “install.log”
  3   Size: 34793           Blocks: 80         IO Block: 4096   一般檔案
  4 Device: 802h/2050d      Inode: 65282       Links: 1
  5 Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
  6 Access: 2020-08-23 16:53:20.000000000 +0800
  7 Modify: 2020-08-23 13:49:46.000000000 +0800
  8 Change: 2020-08-23 13:49:52.000000000 +0800

注:RHEL6開始relatime,atime延遲修改,必須滿足其中一個條件:
1. 自上次atime修改後,已達到86400秒;
2. 發生寫操作時;

檔案型別:

通過顏色判斷檔案的型別是不一定正確的!!!
Linux系統中檔案是沒有副檔名!!!

方法一:
ls   -l 檔名    //看第一個字元
-    普通檔案(文字檔案,二進位制檔案,壓縮檔案,電影,圖片。。。)
d    目錄檔案(藍色)
b    裝置檔案(塊裝置)儲存裝置硬碟,U盤 /dev/sda, /dev/sda1
c    裝置檔案(字元裝置)印表機,終端 /dev/tty1
s    套接字檔案
p    管道檔案
l    連結檔案(淡藍色)
  1 [root@root ~]# ll -d /etc/hosts /bin/ls /home /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
  2 -rwxr-xr-x.  1 root root 117616 Nov 20  2015 /bin/ls
  3 srw-rw-rw-   1 root root      0 Mar 14  2017 /dev/log
  4 brw-rw----   1 root disk   8, 0 Mar 14 09:03 /dev/sda
  5 crw--w----   1 root tty    4, 1 Mar 14 09:03 /dev/tty1
  6 lrwxrwxrwx.  1 root root     22 Dec 21 01:40 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
  7 -rw-r--r--   1 root root    392 Feb 22 15:51 /etc/hosts
  8 drwxr-xr-x. 10 root root   4096 Mar 14 11:00 /home
方法二:file
  1 [root@localhost ~]# file /etc/hosts
  2 /etc/hosts: ASCII text
  3 
  4 [root@localhost ~]# file /bin/ls
  5 /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
  6 
  7 [root@localhost ~]# file /dev/sda
  8 /dev/sda: block special
  9 
 10 [root@localhost ~]# file /dev/tty1
 11 /dev/tty1: character special
 12 
 13 [root@localhost ~]# file /etc/grub2.cfg
 14 /etc/grub2.cfg: broken symbolic link to `../boot/grub2/grub.cfg'
 15 
 16 [root@localhost ~]# file /home
 17 /home: directory
 18 
 19 [root@localhost ~]# file /run/dmeventd-client
 20 /run/dmeventd-client: fifo (named pipe)

路徑 (定位檔案)


/home/alice/file1 和 /home/bob/file1 不是同一檔案!!!
/abc/file5 和 abc/file5 有可能是不一樣的!!!

絕對路徑: 從/開始的路徑 /home/alice/file1
相對路徑: 相對於當前目錄開始 a.txt ./a.txt ../bob/b.txt [假如:此時在目錄/home/alice]

檔案管理

cd 改變目錄
  1 cd                  絕對路徑    cd /home/alice     cd ~alice
  2 cd                  相對路徑    cd Desktop/abc    cd ..   cd .

cd 專用:
cd - 返回上次目錄
cd 直接回家

檔案管理之:建立/複製/移動/刪除
建立
  1 檔案 touch
  2 # touch file1.txt                             //無則建立,有則修改時間
  3 # touch file3 file4
  4 # touch /home/file10.txt
  5 # touch /home/file5 file6
  6 # touch /home/{zhuzhu,gougou}
  7 # touch file{1..20}
  8 # touch file{a..c}
  9 # touch yang{a,b,c}                      //{}集合,等價touch yanga yangb yangc
 10 
 11 目錄 mkdir
 12 # mkdir dir1
 13 # mkdir /home/dir2 /home/dir3
 14 # mkdir /home/{dir4,dir5}
 15 # mkdir -v /home/{dir6,dir7}
 16 # mkdir -v /hoem/dir8/111/22
 17 # mkdir -pv /hoem/dir8/111/222    //包括其父母的建立,不會有任何訊息輸出
 18 # mkdir -pv /home/{yang/{dir1,111},tianyun}
複製 cp
  1 Usage: cp [OPTION]... [-T] SOURCE DEST
  2 # cd
  3 # mkdir /home/dir{1,2}
  4 # cp -v install.log /home/dir1
  5 # cp -v install.log /home/dir1/yang.txt
  6 # cp -rv /etc /home/dir1
  7 # cp -v install.log /home/dir90       //沒有/home/dir90
  8 # cp -v install.log /home/dir2
  9 # cp -v anaconda-ks.cfg !$
 10 # cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /home/dir2            //將多個檔案拷貝到同一個目錄
 11 # cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts .
 12 # cp -r /etc /tmp
 13 # cp -rf /etc /tmp
 14 # \cp -r /etc /tmp
  1 [root@localhost ~]#  type -a cp
  2 cp is aliased to `cp -i'
  3 cp is /bin/cp
  4 
  5 [root@localhost ~]#  cp -rv /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth0.bak}
  6 [root@localhost ~]#  cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0{,-org}
  7 [root@localhost ~]#  cp -rv /etc/sysconfig/network-scripts/{ifcfg-eth0,yang-eth0}
移動 mv
  1 Usage: mv [OPTION]... [-T] SOURCE DEST
  2 # mv file1 /home/dir3               將file2移動到/home/dir3
  3 # mv file2 /home/dir3/file20      將file2移動到/home/dir3,並改名為file20
  4 # mv file4 file5                          將file4重新命名為file5,當前位置的移動就是重新命名
刪除 rm
  1 示例1:刪除/home/dir1
  2 # cd /home
  3 # rm -rf dir1
  4 -r 遞迴
  5 -f force強制
  6 -v 詳細過程
  7 
  8 示例2:
  9 [root@localhost~]# mkdir /home/dir10
 10 [root@localhost~]# touch /home/dir10/{file2,file3,.file4}
 11 [root@localhost~]# rm -rf /home/dir10/*                                    //不包括隱藏檔案
 12 [root@localhost~]# ls /home/dir10/ -a
 13 .  ..  .file4
 14 
 15 示例3:
 16 [root@localhost~]# rm -rf file*
 17 [root@localhost~]# rm -rf *.pdf
檔案管理之:檢視檔案內容
  1 ==文字檔案 (cat tac less more head tail tailf grep ...)
  2 /bin/date
  3 /etc/hosts
  4 /etc/sysconfig/network
  5 /etc/sysconfig/network-scripts/ifcfg-eth0
  6 /etc/passwd
  7 /etc/shadow
  8 /etc/group
  9 /etc/grub2.cfg
 10 /etc/resolv.conf
 11 /etc/profile                            //設定系統環境變數
 12 /etc/bashrc                           //影響bash shell環境
 13 /var/log/messages                   //系統主日誌檔案
  1 cat
  2 -n  顯示行號
  3 -A  包括控制字元(換行符/製表符)
  4      linux $
  5      Windows ^M$
  6 
  7 less  more head  tail  tailf
  8 [root@localhost~]# head  /etc/passwd
  9 [root@localhost~]# head -2 /etc/passwd
 10 [root@localhost~]# tail /etc/passwd
 11 [root@localhost~]# tail -1 /etc/passwd
 12 [root@localhost~]# tail /var/log/messages
 13 [root@localhost~]# tail -20 /var/log/messages
 14 [root@localhost~]# tail -f /var/log/secure              //-f 動態檢視檔案的尾部
 15 [root@localhost~]# tail -F /var/log/secure              //-F 動態檢視檔案的尾部
 16 注:vim, gedit編輯檔案時,索引號會改變
 17 
 18 grep 針對檔案內容進行過濾
 19 # grep 'root' /etc/passwd
 20 # grep '^root' /etc/passwd
 21 # grep 'bash$' /etc/passwd
 22 # grep 'failure' /var/log/secure


檔案管理之:修改檔案內容

[root@localhost~]# ll -a > list.txt
檔案編輯器 gedit
檔案編輯器 vi, vim, nano


  1 命令模式:
  2     a. 游標定位
  3         hjkl
  4         0 $
  5         gg G
  6         3G      進入第三行
  7         /string (n N 可以迴圈的)  快速定位到某一行
  8         /^d
  9         /txt$
 10 
 11     b. 文字編輯(少量)
 12         y        複製  yy 3yy ygg  yG         (以行為單位)
 13         d        刪除 dd 3dd dgg  dG           (以行為單位)
 14         p        貼上
 15         x        刪除游標所在的字元
 16         D        從游標處刪除到行尾
 17         u        undo撤銷
 18         ^r       redo重做
 19         r        可以用來修改一個字元
 20 
 21     c. 進入其它模式
 22         a        進入插入模式
 23         i        進入插入模式
 24         o        進入插入模式
 25         A        進入插入模式
 26 
 27         :        進入末行模式(擴充套件命令模式)
 28         v        進入可視模式
 29         ^v       進入可視塊模式
 30         V        進入可視行模式
 31         R        進入替換模式
 32 
 33 
 34 插入模式:
 35 
 36 
 37 可視塊模式:
 38         塊插入(在指定塊前加入字元):  選擇塊,I   在塊前插入字元, ESC
 39         塊替換:                                       選擇塊,r   輸入替換的字元
 40         塊刪除:                                       選擇塊,d | x
 41         塊複製:                                       選擇塊,y
 42 
 43 擴充套件命令模式:
 44     a. 儲存退出
 45         :10     進入第10行
 46         :w      儲存
 47         :q      退出
 48         :wq     儲存並退出
 49         :w!     強制儲存
 50         :q!     不儲存並退出
 51         :wq!    強制儲存退出
 52         :x      儲存並退出   ZZ
 53 
 54 
 55     b. 查詢替換
 56         :範圍 s/old/new/選項
 57         :1,5 s/root/yang/                     從1-5行的root 替換為yang
 58         :5,$ s/root/yang/                     $表示最後一行
 59         :1,$ s/root/yang/g                    =     :% s/root/yang/g    %表示全文  g表示全域性
 60         :% s#/dev/sda#/var/ccc#g
 61         :,8 s/root/yang/                      從當前行到第8行
 62         :4,9 s/^#//                           4-9行的開頭#替換為空
 63         :5,10 s/.*/#&/                        5-10前加入#字元  (.*整行   &引用查詢的內容)
 64 
 65     c. 讀入檔案/寫檔案(另存為)
 66         :w                                    儲存到當前檔案
 67         :w /tmp/aaa.txt                       另存為/tmp/aaa.txt
 68         :1,3 w /tmp/2.txt
 69         :r /etc/hosts                         讀入檔案到當前行後
 70         :5 r /etc/hosts                       讀入檔案到第5行後
 71 
 72     d. 設定環境
 73         臨時設定:
 74         :set nu                                設定行號
 75         :set ic                                不區分大小寫
 76         :set ai                                自動縮排
 77         :set list                              顯示控制字元
 78         :set nonu                              取消設定行號
 79         :set noic
 80 
 81        永久的環境:
 82        /etc/vimrc                             影響所有系統使用者
 83        ~/.vimrc                               影響某一個使用者
 84 
 85         # vim ~/.vimrc
 86         set ic
 87         set nu



歸類: Linux 學習