1. 程式人生 > >Shell命令-文件及目錄操作之ls、cd

Shell命令-文件及目錄操作之ls、cd

conf 無法 iso 但是 執行 rect time sysconf oot

文件及目錄操作 - ls、cd

1、ls:列出目錄的內容及其內容屬性信息

ls命令的功能說明

ls命令用於列出目錄的內容及其內容屬性信息。

ls命令的語法格式

ls [OPTION]... [FILE]...
ls [參數選項] [文件或目錄]

ls命令的選項說明

ls 選項很多,表1為ls命令的參數及說明:

表1:ls命令的參數及說明

參數選項 解釋說明(帶*的為重點)
-l 長格式顯示文件屬性*
-a 顯示所有字目錄和文件(包含隱藏文件)*
-d 只顯示目錄*
-i 顯示Inode號
-h 人類可讀形式顯示*
-A 列出所有內容,不包括.與..這兩個目錄
-p 目錄結尾加斜線,用來區分目錄和文件
-S 根據文件大小排序
-R 遞歸列出所有子目錄
-F 不同文件結尾加不同標識(目錄結尾加斜線)*
--color=auto 不同的文件類型顯示顏色參數
--time-style=(long-iso,iso) 以不同的時間格式輸出
-r 倒序排序*
-t 按修改時間排序*

ls命令的實踐操作

實驗環境

[[email protected]  ~]# mkdir /test                 <-->在“/”下面創建一個test目錄
[[email protected]  ~]# cd /test                       <-->切換到test目錄
[[email protected]  /test]# touch file{1..3}.txt  <-->批量創建若幹文件
[[email protected]  /test]# mkdir dir{1..3}       <-->批量創建若幹目錄
[[email protected]  /test]# tree                        <-->查看上述的文件和目錄
.
├── dir1
├── dir2
├── dir3
├── file1.txt
├── file2.txt
└── file3.txt

3 directories, 3 files

範例1: 直接執行ls命令,不帶任何參數。

[[email protected]  /test]# ls              <-->不加參數,顯示所有文件和目錄(不包括隱藏文件)
dir1  dir2  dir3  file1.txt  file2.txt  file3.txt    

範例2: 使用-a參數顯示所有文件,特別是隱藏文件。

[[email protected]  /test]# touch .file4.txt      <-->創建一個隱藏文件,在開頭加.即可
[[email protected]  /test]# ls                           <-->沒有隱藏文件
dir1  dir2  dir3  file1.txt  file2.txt  file3.txt
[[email protected]  /test]# ls -a                       <-->列出所有內容,包括隱藏文件
.  ..  dir1  dir2  dir3  file1.txt  file2.txt  file3.txt  .file4.txt
[[email protected]  /test]# ls -A                       <-->列出所有內容,不包括.和..
dir1  dir2  dir3  file1.txt  file2.txt  file3.txt  .file4.txt

範例3: 使用-l參數顯示詳細信息。

[[email protected]  /test]# ls -l        <-->列出文件的詳細信息,及屬性及文件名。俗稱以長格式顯示
total 0
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir1
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir2
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir3
-rw-r--r-- 1 root root 0 Apr  4 14:51 file1.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 file2.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 file3.txt
[[email protected]  /test]# ll            <-->和 ls -l 效果一樣,是因為做了別名
total 0
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir1
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir2
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir3
-rw-r--r-- 1 root root 0 Apr  4 14:51 file1.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 file2.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 file3.txt

範例4: 顯示完整時間屬性參數--time-style=long-iso

[[email protected]  /test]# ls -l                                        <-->不加的效果
total 0
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir1
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir2
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir3
-rw-r--r-- 1 root root 0 Apr  4 14:51 file1.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 file2.txt
-rw-r--r-- 1 root root 0 Apr  4 14:51 file3.txt
[[email protected]  /test]# ls -l --time-style=long-iso   <-->加了的效果,需結合參數-l
total 0
drwxr-xr-x 2 root root 6 2019-04-04 14:51 dir1
drwxr-xr-x 2 root root 6 2019-04-04 14:51 dir2
drwxr-xr-x 2 root root 6 2019-04-04 14:51 dir3
-rw-r--r-- 1 root root 0 2019-04-04 14:51 file1.txt
-rw-r--r-- 1 root root 0 2019-04-04 14:51 file2.txt
-rw-r--r-- 1 root root 0 2019-04-04 14:51 file3.txt

範例5: 執行ls命令帶顯示內容的訪問時間屬性的參數。

