一. Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
主要命令有:ls , cp , pwd , rm , mv
ls 查看
語法:
ls(選項)(參數)
-a:顯示所有檔案及目錄(ls內定將檔案名或目錄名稱爲“.”的視爲影藏,不會列出);
-A:顯示除影藏文件“.”和“..”以外的所有文件列表;
-C:多列顯示輸出結果。這是默認選項;
-l:與“-C”選項功能相反,所有輸出信息用單列格式輸出,不輸出爲多列;
-d:僅顯示目錄名,而不顯示目錄下的內容列表。顯示符號鏈接文件本身,而不顯示其所指向
的目錄列表;
-r: 逆序顯示文件;
-R:遞歸處理,將指定目錄下的所有文件及子目錄一併處理;
-h:對文件大小進行單位換算,可能影響精度
示例:
ls -la ---顯示詳細的所有文件,包括隱藏文件;
ls -lh ---查看文件大小,用人類的方法查看。
cp 拷貝
語法:
cp [OPTION]... [-T] SOURCE DEST ------單源複製
cp [OPTION]... SOURCE... DIRECTORY ----多源複製
cp [OPTION]... -t DIRECTORY SOURCE..
參數:
-a :相當於 -pdr 的意思;
-d: 若源文件爲連接文件的屬性(link file),則複製 連接文件屬性而非文件本身。
-f: 強制的意思,若有重複或其它疑問時,不會詢問用戶,而強制複製;
-i: 若目標文件已存在,在覆蓋時會先詢問是否真的操作。
-l: 建立硬連接的連接文件,而非複製文件本身。
-p:與文件的屬性一起復制,而非使用默認屬性。
-r: 遞歸持續複製,用於目錄的複製操作。
-s: 複製成符號連接文件,即“快捷方式”文件。
-u:若目標文件比源文件舊,更新目標文件
示例:
cp abcfile.txt rootfile.txt
將源文件複製到當前路徑並且改名;
cp -p abcfile.txt rootfile2.txt
將源文件複製到當前路徑並且改名,並且連屬性也一起復制;
cp -i abcfile.txt rootfile3.txt
當目的文件已存在,將會有提示是否蓋;
cp -r /tmp/ /root/test/
複製目錄
cp -s abcfile.txt abcfile_s.txt
軟鏈接文件
cp -l abcfile.txt abcfile_l.txt
硬鏈接文件
mv 移動
語法:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
參數:
--backup=<備份模式>:若需覆蓋文件,則覆蓋前先行備份;
-b:當文件存在時,覆蓋前,爲其創建一個備份;
-f:若目標文件或目錄與現有的文件或目錄重複,則直接覆蓋現有的文件或目錄;
-i:交互式操作,覆蓋前先行詢問用。
如果源文件與目標文件或目標 目錄中的文件同名,則詢問用戶是否覆蓋目標文件。
用戶輸入”y”,表示將覆蓋目標文件;
輸入”n”,表示取消對源文件的移動。
這樣可以避免誤將文件覆蓋。 --strip-trailing-slashes:刪除源文件中的斜槓“/”;
-S<後綴>:爲備份文件指定後綴,而不使用默認的後綴;
--target-directory=<目錄>:指定源文件要移動到目標目錄;
-u:當源文件比目標文件新或者目標文件不存在時,才執行移動操作。
示例:
mv abcfile.txt /root/
pwd 顯示工作目錄路徑
語法:
pwd [OPTION]...
參數
--help:顯示幫助信息;
--version:顯示版本信息。
rm
語法:
rm [OPTION]... FILE...
參數:
-f:就是force的意思,強制刪除。
-i :交互模式,在刪除前諮詢用戶;
-r: 遞歸刪除。常用在目錄的刪除
示例:
rm -f rootfile2.txt ---強制刪除文件
rm -fr test ---強制刪除目錄
二. bashr的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
命令或程序的執行狀態結果。狀態結果分兩類:成功或失敗,可通過bash的特殊變量$?來查看;
命令或程序執行成功時返回:0;
命令或程序執行失敗時返回:1-255。
例:
命令正常:
[root@Cenots7-1 ~]# pwd
/root
[root@Cenots7-1 ~]# echo $?
0
命令失敗:
[root@Cenots7-1 ~]# f
bash: f: command not found
[root@Cenots7-1 ~]# echo $?
127
命令行展:
~:展開爲用戶的主目錄;
[root@Cenots7-1 ~]# cd ~
[root@Cenots7-1 ~]# pwd
/root
~USERNAME:展開爲指定用戶的主目錄;
[root@Cenots7-1 ~]# cd ~abc
[root@Cenots7-1 abc]#
{}:可承載一個以逗號分隔的列表,並將其展開爲多個路徑;
[root@Cenots7-1 bashtest]# touch {a,b}
[root@Cenots7-1 bashtest]# ls
a b
三.請使用命令行展開功能來完成以下練習。
(1)、創建 /tmp 目錄下的:a_c, a_d, b_c, b_d
[root@Cenots7-1 tmp]# touch {a_{c,d},b_{c,d}}
(2)、創建/tmp/mylinux目錄下的:
[root@Cenots7-1 mylinux]# mkdir -pv {bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network- scripts},lib/modules,lib64,proc,sbin,sys}
四. 文件的元數據信息有哪些,分別表示什麼含義,如何查看?如何修改文件的時間戳信息。
文件的元數據包括:
文件名(File);
大小(Size);
數據塊(Blocks);
IO塊(IO Block);
設備(Device);
節點號(Inode);
硬鏈接(Links);
權限(Access);
文件所屬主(Uid);
文件所屬組(Gid);
最近訪問時間 (Access Time);
最近文件修改時間(Modify Time);
最近文件屬性更改時間(Change Time);
可通過stat 命令查看
**stat**
語法:
stat [OPTION]... FILE...
時間戳:
Access: 2018-09-26 20:45:20.551079349 +0800
Modify: 2018-09-26 20:45:06.798078129 +0800
Change: 2018-09-26 20:45:06.798078129 +0800
示例:
[root@Cenots7-1 ~]# stat ag.txt
File: 'ag.txt'
Size: 7 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 33582155 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2018-09-26 20:45:20.551079349 +0800
Modify: 2018-09-26 20:45:06.798078129 +0800
Change: 2018-09-26 20:45:06.798078129 +0800
Birth: -
可通過touch 命令修改時間戳信息。
** touch**
touch [OPTION]... FILE...
-c: 指定的文件路徑不存在時不予創建;
-a: 僅修改access time;
-m: 僅修改modify time;
-t: STAMP
[[CC]YY]MMDDhhmm[.ss]
例:
[root@Cenots7-1 ~]# touch -c ag.txt ----access,modify,change 的時間全部改變;
[root@Cenots7-1 ~]# touch -a ag.txt ----只改變access 時間;
[root@Cenots7-1 ~]# touch -m ag.txt ----modify與change 的時間都改變;
五.如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果。
** alias ** --命令別名
~]#alias NAME='COMMAND'
撤銷別名:
~]#unalias NAME
注意:如用aiais 命令設置別名,只對該進程有效。
例:
[root@Cenots7-1 lib64]# alias pw='pwd' ----對pwd 設置別名爲pw
[root@Cenots7-1 lib64]# unalias pw ---取消pwd 別名設置
在命令中引用另一個命令的執行結果。
$(COMMAND)
例:
[root@Cenots7-1 ~]# mkdir $(date +%H-%M-%S)
---在執行mkdir 之前先執行()裏的 命令並將其輸出的結果作爲mkdir 的參數。
六. 顯示/var 目錄下所有以1開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
[root@Cenots7-1 var]# ls -d ./1?[[:lower:]]
./13a
七. 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[root@Cenots7-1 etc]# ls -d ./[[0-9]*[^0-9]
./2abc
八. 顯示/etc目錄 下,以非字母開頭,後面 跟了一個字母以及其它任意長度任意字符的文件或目錄。
[root@Cenots7-1 etc]# ls -d [^[:lower:]][a-z]*
2a 2abc
九. 在/tmp 目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22
[root@Cenots7-1 tmp]# mkdir tfile-$(date +%F-%H-%M-%S)
十. 複製/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@Cenots7-1 etc]# mkdir -p /tmp/mytest1
[root@Cenots7-1 etc]# cp -R p*[^[:digit:]] /tmp/mytest1
十一.複製 /etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
[root@Cenots7-1 etc]# mkdir -p /tmp/mytest2
[root@Cenots7-1 etc]# cp -a *.d /tmp/mytest2
十二. 複製/etc/目錄下所有以1或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
[root@Cenots7-1 mytest2]# mkdir -p /tmp/mytest3
[root@Cenots7-1 etc]# cp [1mn]*.conf /tmp/mytest3/