1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
文件管理命令
文件管理有哪些命令:ls, cd, pwd, mkdir, rmdir, cp, rm, mv, touch, cat, more, less, head, tail等,下面我們就來詳細的說一下(只說常用的,不是命令全部)
(1). ls 命令
123456789101112-a :全部的文件,連同隱藏檔( 開頭為 . 的文件) 一起列出來 (常用)
-A :全部的文件,連同隱藏檔,但不包括 . 與 .. 這兩個目錄
-d :僅列出目錄本身,而不是列出目錄內的文件數據 (常用)
-f :直接列出結果,而不進行排序 (
ls
默認會以檔名排序!)
-h :將文件容量以人類較易讀的方式(例如 GB, KB 等等)列出來 (常用)
-i :列出 inode 號碼,inode 的意義下一章將會介紹 (常用)
-l :長數據串列出,包含文件的屬性與權限等等數據 (常用)
-n :列出 UID 與 GID 而非使用者與群組的名稱 (UID與GID會在用戶管理提到!)
-r :將排序結果反向輸出,例如:原本檔名由小到大,反向則為由大到小
-R :連同子目錄內容一起列出來,等于該目錄下的所有文件都會顯示出來 (常說的遞歸)
-S :以文件容量大小排序,而不是用檔名排序
-t :依時間排序,而不是用檔名
(2) cd 命令
12345678910111213141516cd
[相對路徑或絕對路徑]
# 最重要的就是目錄的絕對路徑與相對路徑,還有一些特殊目錄的符號羅!
[root@www ~]
# cd ~test
# 代表去到 vbird 這個使用者的家目錄,亦即 /home/test
[root@www vbird]
# cd ~
# 表示回到自己的家目錄,亦即是 /root 這個目錄
[root@www ~]
# cd
# 沒有加上任何路徑,也還是代表回到自己家目錄的意思喔
[root@www ~]
# cd ..
# 表示去到目前的上一級目錄,亦即是 /root 的上一級目錄的意思
[root@www /]
# cd -
# 表示回到剛剛的那個目錄,也就是 /root 羅~
[root@www ~]
# cd /var/spool/mail
# 這個就是絕對路徑的寫法!直接指定要去的完整路徑名稱
[root@www mail]
# cd ../mqueue
# 這個是相對路徑的寫法,我們由/var/spool/mail 去到/var/spool/mqueue 就這樣寫
(3). pwd 命令
1234567pwd
[-P] 選項與參數:
-P :顯示出確實的路徑,而非使用鏈接 (link) 路徑。
例:
pwd
cd
/var/mail
pwd
–P
/var/spool/mail
pwd
與
pwd
–P 顯示的路徑不同,大家清楚了吧!
(4). mkdir 命令
123456mkdir
[-mp] 目錄名稱 選項與參數:
-m :配置文件的權限喔!直接配置,不需要看默認權限 (
umask
)
-p :幫助你直接將所需要的目錄(包含上一級目錄)遞回創建起來!
例:
mkdir
-p test1
/test2/test3/test4
(一起創建)
mkdir
-m 744 test2
(5). rmdir 命令
1234rmdir
[-p] 目錄名稱 選項與參數:
-p :連同上一級“空的”目錄也一起刪除
例:
rmdir
-p test1
/test2/test3/test4
(全部刪除)
(6). rm 命令
12345rm
[-fir] 文件或目錄 選項與參數:
-f :就是 force 的意思,忽略不存在的文件,不會出現警告信息
-i :互動模式,在刪除前會詢問使用者是否動作
-r :遞回刪除?。∽畛S迷谀夸浀膭h除了(這是非常危險的選項)
我們一般常組合使用,
rm
–rf (刪除全部文件或目錄,大家得小心使用,因為刪除了就無法恢復了)
(7). mv 命令
12345mv
[-fiu]
source
destination 選項與參數:
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋
-u :若目標文件已經存在,且
source
比較新,才會升級 (update)
我們一般還可以用
mv
命令進行重命名(例:
mv
test
test
.bak )
(8). touch 命令
123456789101112131415touch
[-acdmt] 文件 選項與參數:
-a :僅修訂 access
time
-c :僅修改文件的時間,若該文件不存在則不創建新文件
-d :后面可以接欲修訂的日期而不用目前的日期,也可以使用 --
date
=
"日期或時間"
-m :僅修改 mtime
-t :后面可以接欲修訂的時間而不用目前的時間,格式為[YYMMDDhhmm]
補充:
我們在
ls
這個命令的介紹時(
ls
–l),有提到每個文件在linux底下都會記錄許多的時間參數, 其實是有三個主要的變動時間,那么三個時間的意義是什么呢?我在這里補充一下
modification
time
(mtime):
當該文件的“內容數據”變更時,就會升級這個時間!內容數據指的是文件的內容,而不是文件的屬性或權限喔
status
time
(ctime):
當該文件的“狀態 (status)”改變時,就會升級這個時間,舉例來說,像是權限與屬性被更改了,都會升級這個時間啊。
access
time
(atime):
當“該文件的內容被取用”時,就會升級這個讀取時間 (access)。舉例來說,我們使用
cat
去讀取
/etc/man
.config , 就會升級該文件的 atime 了
大家懂了吧!
(9). cat 命令
1234567cat
[-AbEnTv] 選項與參數:
-A :相當于-vET 的整合選項,可列出一些特殊字符而不是空白而已
-b :列出行號,僅針對非空白行做行號顯示,空白行不標行號
-E :將結尾的斷行字節 $ 顯示出來
-n :列印出行號,連同空白行也會有行號,與 -b 的選項不同 (常用)
-T :將 [tab] 按鍵以 ^I 顯示出來
-
v
:列出一些看不出來的特殊字符
(10). more 命令
12345678more
(一頁一頁翻動查看)
常用的快捷鍵:
空白鍵 (space):代表向下翻一行
Enter :代表向下翻一行
/字串 :代表在這個顯示的內容當中,向下搜尋字串這個關鍵字
:f :立刻顯示出檔名以及目前顯示的行數
q :代表立刻離開
more
,不再顯示該文件內容
b 或 Ctrl+b :代表往回翻頁,不過這動作只對文件有用
(11). less 命令
1234567891011less
(一頁一頁翻動)
less
與
more
區別: 在
more
的時候,我們并沒有辦法向前面翻, 只能往后面看,但若使用了
less
時,就可以使用 [pageup] [pagedown] 等按鍵的功能來往前往后翻看文件
常用的快捷鍵:
空白鍵 :向下翻動一頁
[pagedown]:向下翻動一頁
[pageup] :向上翻動一頁
/字串 :向下搜尋字串的功能
?字串 :向上搜尋字串的功能
n :重復前一個搜尋 (與 / 或 ? 有關!)
N :反向的重復前一個搜尋 (與 / 或 ? 有關!)
q :離開
less
這個程序
(12). head 命令 (取出前面幾行)
123
head
[-n number] 文件 選項與參數:
-n :后面接數字,代表顯示幾行的意思
(默認是前10行)
(13). tail 命令 (取出后面幾行)
1234
tail
[-n number] 文件 選項與參數:
-n :后面接數字,代表顯示幾行的意思 (默認后10行)
-f :表示持續查看后面所接的文件,要等到按下Ctrl+c才會結束
tail
的查看
(
tail
–f 非常有用,當我們看某些經常更新的日志時,例:
tail
-f
/var/log/maillog
)
(14). file 命令 (查看文件類型)
1234
例:
file
~/.bashrc --------ASCII 的純文字檔
file
/usr/bin/passwd
------------可執行文件
file
/var/lib/mlocate/mlocate
.db --------------- data 文件
總結 :
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
1. 命令執行狀態返回值
作為演示,我們鍵入一條命令 source /etc/profile,回車。
鍵入的命令到底有沒有執行成功呢?我們輸入 echo $? 來查看該命令執行狀態的返回值。返回值為 0,表示成功執行。
2016-09-24_14-09-51.jpg
我們再鍵入一條命令:source /etc,回車,然后再用 echo $? 查看。返回值為 1,表示該命令出錯。
2016-09-24_14-10-37.jpg
我們最后鍵入 mann ls,回車,然后用 echo $? 查看。返回值為 127,不為 0,同樣表示該命令出錯。
2016-09-24_14-11-21.jpg
2.命令行命令展開:
~:展開為用戶的主目錄
~USERNAME:展開為指定用戶的主目錄
{}:可承載一個以逗號分隔的列表,并將其展開為多個路徑
/tmp{a,b} – /tmp/a. /tmp/b
/tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
3、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
(2)、創建/tmp/mylinux目錄下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
(1):[root@localhost tmp]# mkdir {a,b}_{c,d}
(2)[root@localhost tmp]# mkdir -p mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
元數據定義: 數據(Metadata),又稱中介數據、中繼數據,為描述 數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。 可用命令stat查看文件的元數據 stat: 功能說明:顯示inode內容。 語 法:stat FILE
-bash-4.1# stat a.c File: a.cSize: 41 Blocks: 8 IO Block: 4096 regular fileDevice: fh/15d Inode: 1808648 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-09 23:38:06.000000000Modify: 2016-11-09 23:38:05.000000000Change: 2016-11-09 23:38:05.000000000
修改文件時間戳信息 命令:touch touch命令一般用來修改文件的時間,或者新建一個不存在的文件. 語法如下: touch [-acm][-r ref_file(參照文件)|-t time(時間值)] file(文件名) 參數說明: -a 修改文件 file 的存取時間. -c 不創建文件 file. -m 修改文件 file 的修改時間 -r ref_file 將參照文件 ref_file 相應的時間戳記的數值作為指定文件 file 時間戳記的新值. -t time 使用指定的時間值 time 作為指定文件 file 相應時間戳記的新值. 例子: touch a.txt 更新a.txt的存取和修改時間
-bash-4.1# touch a.txt-bash-4.1# stat a.txt File: a.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/15d Inode: 1847885 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-10 00:08:44.000000000Modify: 2016-11-10 00:08:44.000000000Change: 2016-11-10 00:08:44.000000000
touch -c a.txt 不創建文件
-bash-4.1# touch -c b.txt-bash-4.1# lsa.c a.txt
touch -r b.txt a.txt 更新a.txt的時間戳和b.txt相同
-bash-4.1# stat b.txt File: b.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/5d Inode: 1849094 Links: Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-10 00:13:02.00000000Modify: 2016-11-10 00:13:02.00000000Change: 2016-11-10 00:13:02.000000000-bash-4.1# stat a.txt File: a.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/5d Inode: 1847885 Links: Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-10 00:10:29.00000000Modify: 2016-11-10 00:10:29.00000000Change: 2016-11-10 00:10:29.000000000-bash-4.1# touch -r b.txt a.txt -bash-4.1# stat b.txt File: b.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/5d Inode: 1849094 Links: Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-11-10 00:13:02.00000000Modify: 2016-11-10 00:13:02.00000000Change: 2016-11-10 00:13:02.000000000
touch -t 162011011134.03 b.txt 設定文件的時間
-bash-4.1# touch -t 201611011134.03 b.txt -bash-4.1# stat b.txt File: b.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fh/5d Inode: 1849094
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
1.命令別名:alias
alias:顯示當前shell進程所有可用的命令別名 alias NAME="VALUE":命名別名 注意:在命令行中定義的別名,僅對當前shell進程有效,如果想永久有效,要定義配置文件 僅對當前用戶:~/.bashrc 對所有有效:/etc/bashrc
2016-09-24_14-53-29.jpg
2.使用管道符可以飲用另一個命令的執行結果
6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
原創文章,作者:a279854458,如若轉載,請注明出處:http://www.www58058.com/67067
寫的很好,有沒有感覺把圖片放上很丑,注意一下排版的問題,總結的也很到位,加油