[[email protected]  /test]# stat file1.txt                       <-->顯示文件的屬性及狀態信息
  File: ‘file1.txt’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 51524120    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-04-04 14:51:43.623772862 +0800        <-->文件的訪問時間
Modify: 2019-04-04 14:51:43.623772862 +0800
Change: 2019-04-04 14:51:43.623772862 +0800
 Birth: -
[[email protected]  /test]# date                                   <-->查看當下系統時間
Thu Apr  4 15:17:13 CST 2019
[[email protected]  /test]# cat file1.txt                        <-->查看文件內容即表示訪問文件了
[[email protected]  /test]# stat file1.txt                       <-->重新查看文件的訪問時間
  File: ‘file1.txt’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d  Inode: 51524120    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-04-04 15:17:21.452639089 +0800        <-->file1.txt的訪問時間已經變化了
Modify: 2019-04-04 14:51:43.623772862 +0800
Change: 2019-04-04 14:51:43.623772862 +0800
 Birth: -
[[email protected]  /test]# ls -l --time-style=long-iso --time=atime
total 0
drwxr-xr-x 2 root root 6 2019-04-04 14:52 dir1
drwxr-xr-x 2 root root 6 2019-04-04 14:52 dir2
drwxr-xr-x 2 root root 6 2019-04-04 14:52 dir3
-rw-r--r-- 1 root root 0 2019-04-04 15:17 file1.txt     <-->看,只有file1.txt的文件的訪問時間發生變化
-rw-r--r-- 1 root root 0 2019-04-04 14:51 file2.txt
-rw-r--r-- 1 root root 0 2019-04-04 14:51 file3.txt
[[email protected]  /test]# ls -l --time-style=long-iso 
total 0
drwxr-xr-x 2 root root 6 2019-04-04 14:51 dir1
drwxr-xr-x 2 root root 6 2019-04-04 14:51 dir2
drwxr-xr-x 2 root root 6 2019-04-04 14:51 dir3         <-->這裏是文件的默認修改時間列
-rw-r--r-- 1 root root 0 2019-04-04 14:51 file1.txt
-rw-r--r-- 1 root root 0 2019-04-04 14:51 file2.txt
-rw-r--r-- 1 root root 0 2019-04-04 14:51 file3.txt
<-->結論:--time=atime是顯示訪問時間,而非默認的修改時間

範例6: 執行ls命令,帶-F參數(與tree命令的-F非常相似)。

[[email protected]  /test]# ls -F                 <-->所有目錄後面加了 / 
dir1/  dir2/  dir3/  file1.txt  file2.txt  file3.txt
[[email protected]  /test]# ls -F|grep /      <-->過濾目錄
dir1/
dir2/
dir3/
[[email protected]  /test]# ls -F|grep -v /  <-->過濾文件
file1.txt
file2.txt
file3.txt

範例7: 使用-d參數只顯示目錄本身信息

[[email protected]  /test]# ls -l dir1      <-->無法查到dir1目錄的信息
total 0
[[email protected]  /test]# ls -ld dir1    <-->顯示dir1目錄本身的信息
drwxr-xr-x 2 root root 6 Apr  4 14:51 dir1

範例8: 使用-R參數遞歸查看目錄

[[email protected]  /test]# mkdir dir1/sub1/test -p    <-->遞歸創建目錄
[[email protected]  /test]# ls -R dir1                            <-->類似tree,但是沒tree好用
dir1:
sub1

dir1/sub1:
test

dir1/sub1/test:
[[email protected]  /test]# ls dir1
sub1

範例8: ls命令的別名相關知識及設置ls別名

[[email protected]  /test]# alias |grep ls                                         <-->後續會講alias,這裏只是演示
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
[[email protected]  /test]# alias lst=‘ls -l --time-style=long-iso‘  <-->設置別名
[[email protected]  /test]# alias |grep lst                                        <-->檢查是否生效
alias lst=‘ls -l --time-style=long-iso‘
[[email protected]  /test]# lst                                                          <-->測試結果(這裏只是臨時生效)
total 0
drwxr-xr-x 3 root root 18 2019-04-05 18:52 dir1
drwxr-xr-x 2 root root  6 2019-04-04 14:51 dir2
drwxr-xr-x 2 root root  6 2019-04-04 14:51 dir3
-rw-r--r-- 1 root root  0 2019-04-04 14:51 file1.txt
-rw-r--r-- 1 root root  0 2019-04-04 14:51 file2.txt
-rw-r--r-- 1 root root  0 2019-04-04 14:51 file3.txt

範例9: 查找最近更新過的文件

