①Linux文件管理命令常用方法
Linux常見文件類型
-:files,常規文件
d: directory,目錄文件
b: block device,塊設備文件
c:character device,字符設備文件
l:symbolic link,符號鏈接文件
p: pipe,命名管道
s: socket,套接字文件
命令管理工具指南:cp、rm、mv
1. cp(copy)復制:命令格式
單源復制:cp [OPTION]… [-T] SOURCE DEST
多源復制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
常用參數
-r:遞歸復制目錄及其子目錄內的所有內容
-a:相當于-dR –preserve=all
-p:保持指定文件的原有屬性
-d:等于–no-dereference –preserve=links
-f:強制覆蓋
當目標文件夾下有一個和源文件夾一樣的同名文件,那么在操作這個cp命令時,系統會提示,如果想跳過這個直接加上f 就可以強制覆蓋!
2. rm(Remove)刪除,移除:命令格式
rm [OPTION]… FILE…
常用參數
-i:interactive (默認rm是‘rm -i’的別名)
-f:force
-r: recursive
-v:顯示指令的詳細過程
刪除目錄:rm -rf / #謹慎使用該命令 ^_^ 不要手賤
例1:刪除home目錄下的test里的所有文件,文件夾。
rm -rf /home/test
3. mv(move)剪切,重命名:命令格式
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
常用參數
-i: 交互式
-f: force
例1:將test重命名為TEST
mv test TEST
例2:將/home/test目錄移動到/etc目錄下
mv /home/test /etc
★注意:使用mv時候,請確認目標目錄位置,mv在同一個硬盤分區上操作是inode號是不變的,
mv在同一個硬盤分區上操作是inode號是不變的,無論文件多大都很快,
是因為只是修改了文件對應的指針。跨分區是執行復制操作,所以很慢。
②bash的工作特性,相關示例
bash特性之一:命令別名
alias NAME='COMMAND'
bash的特性之二:命令歷史
命令語法格式:
history [-c] [-d OFFSET] [n]
history -anrw [FILENAME]
history -ps VALUE [VALUE…]
常用參數
-c: 清空命令歷史;
-d offset(偏移量):刪除指定命令歷史,offset為history顯示出來的命令數字;
-r: 從文件讀取命令歷史至歷史列表中;
-w:把歷史列表中的命令追加至歷史文件中;
history # 顯示最近的#條命令;
bash特性之三:快捷鍵
Ctrl+a:跳轉至命令行行首;
Ctrl+e:跳轉至命令行行尾;
Ctrl+u:刪除行首至光標所在處之間的所有字符;
Ctrl+k:刪除光標所在處至行尾的所有字符;
Ctrl+l:清屏,相當于clear;
bash的特性之四:命令補全和路徑補全
1.命令查找和補全機制:
(1) 查找內部命令;
(2) 根據PATH環境變量中設定的目錄,自左而右逐個搜索目錄下的文件名;
(3) 給定開頭的部分字符串如果能惟一標識某命令程序文件,則直接補全;不能惟一標識某命令程序文件,再擊tab鍵一次,會給出列表;
2.路徑補全:
在給定起始路徑下,以對應路徑下的打頭字串逐一匹配起始路徑下每個文件:
TAB按鍵;如果能惟一標識,則直接補全;否則,再一次tab,給出列表;
3.命令行展開
~:自動展開為用戶的家目錄,或指定的用戶的家目錄;
{}:花括號展開??沙休d一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑;
bash的特性之五:命令行展開:
1)、命令行展開;
以某些bash能夠解釋的符號來代替命令中的某些參數。
~:展開為用戶的家目錄;
例1:切換至家目錄
cd ~;pwd
/root
{}:可承載一個以逗號分隔的列表,并將其展開為多個路徑;
例2:在/tmp/d目錄下創建f1,f2,f3三個文件
touch /tmp/d/f{1,2,3}
bash
bash特性之六:命令的執行狀態結果:
1)、bash的基礎特性之狀態值返回:在bash中使用一個特殊的變量$?來保存上一個命令的執行狀態結果。
0表示成功,
1-255表示失敗
③ 使用命令行展開功能實現習題
1.創建tmp目錄下的:a_c,a_d,b_c,b_d;
mkdir {a,b}{_c,_d}
2.創建/tmp/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
mkdir -p tmp/mylinux {{bin,dev,lib64,proc,sbin,sys,tmp,boot/grup,lib/modules,var/{lock,log,run},usr/local/{bin,sbin},etc/{rc.d/init.d,sysconfig/network-scripts}}}}
3. 文件的元數據信息有哪些?分別代表什么含義?如何查看?如何修改時間戳信息?
元數據信息:文件名稱、屬主屬組、文件訪問權限、uid、gid、三個時間戳(centos7是四個)、inode號等等
訪問時間access time:讀一次這個文件的內容,這個時間就會更新。比如對這個文件運用 more、cat等命令。ls、stat命令都不會修改文件的訪問時間。
修改時間modify time:修改時間是文件內容最后一次被修改時間。比如:vi后保存文件。ls -l列出的時間就是這個時間。
狀態改變時間change time:是該文件的i節點最后一次被修改的時間,通過chmod、chown命令修改一次文件屬性,這個時間就會更新。
查看命令:stat filename
[root@localhost mylinux]# stat bin
File: ‘bin’
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: fd00h/64768d Inode: 71268759 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-12-12 15:19:52.198280184 +0800 //第一次的時間
Modify: 2016-12-12 15:19:42.192280550 +0800
Change: 2016-12-12 15:19:42.192280550 +0800
Birth: –
修改時間戳信息:touch [option] filename
touch命令:
touch – change file timestamps
touch [OPTION]… FILE…
-c: 指定的文件路徑不存在時不予創建;
-a: 僅修改access time;
-m:僅修改modify time;
-t 指定時間:[[CC]YY]MMDDhhmm[.ss]
[root@localhost mylinux]# touch -a bin //修改文件的訪問時間
[root@localhost mylinux]# stat bin
File: ‘bin’
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: fd00h/64768d Inode: 71268759 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-12-12 15:48:10.714218002 +0800 //時間已經更新
Modify: 2016-12-12 15:19:42.192280550 +0800
Change: 2016-12-12 15:48:10.714218002 +0800
Birth:
[root@localhost mylinux]# touch -m bin //修改文件的編輯時間
Modify: 2016-12-12 15:57:33.883197385 +0800 //時間已經更新
4. 文件別名的定義,如何在命令中引用另一個命令的執行結果。
alias命令
alias NAME='COMMAND' //只對當前shell進程有效,結束后得重新來再次定義
unalias NAME //撤銷別名
例子:
[root@localhost mylinux]# alias A='cd /home' //將A定義為使用cd 進入home目錄
[root@localhost mylinux]# A //此時要進入home目錄無需在cd /home,直接使用A即可
[root@localhost home]# //切換到home目錄下
*引用命令的執行結果:使用$()或者 “*
④EXERCISE
1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現一個數字(可以有其他字符)的文件或目錄
ls -d /var/l*[0-9]*[[:lower:]]
2、顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄
ls -d /etc/[0-9]*[^0-9]
3、顯示/etc目錄下,以非字母開頭,后面跟一個字母及其它任意長度任意字符的文件或目錄
ls -d /etc/[^[:alpha:]][[:alpha:]]*
4、在/tmp目錄下創建以tfile開頭,后跟當前日期或時間的文件,文件名形如:tfile-2016-05-27-9-32-22
touch /tmp/tfile-$(date +%F-%H-%M-%S)
5、復制/etc目錄下,所有以p開頭,以非數字結尾的文件或目錄至/tmp/mytest1目錄
cp -a /etc/p*[^0-9] /tmp/mytest1
6、復制/etc目錄下,所有以.d結尾的文件或目錄至/tmp/mytest2目錄下
cp -a /etc/*.d /tmp/mytest2
7、復制/etc目錄下,所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄下
cp -r /etc/[lmn]*.conf /tmp/mytest3
原創文章,作者:Powercat,如若轉載,請注明出處:http://www.www58058.com/63616