Linux文件管理類命令
-
cp命令:copy 源文件;目標文件;
單源復制:cp [OPTION]… [-T] SOURCE DEST
多源復制:cp [OPTION]… SOURCE… DIRECTORY |
cp [OPTION]… -t DIRECTORY SOURCE…單源復制:cp [OPTION]... [-T] SOURCE DEST 如果DEST不存在:則事先創建此文件,并復制源文件的數據流至DEST中; 如果DEST存在: 如果DEST是非目錄文件:則覆蓋目標文件; 如果DEST是目錄文件:則先在DEST目錄下創建一個與源文件同名的文件,并復制其數據流; 多源復制:cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... 如果DEST不存在:錯誤; 如果DEST存在: 如果DEST是非目錄文件:錯誤; 如果DEST是目錄文件:分別復制每個文件至目標目錄中,并保持原名;
常用選項:
-i:交互式復制,即覆蓋之前提醒用戶確認; -f:強制覆蓋目標文件; -r, -R:遞歸復制目錄; -d:復制符號鏈接文件本身,而非其指向的源文件; -a:-dR --preserve=all, archive,用于實現歸檔; --preserv= mode:權限 ownership:屬主和屬組 timestamps: 時間戳 context:安全標簽 xattr:擴展屬性 links:符號鏈接 all:上述所有屬性
例:
1)多源復制[root@server1 nac]# cp -r mod log tmp 遞歸 源文件 源目錄 目的目錄
-
mv命令:move
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE..常用選項:
-i:交互式; -f:force
-
rm命令:remove rm [OPTION]… FILE…
常用選項:
-i:interactive -f:force -r: recursive
刪除目錄:rm -rf /PATH/TO/DIR
危險操作:rm -rf /*
參數-f是強制刪除,使用前要注意防止誤刪除,建議少用
建議用單獨的目錄來存放不用的文件,類似Windows的回收站
bash基本特性演示
bash特性之命令行返回值
bash命令執行之后,其狀態返回值保存于bash的特殊變量$?中,可以用命令echo $?來查看對應值 返回值分成兩類:
成功:0
失敗:1-255
不同的返回值代表不同的意義
例: [root@server1 ~]# cat /varr cat: /varr: No such file or directory [root@server1 ~]# echo $? 1 [root@server1 ~]# ls /varr ls: cannot access /varr: No such file or directory [root@server1 ~]# echo $? 2 [root@server1 ~]# [root@server1 ~]# [root@server1 ~]# ls /var account cache db games kerberos local log nis preserve spool yp adm crash empty gopher lib lock mail opt run tmp [root@server1 ~]# echo $? 0 [root@server1 ~]#
bash特性之命令行展開
~:自動展開為用戶的家目錄,或指定的用戶的家目錄;
{}:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑;
例如:/tmp/{a,b} 相當于 /tmp/a /tmp/b
實例可參考“實戰測驗”內容
文件元數據
元數據(metadata)主要指文件的屬性等相關信息,包含權限、大小、時間戳等,通過命令stat看到的信息都是元數據的內容。
-
元數據內容
[root@server1 ~]# stat /nac/test File: ‘/nac/test’ Size: 75 Blocks: 0 IO Block: 4096 directory Device: fd00h/64768d Inode: 104016110 Links: 4 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2016-12-10 05:50:24.307412852 -0500 Modify: 2016-12-10 05:59:28.702810562 -0500 Change: 2016-12-10 05:59:28.702810562 -0500 Birth: - [root@server1 ~]#
-
元數據之時間戳:
Access time:最近訪問時間
Modify time:最近修改(數據)時間
Change time:最近改動(元數據)時間
Birth time:創建時間
修改元數據時間戳:touch
touch [OPTION]… FILE…
-c: 指定的文件路徑不存在時不予創建;
-a: 僅修改access time;
-m:僅修改modify time;
-t STAMP ?? [[CC]YY]MMDDhhmm[.ss]例: 以上圖stat /nac/test 的結果為例 1)修改access time: [root@server1 ~]# touch -a /nac/test [root@server1 ~]# stat /nac/test File: ‘/nac/test’ Size: 75 Blocks: 0 IO Block: 4096 directory Device: fd00h/64768d Inode: 104016110 Links: 4 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2016-12-10 23:02:44.430190973 -0500 Modify: 2016-12-10 05:59:28.702810562 -0500 Change: 2016-12-10 23:02:44.430190973 -0500 Birth: - [root@server1 ~]# 2)修改modify time [root@server1 ~]# touch -m /nac/test [root@server1 ~]# stat /nac/test File: ‘/nac/test’ Size: 75 Blocks: 0 IO Block: 4096 directory Device: fd00h/64768d Inode: 104016110 Links: 4 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2016-12-10 23:02:44.430190973 -0500 Modify: 2016-12-10 23:05:04.587246017 -0500 Change: 2016-12-10 23:05:04.587246017 -0500 Birth: - [root@server1 ~]# 3)修改至指定時間 [root@server1 ~]# touch -a -t 201512011111.11 /etc/test [root@server1 ~]# stat /etc/test File: ‘/etc/test’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 35731198 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:etc_t:s0 Access: 2015-12-01 11:11:11.000000000 -0500 Modify: 2016-12-10 23:06:47.220821768 -0500 Change: 2016-12-10 23:06:47.220821768 -0500 Birth: - [root@server1 ~]#
注:access time和modify time一旦改變,change time也會跟著改變;但是change time不可直接修改
命令的別名及引用
-
alias 設置命令別名 獲取所有可用別名的定義:
~]# alias 定義別名:
~]# alias NAME=’COMMAND’
注意:僅對當前shell進程有效
永久保存:/etc/bashrc(全局)、~/.bashrc(個人)文件中保存
撤銷別名:
~]# unalias NAME
例: 1)查看當前的命令別名 [root@server1 ~]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [root@server1 ~]# 2)設置別名 [root@server1 ~]# alias Grep='grep -o' [root@server1 ~]# grep "UUID" /etc/fstab UUID=c114b923-c522-443a-8a3b-637836838a61 /boot xfs defaults 0 0 [root@server1 ~]# Grep "UUID" /etc/fstab UUID [root@server1 ~]# 3)取消別名 [root@server1 ~]# unalias Grep [root@server1 ~]# [root@server1 ~]# Grep "UUID" /etc/fstab bash: Grep: command not found... Similar command is: 'grep' [root@server1 ~]#
-
命令引用
引用指定命令的執行結果:
$(COMMAND)或`COMMAND`
即將$(COMMAND)或`COMMAND` 的執行結果(不是$?代表的狀態)作為前一個命令的參數例: [root@server1 ~]# echo "time is `date`" time is Sat Dec 10 23:27:31 EST 2016 [root@server1 ~]# [root@server1 test]# mkdir "$(date)" [root@server1 test]# ll total 12 -rw-r--r--. 1 root root 497 Dec 10 01:03 cut.txt drwxr-xr-x. 2 root root 50 Dec 10 00:43 diff.test -rw-r--r--. 1 root root 465 Dec 10 04:01 fstab.bak -rw-r--r--. 1 root root 28 Dec 10 01:59 IO.out drwxr-xr-x. 2 root root 6 Dec 10 23:39 Sat Dec 10 23:39:10 EST 2016 drwxr-xr-x. 2 root root 20 Dec 10 05:50 vim [root@server1 test]#
實戰測驗
1 創建/tmp命令下的ac,ad,bc,bd
mkdir /tmp/{a,b}_{c,d}
[root@server1 ~]# mkdir /tmp/{a,b}_{c,d} [root@server1 ~]# cd /tmp [root@server1 tmp]# ll total 28 drwxr-xr-x. 2 root root 6 Dec 10 08:16 a_c drwxr-xr-x. 2 root root 6 Dec 10 08:16 a_d drwxr-xr-x. 2 root root 6 Dec 10 08:16 b_c drwxr-xr-x. 2 root root 6 Dec 10 08:16 b_d
2 創建/tmp/mylinux目錄下的目錄
mkdir -pv /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}}
3 顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文件或目錄
ls -d /var/l*[0-9]*[[:lower:]]
4 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
ls -d /etc/[0-9]*[^0-9]
5 顯示/etc目錄下,以非字母開頭,后面跟了一個字母及其它任意長度任意字符的文件或目錄
ls -d /etc/[^[:alpha:]][[:alpha:]]*
6 在/tmp目錄下創建以tfile開頭,后面跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22
touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
7 復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
cp -r /etc/p*[^0-9] /tmp/mytest1
8 復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
cp -r /etc/*.d /tmp/mytest2
9 復制/etc目錄下所有以1或m或n開頭,以.com結尾的文件至/tmp/mytet3目錄中
cp /etc/[1mn]*.com /tmp/mytest3
原創文章,作者:N27_jiangyefan,如若轉載,請注明出處:http://www.www58058.com/79672
總結的非常好的,下了功夫的,希望您能牢記這些基礎知識,加油?。?!