Linux上文件可管理類命令,其常用的使用方法和相關示例
-
目錄管理類命令
目錄管理類命令包含:mkdir,rmdir
mkdir
使用說明及格式
移除空目錄 rmdir [OPTION]… DIRECTORY… |
常見選項及說明
-p –parents 創建時如果父目錄不存在,一并創建 -v –verbose 通常和p參數結合,顯示創建過程 -m –mode 創建時給定權限,如果沒有則按默認走(8進制) |
使用示例
-p 創建目錄,如果父目錄不存在,則一并創建
[root@localhost ~]# mkdir /tmp/a/b mkdir: cannot create directory ‘/tmp/a/b’: No such file or directory [root@localhost ~]# mkdir -p /tmp/a/b [root@localhost ~]# ll /tmp/ total 0 drwxr-xr-x. 3 root root 14 Aug 19 14:43 a drwxr-xr-x. 6 root root 50 Aug 12 06:32 man drwxr-xr-x. 2 root root 21 Aug 5 18:46 test |
-v 顯示創建過程,通常和p參數一起用
[root@localhost ~]# mkdir -v /tmp/b mkdir: created directory ‘/tmp/b’ [root@localhost ~]# mkdir -vp /tmp/c/d mkdir: created directory ‘/tmp/c’ mkdir: created directory ‘/tmp/c/d’ [root@localhost ~]# |
-m創建時給定權限,如果沒有則按默認走
[root@localhost ~]# mkdir -m 644 /tmp/asdf [root@localhost ~]# ll -d /tmp/asdf drw-r–r–. 2 root root 6 Aug 19 14:51 /tmp/asdf [root@localhost ~]# |
rmdir
使用說明及格式
移除空目錄 rmdir [OPTION]… DIRECTORY… |
常見選項及說明
-p 刪除某個目錄后沒如果父目錄為空,則一并刪除之 |
使用示例
[root@localhost ~]# ll /tmp/a/b/ total 0 [root@localhost ~]# rmdir /tmp/a/b/ [root@localhost ~]# ll /tmp/a total 0 [root@localhost ~]# mkdir /tmp/a/b [root@localhost ~]# rmdir -p /tmp/a/b/ rmdir: failed to remove directory ‘/tmp’: Directory not empty #刪到 tmp就沒法刪了,因為tmp不是空目錄 |
2. 文件查看類命令
文件查看類命令包括:
cat 、tac 、head tail 、more、less
cat
使用說明及格式
連接并顯示文本文件,盡量不要cat可執行文件 cat [OPTION]… [FILE]… |
常見選項及說明
-n –number 顯示行數 -E –show-ends 顯示行結束符,在linux文件中,每行的尾端顯示$ |
使用示例
-n –number 顯示行數
[root@localhost ~]# cat -n fstab 1 2 # 3 # /etc/fstab 4 # Created by anaconda on Fri Jul 29 10:33:43 2016 5 # 6 # Accessible filesystems, by reference, are maintained under '/dev/disk' 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 8 # 9 /dev/mapper/centos-root / xfs defaults 0 0 10 UUID=3c78a34b-fa45-4925-aa42-a21360786907 /boot xfs defaults 0 0 11 /dev/mapper/centos-home /home xfs defaults 0 0 12 /dev/mapper/centos-swap swap swap defaults 0 0 |
-E –show-ends 顯示行結束符,在linux文件中,每行的尾端顯示$
$ #$ # /etc/fstab$ # Created by anaconda on Fri Jul 29 10:33:43 2016$ #$ # Accessible filesystems, by reference, are maintained under '/dev/disk'$ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info$ #$ /dev/mapper/centos-root / xfs defaults 0 0$ UUID=3c78a34b-fa45-4925-aa42-a21360786907 /boot xfs defaults 0 0$ /dev/mapper/centos-home /home xfs defaults 0 0$ /dev/mapper/centos-swap swap swap defaults 0 0$ |
tac
使用說明及格式
和cat類似,顯示的內容相反。用于將文件已行為單位的反序輸出,即第一行最后顯示,最后一行先顯示。 tac [OPTION]… [FILE]… |
使用示例
[root@localhost ~]# tac fstab /dev/mapper/centos-swap swap swap defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 UUID=3c78a34b-fa45-4925-aa42-a21360786907 /boot xfs defaults 0 0 /dev/mapper/centos-root / xfs defaults 0 0 # # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # Accessible filesystems, by reference, are maintained under '/dev/disk' # # Created by anaconda on Fri Jul 29 10:33:43 2016 # /etc/fstab # |
more
使用說明及格式
以全屏幕的方式按頁顯示文本文件的內容 |
常見選項及說明
-d 在最下欄顯示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”,按h顯示內嵌命令幫助 -c不進行滾屏操作。每次刷新這個屏幕 。一般和“-#”和用 -#:指定每屏顯示的行數 |
使用示例
-d 在最下欄顯示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”,按h顯示內嵌命令幫助
-c不進行滾屏操作。每次刷新這個屏幕 。一般和“-#”和用
-#:指定每屏顯示的行數
[root@localhost ~]# more -d -10 -c /etc/init.d/functions # -*-Shell-script-*- # # functions This file contains functions to be used by most or all # shell scripts in the /etc/init.d directory. #
TEXTDOMAIN=initscripts
# Make sure umask is sane umask 022 |
注意事項
1).more命令內置了許多參數,通過-d 后-h可以看到
Most commands optionally preceded by integer argument k. Defaults in brackets. Star (*) indicates argument becomes new default. ——————————————————————————- <space> Display next k lines of text [current screen size] z Display next k lines of text [current screen size]* <return> Display next k lines of text [1]* d or ctrl-D Scroll k lines [current scroll size, initially 11]* q or Q or <interrupt> Exit from more s Skip forward k lines of text [1] f Skip forward k screenfuls of text [1] b or ctrl-B Skip backwards k screenfuls of text [1] ' Go to place where previous search started = Display current line number /<regular expression> Search for kth occurrence of regular expression [1] n Search for kth occurrence of last r.e [1] !<cmd> or :!<cmd> Execute <cmd> in a subshell v Start up /usr/bin/vi at current line ctrl-L Redraw screen :n Go to kth next file [1] :p Go to kth previous file [1] :f Display current file name and line number . Repeat previous command |
2).more命令,翻屏至文件尾部后自動退出,和man命令不同
3.touch命令
使用說明及格式
修改文件的時間戳及創建新的空文件 |
常見選項及說明
-c, –no-create 不創建新文件 -a 只改變訪問時間 -m 只改變修改時間 -t STAMP 使用指定的時間日期來代替當前時間 |
使用示例
-c 不創建新文件
[root@localhost ~]# touch /tmp/a [root@localhost ~]# ll /tmp/ 總用量 0 -rw-r–r–. 1 root root 0 8月 21 06:21 a [root@localhost ~]# touch -c /tmp/b [root@localhost ~]# ll /tmp/ 總用量 0 -rw-r–r–. 1 root root 0 8月 21 06:21 a [root@localhost ~]# |
-a 只改變訪問時間
[root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-21 06:23:23.614854159 +0800 Modify: 2016-08-21 06:21:53.115858242 +0800 Change: 2016-08-21 06:23:23.614854159 +0800 [root@localhost ~]# touch -a /tmp/a [root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-21 06:24:30.257862923 +0800 Modify: 2016-08-21 06:21:53.115858242 +0800 Change: 2016-08-21 06:24:30.257862923 +0800 [root@localhost ~]# |
-m 只改變修改時間
[root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-21 06:24:30.257862923 +0800 Modify: 2016-08-21 06:21:53.115858242 +0800 Change: 2016-08-21 06:24:30.257862923 +0800 [root@localhost ~]# touch -m /tmp/a [root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-21 06:24:30.257862923 +0800 Modify: 2016-08-21 06:25:25.179863049 +0800 Change: 2016-08-21 06:25:25.179863049 +0800 [root@localhost ~]# |
-t 指定使用的時間來替代當前時間
[root@localhost ~]# touch -t 201508210624.30 /tmp/a [root@localhost ~]# stat /tmp/a File: "/tmp/a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: fd00h/64768d Inode: 2627583 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-08-21 06:24:30.000000000 +0800 Modify: 2015-08-21 06:24:30.000000000 +0800 Change: 2016-08-21 06:31:43.474863766 +0800 |
4.文件管理命令
文件管理類命令:cp mv rm
cp
使用說明及格式
拷貝文件和目錄 單元復制:cp [OPTION]… [-T] SOURCE DEST 多源復制:cp [OPTION]… SOURCE… DIRECTORY |
常見選項及說明
-i, –interactive 交互式,在進行一些諸如覆蓋之類的操作時提示是否執行 -f:強制覆蓋 -R, -r, –recursive copy directories recursively 遞歸復制目錄 -d same as –no-dereference –preserve=links 如果復制的源文件是個符號鏈接,快捷方式,只復制連接符號鏈接本身,而不復制連接內容 -a, –archive 復制目錄,連接只保留本身,保留所有元屬性 archive 歸檔 same as -dR –preserve=all |
使用示例
-i 交互提示
[root@localhost ~]# cp fstab /tmp/ [root@localhost ~]# cp fstab /tmp/ cp:是否覆蓋"/tmp/fstab"? y [root@localhost ~]# |
-f 強制覆蓋而不提示
[root@localhost ~]# \cp -f fstab /tmp/fstab [root@localhost ~]# |
-R, -r, –recursive copy directories recursively 遞歸復制目錄
[root@localhost ~]# cp -r a /tmp/ [root@localhost ~]# ll /tmp/ total 4 drwxr-xr-x. 3 root root 14 Aug 23 00:59 a -rw-r–r–. 1 root root 541 Aug 23 00:57 fstab [root@localhost ~]# |
注意事項
cp [OPTION]… -t DIRECTORY SOURCE… 單源復制:cp [OPTION]… [-T] SOURCE DEST if DEST不存在:則事先創建此文件,并復制源文件的數據流到DEST中 if DEST存在: 1.DEST是非目錄文件:則覆蓋目標文件 //危險操作 2.DEST是目錄文件:
多源復制:cp [OPTION]… SOURCE… DIRECTORY if DEST不存在:錯誤 if DEST存在: if DEST 是非目錄文件 if DEST 是目錄文件:分別復制每個文件至目標目錄中,并保持原名 |
mv
使用說明及格式
移動或者重命名文件 mv [OPTION]… [-T] SOURCE DEST |
常見選項及說明
-i, –interactive 交互式,在進行一些諸如覆蓋之類的操作時提示是否執行 -f:強制覆蓋 |
使用示例
-i 交互提示
[root@localhost ~]# mv fstab /tmp/fstab mv: overwrite ‘/tmp/fstab’? |
-f 強制覆蓋而不提示
[root@localhost ~]# mv -f fstab /tmp/fstab [root@localhost ~]# ll total 12 drwxr-xr-x. 3 root root 14 Aug 23 00:59 a -rw——-. 1 root root 1654 Aug 10 05:34 anaconda-ks.cfg -rw-r–r–. 1 root root 1664 Aug 11 21:45 CentOS-Base.repo -rw-r–r–. 1 root root 2862 Aug 10 22:01 passwd |
重命名文件
[root@localhost tmp]# ll total 4 drwxr-xr-x. 3 root root 14 Aug 23 00:59 a -rw-r–r–. 1 root root 541 Aug 10 22:05 fstab [root@localhost tmp]# mv fstab fstab.test [root@localhost tmp]# ll total 4 drwxr-xr-x. 3 root root 14 Aug 23 00:59 a -rw-r–r–. 1 root root 541 Aug 10 22:05 fstab.test [root@localhost tmp]# |
rm
使用說明及格式
清楚文件或目錄 rm [OPTION]… FILE… |
常見選項及說明
-f, –force 強行移除而不提示 -r, -R, –recursive 遞歸移除,移除文件及目錄 |
使用示例
[root@localhost ~]# ls /tmp/ asd asdf b c f man test [root@localhost ~]# rm -rf /tmp/* [root@localhost ~]# ls /tmp/ [root@localhost ~]# |
注意
所有不用的文件建議不要直接刪除,而是移動至某個專用目錄(模擬回收站) 不要直接刪除用root賬戶 刪除根 |
2.bash的工作特性之命令狀態返回值和命令行展開所涉及的內容及其示例
bash的基礎特性:
命令狀態返回結果:
bash通過狀態返回值來輸出結果:
成功:0
失敗:1-255
命令執行完畢后其狀態返回值保存于bash的特殊變量"?"中
[root@localhost ~]# ls /tmp/ > /dev/null [root@localhost ~]# echo $? 0 [root@localhost ~]# lss /tmp/ &> /dev/null [root@localhost ~]# echo $? 127 |
3.命令行展開練習:
1.創建/tmp目錄下的:a_c, a_d, b_c, b_d
[root@localhost tmp]# ls /tmp/ [root@localhost tmp]# mkdir -pv /tmp/{a,b}_{c,d} mkdir: created directory ‘/tmp/a_c’ mkdir: created directory ‘/tmp/a_d’ mkdir: created directory ‘/tmp/b_c’ mkdir: created directory ‘/tmp/b_d’ [root@localhost tmp]# ls /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
[root@localhost tmp]# 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}} mkdir: created directory ‘/tmp/mylinux’ mkdir: created directory ‘/tmp/mylinux/bin’ mkdir: created directory ‘/tmp/mylinux/boot’ mkdir: created directory ‘/tmp/mylinux/boot/grub’ mkdir: created directory ‘/tmp/mylinux/dev’ mkdir: created directory ‘/tmp/mylinux/etc’ mkdir: created directory ‘/tmp/mylinux/etc/rc.d’ mkdir: created directory ‘/tmp/mylinux/etc/rc.d/init.d’ mkdir: created directory ‘/tmp/mylinux/etc/sysconfig’ mkdir: created directory ‘/tmp/mylinux/etc/sysconfig/network-scripts’ mkdir: created directory ‘/tmp/mylinux/lib’ mkdir: created directory ‘/tmp/mylinux/lib/modules’ mkdir: created directory ‘/tmp/mylinux/lib64’ mkdir: created directory ‘/tmp/mylinux/proc’ mkdir: created directory ‘/tmp/mylinux/sbin’ mkdir: created directory ‘/tmp/mylinux/sys’ mkdir: created directory ‘/tmp/mylinux/tmp’ mkdir: created directory ‘/tmp/mylinux/usr’ mkdir: created directory ‘/tmp/mylinux/usr/local’ mkdir: created directory ‘/tmp/mylinux/usr/local/bin’ mkdir: created directory ‘/tmp/mylinux/usr/local/sbin’ mkdir: created directory ‘/tmp/mylinux/var’ mkdir: created directory ‘/tmp/mylinux/var/lock’ mkdir: created directory ‘/tmp/mylinux/var/log’ mkdir: created directory ‘/tmp/mylinux/var/run’ [root@localhost tmp]# tree /tmp/mylinux/ /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 24 directories, 0 files |
4.文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息
文件的元數據信息包括文件類型,權限,屬主,屬組,文件大小,時間戳
通過ls -l命令和stat命令等可以查看文件的元數據,touch命令可以修改時間戳信息
[root@localhost tmp]# ls -l /tmp/ total 4 drwxr-xr-x. 2 root root 6 Aug 23 21:11 a_c drwxr-xr-x. 2 root root 6 Aug 23 21:11 a_d drwxr-xr-x. 2 root root 6 Aug 23 21:11 b_c drwxr-xr-x. 2 root root 6 Aug 23 21:11 b_d drwxr-xr-x. 14 root root 4096 Aug 23 21:16 mylinux 第一位:文件類型:- d c b .. rwx:文件屬主的權限 r-x:文件屬組的權限 r-x:其他用戶(非屬主,屬組)的權限 .:表示文件有隱藏屬性 2:表是文件被硬連接的次數 root:第一個 文件的屬主 root:第二個 文件的屬組 4096 ,6:文件的大小(單位是字節) Aug 23 21:11 :最后一次被修改的時間 [root@localhost tmp]# stat a_c File: ‘a_c’ Size: 6 Blocks: 0 IO Block: 4096 directory Device: fd00h/64768d Inode: 139650784 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-08-23 21:11:43.114677871 +0800 Modify: 2016-08-23 21:11:43.114677871 +0800 Change: 2016-08-23 21:11:43.114677871 +0800 Birth: – |
touch命令可以修改文件的時間戳,見上文示例 |
5.何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
通過alias可以設置命令別名
alias
使用說明及格式
查看及設置命令別名 alias(選項)(參數) |
使用示例
[root@localhost tmp]# alias alias cls='clear' alias cp='cp -i' [root@localhost tmp]# alias dd='reboot' [root@localhost tmp]# alias alias cls='clear' alias cp='cp -i' alias dd='reboot' |
注意
linux的機制: 直接在shell中使用命令alias是直接改入內存的,設置后立即生效,但是更隨shell的生命周期 如果希望長期有效,可以把命令寫入配置文件 .bashrc中,但是寫入文件的情況下,配置不會立即生效 可以通過 . .bashrc 或者 source .bashr來生效 |
命令引用
通過$(COMMAND)
`COMMAND`
來使用命令引用的結果
[root@localhost tmp]# echo "$(cat /etc/issue)" \S Kernel \r on an \m [root@localhost tmp]# echo `cat /etc/issue` \S Kernel \r on an \m |
6.顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄?
[root@localhost tmp]# ls /var/l*[0-9]*[a-z] /var/l1l: /var/lbb3bl: |
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄?
[root@localhost tmp]# ls /etc/[[:digit:]]*[^[:digit:]] /etc/1xb: /etc/2xxb: |
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄?
[root@localhost tmp]# ls /etc/[^[:alpha:]][[:alpha:]]* /etc/1xb: /etc/2xxb: /etc/_test: |
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22?
[root@localhost tmp]# touch tfile-`date +%Y-%m-%d-%H-%M-%S` [root@localhost tmp]# ll -rw-r–r–. 1 root root 0 Aug 23 22:13 tfile-2016-08-23-22-13-06 |
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中?
ll /tmp/mytest1 &> /dev/null || mkdir /tmp/mytest1 ; \cp -rfv /etc/p*[^0-9] /tmp/mytest1 |
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中?
ll /tmp/mytest2 &> /dev/null || mkdir /tmp/mytest2 ; \cp -rfv /etc/*.d /tmp/mytest2 |
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中?
ll /tmp/mytest3 &> /dev/null || mkdir /tmp/mytest3 ; \cp -rfv /etc/[lmn]*.conf /tmp/mytest3 |
原創文章,作者:N22-蘇州-striker,如若轉載,請注明出處:http://www.www58058.com/39084
下次注意標題要通順,代碼格式可以再規范一下,可以參考一下這個同學的做法:http://www.www58058.com/41567