Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示

目錄與路徑

相對路徑與絕對路徑

絕對路徑:路徑的寫法【一定由根目錄 / 寫起】

/usr/share/doc 這個目錄。

相對路徑:路徑的寫法【不是由 / 寫起】

由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: 【cd ../man】這就是相對路徑的寫法。相對路徑意指相對于當前的工作目錄

cd (切換目錄)

.         代表當前目錄

..        代表上一層目錄

–         代表前一個工作目錄

~         代表【目前用戶身份】所在的自家目錄

~account  代表 account 這個用戶的自家家目錄

我們通過實例來看一下這些特殊命令的使用方法:

[root@yangxu ~]# cd /home

[root@yangxu home]# cd .

[root@yangxu home]# cd ..

[root@yangxu /]# cd ~

[root@yangxu ~]# cd ~yangxu

~account表示 account 這個用戶的自家家目錄 ,我如果想進入 yangxu 這個用戶的主目錄,輸入 cd ~yangxu即可

[root@yangxu yangxu]# cd –

/root

pwd (顯示當前所在的目錄)

[root@yangxu ~]# pwd [-P]

參數:

-P  :顯示出確實的路徑,而非使用鏈接 (link) 路徑。(P是大寫)

范例:

[root@yangxu ~]# pwd

/root   <== 顯示出當前所在的目錄

[root@yangxu ~]# cd /var/mail

[root@yangxu mail]# pwd

/var/mail

[root@yangxu mail]# pwd -P

/var/spool/mail   <== 怎么回事?有沒有加 -P 差很多

[root@yangxu mail]# ls -l /var/mail

lrwxrwxrwx.  1 root root   10 3月  30 10:37 mail -> spool/mail

看到這里應該知道為啥了吧?因為 /var/mail 是連結文件,連結到 /var/spool/mail 

加上 pwd -P 的參數后,會不以連結文件的數據顯示,而是顯示正確的完整路徑!

mkdir (建立新目錄)

[root@yangxu ~]# mkdir [-mp] 目錄名稱

參數:

-m :配置文件目錄的權限!我們可以自己設定自己想要的權限,而不需要使用umask定義的默認權限

-p :幫助你直接將所需要的目錄遞歸建立起來!

范例:

[root@yangxu ~]# cd /home

[root@yangxu home]# mkdir test    <== 建立一名為 test 的新目錄

[root@yangxu home]# mkdir test1/test2/test3/test4

mkdir: 無法創建目錄"test1/test2/test3/test4": 沒有那個文件或目錄

[root@linux tmp]# mkdir -p test1/test2/test3/test4

加了這個 -p 的參數,可以自行幫我們建立多層目錄!

[root@yangxu home]# mkdir -p test1/test2/test3/test4

[root@yangxu home]#  mkdir -m 711 test2

[root@yangxu home]#  ls -l

drwxr-xr-x.  2 root    root         4096 4月  21 13:08 test

drwxr-xr-x.  3 root    root         4096 4月  21 13:10 test1

drwx–x–x.  2 root    root         4096 4月  21 13:11 test2

-m 來強制設定屬性,否則系統會使用默認屬性。

rmdir (刪除"空"目錄)

[root@yangxu ~]# rmdir [-p] 目錄名稱

參數:

-p :連同上層『空的』目錄也一起刪除

范例:

[root@yangxu home]# ls -l

drwxr-xr-x.  2 root    root         4096 4月  21 13:08 test

drwxr-xr-x.  3 root    root         4096 4月  21 13:10 test1

drwx–x–x.  2 root    root         4096 4月  21 13:11 test2

[root@yangxu home]# rmdir test

[root@yangxu home]# rmdir test1

rmdir: 刪除 "test1" 失敗: 目錄非空

[root@yangxu home]# rmdir -p test1/test2/test3/test4/

[root@yangxu home]# ls -l

drwx–x–x.  2 root    root         4096 4月  21 13:11 test2

利用 -p 這個參數,立刻就可以將 test1/test2/test3/test4 一次刪除~

不過要注意的是,這個 rmdir 僅能【刪除空的目錄】!

管理文件與目錄

ls (查看文件和目錄)

[root@yangxu ~]# ls [-aAdfFhilRS] 目錄名稱

[root@yangxu ~]# ls [–color={none,auto,always}] 目錄名稱

[root@yangxu ~]# ls [–full-time] 目錄名稱

參數:

-a  :全部的文件,連同隱藏文件( 開頭為 . 的目錄) 一起列出來~