[[email protected]  /test]# touch /etc/test.txt    <-->創建一個新文件
[[email protected]  /test]# ls -lrt /etc/
total 1096                                                              <-->有1096行文件
***省略若幹文件行***
drwxr-xr-x   2 root root     38 Apr  4 18:14 ntp
-rw-r--r--   1 root root     51 Apr  5 18:41 resolv.conf
-rw-r--r--   1 root root      0 Apr  5 19:03 test.txt <-->看,我們新創建的就排在最後,這樣,就不用翻屏看了
[[email protected]  /test]# ls -lrt /etc/|tail -1        <-->顯示最後一行,很方便吧
-rw-r--r--   1 root root      0 Apr  5 19:03 test.txt  

範例10: 顯示inode號並且以人類可讀的方式顯示

[[email protected]  /test]# ls -lhi          <-->第一列就是inode號,並且以M為單位顯示
total 51M
  870845 drwxr-xr-x 3 root root  18 Apr  5 18:52 dir1
17517441 drwxr-xr-x 2 root root   6 Apr  4 14:51 dir2
33636287 drwxr-xr-x 2 root root   6 Apr  4 14:51 dir3
51524120 -rw-r--r-- 1 root root 51M Apr  5 19:16 file1.txt
51524122 -rw-r--r-- 1 root root   0 Apr  4 14:51 file2.txt
51524123 -rw-r--r-- 1 root root   0 Apr  4 14:51 file3.txt
[[email protected]  /test]# ls -l              <-->沒有inode號,並且以b為單位顯示
total 51832
drwxr-xr-x 3 root root       18 Apr  5 18:52 dir1
drwxr-xr-x 2 root root        6 Apr  4 14:51 dir2
drwxr-xr-x 2 root root        6 Apr  4 14:51 dir3
-rw-r--r-- 1 root root 53075968 Apr  5 19:16 file1.txt
-rw-r--r-- 1 root root        0 Apr  4 14:51 file2.txt
-rw-r--r-- 1 root root        0 Apr  4 14:51 file3.txt

2、cd:切換目錄

cd命令的功能說明

cd命令用於從當前目錄切換到指定的工作目錄。

cd命令的語法格式

cd [-L|[-P [-e]]] [dir]
cd [參數選項] [目錄]

cd命令的選項說明

cd 選項對於初學者可能容易記混,不過勤加練習就好了,表1為cd命令的參數及說明:

表1cd命令的參數及說明

參數選項 解釋說明
. 當前目錄
.. 上一級目錄
~ 用戶家目錄
- 上一次所在目錄,可來回切換
空格 不加任何參數,不管在哪,都直接回到用戶家目錄

cd命令的實踐操作

案例1: 進入系統/etc目錄(cd /etc

[[email protected]  /test]# pwd             <-->打印當前路徑
/test
[[email protected]  /test]# cd /etc/       <-->切換到/etc目錄
[[email protected]  /etc]# pwd              <-->打印當前路徑
/etc

案例2: 切換到當前目錄的上一級目錄(cd ..

[[email protected]  /etc]# pwd
/etc
[[email protected]  /etc]# cd ..     <-->".."等同於"../"
[[email protected]  /]# pwd
/

案例3: 進入當前目錄的父目錄的父目錄中(cd ../../

[[email protected]  /]# cd /test/dir1
[[email protected]  /test/dir1]# pwd
/test/dir1
[[email protected]  /test/dir1]# cd ../../
[[email protected]  /]# pwd
/

案例4: 返回當前目錄上一次所在的目錄(cd -

[[email protected]  /]# cd /test/dir1
[[email protected]  /test/dir1]# pwd
/test/dir1
[[email protected]  /test/dir1]# cd
[[email protected]  ~]# pwd
/root
[[email protected]  ~]# cd -
/test/dir1

案例4: 進入當前用戶的家目錄(cd ~

[[email protected]  ~]# cd /test/dir1
[[email protected]  /test/dir1]# pwd
/test/dir1
[[email protected]  /test/dir1]# cd ~     <-->回到當前root用戶的家目錄
[[email protected]  ~]# pwd
/root
[[email protected]  ~]# cd /etc/sysconfig/network-scripts/  
[[email protected]  /etc/sysconfig/network-scripts]# pwd
/etc/sysconfig/network-scripts              <-->這個目錄夠長吧
[[email protected]  /etc/sysconfig/network-scripts]# cd
[[email protected]  ~]# pwd                  <-->cd不加參數,直接回到家目錄
/root

今天就寫到這裏,有什麽疑問或出現什麽錯誤,隨時歡迎大神們發表評論指點迷津

Shell命令-文件及目錄操作之ls、cd