能到處進入資料夾以後,接著我們就希望能看到每個資料夾內的檔案了。
要能夠這麼做,我們可以使用 ls
這個指令
man ls
NAME
ls - list directory contents
首先,我們進到 ~
裡面之後,嘗試 ls
看看
ls
奇怪!怎麼什麼都沒有?
這是因為在預設的 ~
裡面(以我們的用戶來說是 /home/ec2-user/
),確實什麼都沒有。
如果我們到 /
裡面,那就會看到不一樣的結果了
cd /
ls
bin boot dev etc home lib lib64 local media mnt opt proc root run sbin srv sys tmp usr var
除了昨天我們列出的資料夾以外,還有一些沒有見過的資料夾,這些就是不同系統自己設計的內容了!
不過,如果剛剛各位實際看過 man ls
裡面的內容,會看到一個參數
-a, --all
do not ignore entries starting with .
這是什麼意思?我們在 ~
裡面嘗試看看
ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc .config .ssh .viminfo
咦!剛剛不是才說「在預設的 ~
裡面,確實什麼都沒有。」嗎?這些檔案是什麼!
首先,在資料夾結構內,有兩個保留的關鍵字位置
.
代表「現在的資料夾」
..
代表「包含此資料夾的父資料夾」
所以,如果我們在 /home/ec2-user/
內,要去 /home/
的話,可以用 cd ..
cd ..
pwd
/home
另外,在 linux 系統裡面,有一些檔案當初設計者希望可以隱藏,這些檔案通常都會用 .
作為開頭。
我們可以嘗試進入 .ssh
看看
cd .ssh
ls
authorized_keys
就這樣!我們進入了一個隱藏的資料夾。
這樣的設計方式,在撰寫列出檔案時,只需要將開頭為 .
的內容全部忽略,我們就可以略過指定本資料夾、指定上個資料夾、以及所有的隱藏資料夾和隱藏檔案了,可以說是設計上的一個小巧思。
我們再嘗試進入 /home/ec2-user/.bash_history
cd .bash_history
-bash: cd: .bash_history: Not a directory
沒有辦法進去,因為 .bash_history
不是一個資料夾。
難道沒有辦法列的更清楚,讓我們知道哪些是資料夾,哪些是檔案嗎?
有的!答案一樣藏在 man
大師的秘笈裡面,
-F, --classify
append indicator (one of */=>@|) to entries
--file-type
likewise, except do not append '*'
利用指令參數的組合,搭配上 -a
看看
ls -a --file-type
./ ../ .bash_history .bash_logout .bash_profile .bashrc .config/ .ssh/ .viminfo
可以看到,資料夾都加上了 /
的結尾,我們很清楚的就知道哪些是資料夾,哪些是檔案了。
另外要介紹的,就是 -l
這個參數
-l use a long listing format
我們試看看搭配上 -a
,這次可以直接將兩個參數合併在一起
ls -al
drwx------ 5 ec2-user ec2-user 147 Apr 22 2021 .
drwxr-xr-x 4 root root 36 Sep 4 13:03 ..
-rw------- 1 ec2-user ec2-user 2146 Sep 5 14:46 .bash_history
-rw-r--r-- 1 ec2-user ec2-user 18 Jul 15 2020 .bash_logout
-rw-r--r-- 1 ec2-user ec2-user 193 Jul 15 2020 .bash_profile
-rw-r--r-- 1 ec2-user ec2-user 231 Jul 15 2020 .bashrc
drwxrwxr-x 3 ec2-user ec2-user 22 Apr 19 2021 .config
drwx------ 2 ec2-user ec2-user 29 Apr 19 2021 .ssh
-rw------- 1 ec2-user ec2-user 15922 Apr 22 2021 .viminfo
可以看出來,這邊還多列出了檔案的時間、作者⋯⋯等等資訊。
不過為什麼作者要列兩次?前面的 drwx------
又代表什麼?
這些問題,我們就留到明天吧!各位明天見!