-A  :全部的文件,連同隱藏文件,但不包括 . 與 .. 這兩個目錄,一起列出來~

-d  :僅列出目錄本身,而不是列出目錄內的文件數據

-f  :直接列出結果,而不進行排序 (ls 預設會以文件名排序!)

-F  :根據文件、目錄等信息,給予附加數據結構,例如:

      *:代表可執行文件; /:代表目錄; =:代表 socket 檔案; |:代表 FIFO 文件;

-h  :列出文件的打小(例如GB、KB等等)

-i  :列出 inode 位置,而非列出文件屬性;

-l  :長數據串行出,包含文件的屬性等等數據;

-n  :列出 UID 與 GID 而非使用者與群組的名稱 (UID與GID會在賬號管理提到!)

-r  :將排序結果反向輸出,例如:原本文件名由小到大,反向則為由大到?。?/p>

-R  :連同子目錄內容一起列出來;

-S  :以文件容量大小排序!

-t  :依時間排序

–color=never  :不要依據文件特性給予顏色顯示;

–color=always :顯示顏色

–color=auto   :讓系統自行依據設定來判斷是否給予顏色

–full-time    :以完整時間模式 (包含年、月、日、時、分) 輸出

–time={atime,ctime} :輸出 access 時間或 改變權限屬性時間 (ctime) 

cp (復制命令)

[root@yangxu ~]# cp [-adfilprsu] 源文件(source) 目的文件(destination)

[root@yangxu ~]# cp [options] source1 source2 source3 …. directory

參數:

-a  :相當于 -pdr 的意思;

-d  :若來源文件為鏈接文件的屬性(link file),則復制鏈接文件屬性而非檔案本身;

-f  :為強制 (force) 的意思,若有重復或其他疑問時,不會詢問使用者,而強制復制;

-i  :若目的文件(destination)已經存在時,在覆蓋時會先詢問是否真的動作!

-l  :進行硬式連結 (hard link) 的連結文件建立,而非復制文件本身;

-p  :連同文件的屬性一起復制過去,而非使用默認屬性;

-r  :遞歸持續復制,用于目錄的復制行為;

-s  :復制成為符號鏈接文件 (symbolic link),亦即『快捷方式』文件;

-u  :若 destination 比 source 舊才更新 destination 

rm (刪除文件或目錄)

[root@yangxu ~]# rm [-fir] 文件或目錄

參數:

-f  :就是 force 的意思,強制移除;

-i  :互動模式,在刪除前會詢問使用者是否動作

-r  :遞歸刪除!最常用在目錄的刪除了

[root@yangxu tmp]# rm bashrc 

rm:是否刪除普通文件 "bashrc"?y

[root@yangxu tmp]# rm wtmp wtmp2

rm:是否刪除普通文件 "wtmp"?y

rm:是否刪除普通文件 "wtmp2"?y

mv (移動文件與目錄、文件重命名)

[root@yangxu ~]# mv [-fiu] source destination

[root@yangxu ~]# mv [options] source1 source2 source3 …. directory

參數:

-f  :force 強制的意思,強制直接移動而不詢問;

-i  :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!

-u  :若目標文件已經存在,且 source 比較新,才會更新 (update)

查看文件內容

cat (concatenate)

[root@yangxu~]# cat [-AEnTv]

參數:

-A  :相當于 -vET 的整合參數,可列出一些特殊字符~

-E  :將結尾的斷行字符 $ 顯示出來;

-n  :打印出行號;

-T  :將 [tab] 按鍵以 ^I 顯示出來;

-v  :列出一些看不出來的特殊字符

我們通過實例來看一下cat命令的常用使用方法:

[root@yangxu ~]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=yangxu

[root@yangxu ~]# cat -n /etc/sysconfig/network

     1  NETWORKING=yes

     2  HOSTNAME=yangxu

[root@yangxu ~]# cat -A /etc/sysconfig/network

NETWORKING=yes$

HOSTNAME=yangxu$

tac (反向顯示)

[root@yangxu ~]# tac /etc/sysconfig/network

HOSTNAME=yangxu

NETWORKING=yes

tac是將cat反寫,所以它的功能就與cat相反

nl (顯示時添加行號)

[root@yangxu ~]# nl [-bnw] 文件

參數:

-b  :指定行號指定的方式,主要有兩種:

      -b a :表示不論是否為空行,也同樣列出行號;

      -b t :如果有空行,空的那一行不要列出行號;

-n  :列出行號表示的方法,主要有三種:

      -n ln :行號在屏幕的最左方顯示;

      -n rn :行號在自己字段的最右方顯示,且不加 0 ;

      -n rz :行號在自己字段的最右方顯示,且加 0 ;

-w  :行號字段的占用的位數。

[root@yangxu ~]# nl /etc/issue

     1  CentOS release 6.4 (Final)

     2  Kernel \r on an \m

[root@yangxu ~]# nl -b a /etc/issue

     1  CentOS release 6.4 (Final)

     2  Kernel \r on an \m

     3

[root@yangxu ~]# nl -b a -n rz /etc/issue

000001  CentOS release 6.4 (Final)

000002  Kernel \r on an \m

000003

自動在自己字段的地方補上 0 了 預設字段是六位數,如果想要改成 3 位數 可以加上 -w 這個參數

[root@yangxu ~]# nl -b a -n rz -w 3 /etc/issue

001     CentOS release 6.4 (Final)

002     Kernel \r on an \m

003

head (取出前幾行)

[root@yangxu ~]# head [-n number] 文件 

參數:

-n  :后面接數字,代表顯示幾行的意思

[root@yangxu ~]#  head /etc/man.config

默認顯示前面十行

[root@yangxu ~]# head -n 20 /etc/man.config

顯示前 20 行

tail (取出后面幾行)

[root@yangxu ~]# tail [-n number] 文件 

參數:

-n  :后面接數字,代表顯示幾行的意思

范例:

[root@yangxu ~]#tail /etc/man.config

默認顯示最后的十行

[root@yangxu ~]# tail -n 20 /etc/man.config

顯示最后的 20 行

修改文件時間與創建新文件

每個文件在Linux下面都會記錄3個主要的修改時間:

   modification time (mtime): 當該文件的 內容數據變更時

   status time (ctime): 當該文件的 狀態改變時

   access time (atime): 當 該文件的內容被修改 時

[root@yangxu ~]# ls -l /etc/passwd

[root@yangxu ~]# ls -l –time=atime /etc/passwd

[root@yangxu ~]# ls -l –time=ctime /etc/passwd

touch 命令  (修改文件時間與創建新文件)

[root@yangxu ~]# touch [-acdmt] 文件

選項與參數:

-a  :僅修訂 access time;

-c  :僅修改文件的時間,若該文件不存在則不創建新文件;

-d  :后面可以接欲修訂的日期而不用目前的日期,也可以使用 –date="日期或時間"

-m  : 僅修改 mtime ;

-t  : 后面可以接欲修訂的時間而不用目前的時間,格式為[YYMMDDhhmm]

接下來我們通過一些實例來看一下touch命令的這幾個參數的使用方法:

新建一個空的文件

[root@yangxu ~]# cd /home/

[root@yangxu home]# touch test.txt

[root@yangxu home]# ls -l test.txt 

-rw-r–r–. 1 root root 0 4月  25 22:07 test.txt

注意,這個文件的大小是 0 !在默認的狀態下,如果 touch 后面有接文件,

則該文件的三個時間 (atime/ctime/mtime) 都會更新為目前的時間。若該文件不存在,

則會主動的創建一個新的空的文件??!

文件與目錄的默認權限與隱藏權限

umask (文件默認權限)

umask就是指定 "目前使用者在創建文件或目錄時候的權限默認值"

[root@yangxu home]# umask

0022

[root@yangxu home]# umask -S

u=rwx,g=rx,o=rx

查看方式有兩種,一種可以直接輸入 umask ,

一種則是加入 -S (Symbolic) 這個選項會以符號顯示出權限

搜索文件

which (尋找"執行文件")

[root@yangxu ~]# which [-a] command

參數:

-a :將所有可以找到的指令均列出,而不止第一個被找到的指令名稱

[root@yangxu ~]# which passwd  –>> 列出第一個找到的可執行文件

/usr/bin/passwd    

[root@yangxu ~]# which -a tracepath   –>> 列出所有找到的同名可執行文件

/bin/tracepath

/usr/sbin/tracepath

whereis (尋找特定文件)

[root@yangxu ~]# whereis [-bmsu] 文件名或目錄名

參數:

-b    :只找 binary 的文件

-m    :只找在說明文件 manual 路徑下的文件

-s    :只找 source 來源文件

-u    :沒有說明文件的文件!

[root@yangxu ~]# whereis passwd

passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

任何與 passwd 有關的文件名都會被列出來

[root@yangxu ~]# whereis -b passwd

passwd: /usr/bin/passwd /etc/passwd

[root@yangxu ~]# whereis -m passwd

passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

locate (尋找特定文件)

[root@yangxu ~]# locate filename

[root@yangxu ~]# locate passwd

/etc/passwd

/etc/passwd-

/etc/dovecot/conf.d/auth-passwdfile.conf.ext

/etc/pam.d/passwd

/etc/samba/smbpasswd

/etc/security/opasswd

/etc/sysconfig/ha/web/secure/passwd.php

/lib64/security/pam_passwdqc.so

/lib64/security/pam_unix_passwd.so

/usr/bin/RSA_SecurID_getpasswd

find

[root@yangxu ~]# find [PATH] [option] [action]

參數:

與時間有關的參數:

   -atime n :n 為數字,意義為在 n 天之前的『一天之內』被 access 過的文件;

   -ctime n :n 為數字,意義為在 n 天之前的『一天之內』被 change 過狀態的文件;

   -mtime n :n 為數字,意義為在 n 天之前的『一天之內』被 modification 過的文件;

   -newer file :file 為一個存在的文件,意思是說,只要檔案比 file 還要新,

                 就會被搜索出來2. 與使用者或組名有關的參數:

   -uid n :n 為數字,這個數字是用戶的賬號 ID,亦即 UID ,這個 UID 是記錄在

            /etc/passwd 里面與賬號名稱對應的數字。這方面我們會在第四篇介紹。

   -gid n :n 為數字,這個數字是組名的 ID,亦即 GID,這個 GID 記錄在

            /etc/group,

   -user name :name 為使用者賬號名稱!例如 dmtsai 

   -group name:name 為組名,例如 users ;

   -nouser    :尋找檔案的擁有者不存在 /etc/passwd 的人!

   -nogroup   :尋找檔案的擁有群組不存在于 /etc/group 的文件!

                當您自行安裝軟件時,很可能該軟件的屬性當中并沒有文件擁有者,

                這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。

與文件權限及名稱有關的參數:

   -name filename:搜尋文件名為 filename 的文件;

   -size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的文件。這個 SIZE 的規格有:

                   c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB

                   還要大的文件,就是『 -size +50k 』

   -type TYPE    :搜尋文件的類型為 TYPE 的,類型主要有:一般正規文件 (f),

                   裝置文件 (b, c), 目錄 (d), 連結文件 (l), socket (s), 

                   及 FIFO (p) 等屬性。

   -perm mode  :搜尋文件屬性『剛好等于』 mode 的檔案,這個 mode 為類似 chmod

                 的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755 !

   -perm -mode :搜尋文件屬性【必須要全部囊括 mode 的屬性】的文件,舉例來說,

                 我們要搜尋 -rwxr–r– ,亦即 0744 的文件,使用 -perm -0744,

                 當一個檔案的屬性為 -rwsr-xr-x ,亦即 4755 時,也會被列出來,

                 因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr–r– 的屬性了。

   -perm +mode :搜尋文件屬性【包含任一 mode 的屬性】的檔案,舉例來說,我們搜尋

                 -rwxr-xr-x ,亦即 -perm +755 時,但一個文件屬性為 -rw——-

                 也會被列出來,因為他有 -rw…. 的屬性存在!

額外可進行的動作:

   -exec command :command 為其他指令,-exec 后面可再接額外的指令來處理搜尋到

                   的結果。

   -print        :將結果打印到屏幕上,這個動作是預設動作!

將過去系統上面 24 小時內有改變過內容 (mtime) 的文件列出

[root@yangxu ~]# find / -mtime 0

那個 0 是重點!0 代表目前的時間,所以,從現在開始到 24 小時前,

有變動過內容的檔案都會被列出來!那如果是三天前的 24 小時內?

find / -mtime 3 ,意思是說今天之前的 3*24 ~ 4*24 小時之間

有變動過的檔案都被列出的意思!同時 -atime 與 -ctime 的用法相同。

我們現在知道 atime, ctime 不 mtime 的意義,如果你想要找出一天內被更改過的癿文件名, 可以使用上述實例一的作法。但如果我想要找出 (4 天內被更改過的文件名)呢?那

可以使用【find /var -mtime -4 】。那如果是【4 天前的那一天】就用【 find /var -mtime 4 】。有沒有加上【+, -】差別非常的大!我們可以用簡單的圖來表示一下:

圖中最右邊為目前的時間,越往左邊則代表越早之前的時間軸。由圖 我們可以清楚的知道:

尋找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出

[root@xialuo ~]# find /etc -newer /etc/passwd

-newer 用在分辨兩個文件之間的新舊關系是很有用的!

搜尋 /home 底下屬于 yangxu 的文件

[root@yangxu ~]# find /home -user yangxu

當我們要找出任何一個用戶在系統當中的所有文件時,

就可以利用這個指令將屬于某個使用者的所有文件都找出來!

搜尋系統中不屬于任何人的文件

[root@yangxu ~]# find / -nouser

通過這個命令,可以輕易的就找出那些不太正常的文件。

找出文件名為 passwd 這個文件

[root@yangxu ~]# find / -name passwd

利用這個 -name 可以搜尋文件名!

搜尋文件屬性為 f (一般文件) 的文件

[root@yangxu ~]# find /home -type f

這個 -type 的屬性也很有用!尤其是要找出那些怪異的文件,

例如 socket 與 FIFO 文件,可以用 find /var -type p 或 -type s 來找!

搜尋文件當中含有 SGID/SUID/SBIT 的屬性

[root@yangxu ~]# find / -perm +7000 

所謂的 7000 就是 —s–s–t ,那么只要含有 s 或 t 的就列出,

所以當然要使用 +7000 ,使用 -7000 表示要含有 —s–s–t 的所有三個權限,

將上個范例找到的文件使用 ls -l 列出來

[root@yangxu ~]# find / -perm +7000 -exec ls -l {} \;

注意到,那個 -exec 后面的 ls -l 就是額外的指令,

而那個 {} 代表的是【由 find 找到的內容】的意思~所以, -exec ls -l {}

就是將前面找到的那些檔案以 ls -l 列出長的數據!至于 \; 則是表示

-exec 的指令到此為止的意思。 意思是說,整個指令其實只有在 

-exec (里面就是指令下達) \;

也就是說,-exec 最后一定要以 \; 結束才行!

找出系統中,大于 1MB 的文件

[root@yangxu ~]# find / -size +1000k

原創文章,作者:N24_yangxu,如若轉載,請注明出處:http://www.www58058.com/57913

(0)
N24_yangxuN24_yangxu
上一篇 2016-11-06
下一篇 2016-11-06

相關推薦

  • 使用httpd反向代理模塊實現tomcat負載均衡集群(下)

    上一篇講解了http使用mod_http和mod_ajp代理模塊實現tomcat負載均衡,下面我們來講解使用http的mod_jk實現taomcat的負載均衡集群: 注意:http的mod_jk是第三方擴展模塊,在新http版本中以不支持,在httpd 1.3和2.0效果較好 6、使用mod_jk實現tomcat負載均衡集群 6.1安裝mod_jk [roo…

    Linux干貨 2015-07-21
  • 馬哥教育網絡班N22期+第五周課程練習

    1、顯示當前系統上root、fedora或user1用戶的默認shell; ~]# grep -E "^(root|user1|fedora)" /etc/passwd | awk -F: '{ print $1 $7 }' root/bin/bash user1/bin/bash fedora/bin/bash 2、…

    Linux干貨 2016-10-17
  • 宣言

    我是一個新手  但是我想認真努力學好linux     有朝一日能成為別人眼中的大牛再回頭看看現在 不會后悔  付出必然會有回報  雖千萬人吾往矣!

    Linux干貨 2016-10-24
  • LAMP快速部署及LAMP組合深入講解-2

      lamp SQL 數據管理模型:層次模型、網狀模型、關系模型數據分類:結構化數據、半結構化數據、非結構化數據 關系模型 數據庫:一個方案、一個項目 二維關系: 表:row, column 索引:index 視圖:view SQL接口:Structured Query Language;類似于OS的shell接口;也提供編程功能; ANSI: S…

    2017-06-04
  • Linux基礎 文件系統目錄標準FHS

    概述 本文前半部分介紹了 Linux 文件系統目錄標準 FHS (Filesystem Hierarchy Standard)。后半部分整理了個人學習 Linux 過程中涉及到的部分文件和路徑,激勵自己堅持更新,以期完善。 背景 由于Linux是遵循開源協議,任何人都可以根據Linux的核心代碼制作和發行版本。如果每個人都按自己的喜好,在/目錄下創建目錄、存…

    Linux干貨 2016-08-07
  • EXT4文件系統的初步使用

    文件系統的類型多種多樣,我們接觸得比較多的當屬Windows系統上的FAT32和NTFS。 而EXT文件系統(Extended filesystem)則是linux上常見的文件系統類型。 目前最新的版本是ext4,常見于CentOS6之中。 1.查看當前系統中有沒有掛載使用中的EXT4文件系統,可以使用mount命令: 2.如何創建一個EXT4的文件系統(f…

    系統運維 2016-02-14
欧美性久久久久