一.linux上的文件管理命令都有哪些,其常用的使用方法及其相關示例演示
cp復制命令:
-i:若目標文件存在,提示是否覆蓋目標文件,此選項為已寫入alias里,使用時為默認選項
[root@localhost ~]# ls /tmp/test/
fstab issue passwd
[root@localhost ~]# cp /etc/fstab /tmp/test/
cp: overwrite ‘/tmp/test/fstab’? n (輸入'y'為覆蓋,‘n’為拒絕覆蓋)
-r:遞歸復制目錄
[root@localhost ~]# cp -r /etc /tmp/
[root@localhost ~]# ls /tmp/
etc fstab test
-d:若源文件為鏈接文件,則復制鏈接文件本身而非文件本身
[root@localhost ~]# ln -s /tmp/fstab /tmp/fstab.link (在/tmp目錄下創建文件fstab的鏈接文件fstab.link)
[root@localhost ~]# ll /tmp (查看源文件和鏈接文件屬性)
total 12
drwxr-xr-x. 76 root root 4096 Aug 20 11:57 etc
-rw-r–r–. 1 root root 617 Aug 20 11:40 fstab
lrwxrwxrwx. 1 root root 10 Aug 20 12:06 fstab.link -> /tmp/fstab (第一個字符‘l’表示此文件是鏈接文件)
drwxr-xr-x. 2 root root 43 Aug 20 11:35 test
(不加選項‘-d’)
[root@localhost ~]# cp /tmp/fstab.link ./
[root@localhost ~]# ll
total 12
-rw——-. 1 root root 958 Aug 6 06:17 anaconda-ks.cfg
-rw-r–r–. 1 root root 617 Aug 20 12:11 fstab.link (可見復制的為源文件本身屬性,并非鏈接文件本身,因為第一字符為‘-’)
-rw-r–r–. 1 root root 23 Aug 20 11:09 issue.txt
(加選項‘-d’)
[root@localhost ~]# cp -d /tmp/fstab.link ./fstab.link2
[root@localhost ~]# ll
total 12
-rw——-. 1 root root 958 Aug 6 06:17 anaconda-ks.cfg
-rw-r–r–. 1 root root 617 Aug 20 12:11 fstab.link
lrwxrwxrwx. 1 root root 10 Aug 20 12:17 fstab.link2 -> /tmp/fstab (復制的是鏈接文件本身屬性,并非源文件本身,第一個字符為‘l’)
-rw-r–r–. 1 root root 23 Aug 20 11:09 issue.txt
-p:連同文件屬性一起復制,而非使用默認屬性
查看源文件issue屬性
[root@localhost ~]# ll /etc/issue
-rw-r–r–. 1 root root 23 Dec 9 2015 /etc/issue
不加選項-p
[root@localhost ~]# cp /etc/issue /tmp/issue1
[root@localhost ~]# ll /tmp/issue1
-rw-r–r–. 1 root root 23 Aug 20 12:35 /tmp/issue1 (與源文件屬性不一樣,創建的時間變了)
加上選項-p
[root@localhost ~]# cp -p /etc/issue /tmp/issue2
[root@localhost ~]# ll /tmp/issue2
-rw-r–r–. 1 root root 23 Dec 9 2015 /tmp/issue2 (文件屬性與源文件屬性一致)
-a:相當于‘-pdr’組合,這里就不演示了
mv:文件或目錄移動和重命名
[root@localhost ~]# mv /etc/issue /tmp/ (移動/etc/issue文件到/tmp目錄下)
[root@localhost ~]# ll /etc/issue
ls: cannot access /etc/issue: No such file or directory (查詢不到/etc/issue文件信息)
[root@localhost ~]# ll /tmp/issue
-rw-r–r–. 1 root root 23 Dec 9 2015 /tmp/issue (已經移動到/tmp/目錄下了)
將/tmp/issue重命名
[root@localhost ~]# ls /tmp/
issue
[root@localhost ~]# mv /tmp/issue /tmp/issue2
[root@localhost ~]# ls /tmp/
issue2
補充:mv目錄時,不用加‘-r’選項
多源移動時,最后的目標文件必須是目錄
同時也擁有‘-i’選項,詢問是否覆蓋
rm:刪除文件或目錄命令
刪除/tmp目錄下的issue2文件
[root@localhost ~]# ls /tmp/
issue2
[root@localhost ~]# rm /tmp/issue2
rm: remove regular file ‘/tmp/issue2’? y (同時選項‘-i’也是默認的)
[root@localhost ~]# ls /tmp/
-f:強制刪除,不會提示用戶
強制刪除/tmp目錄下的fstab文件
[root@localhost ~]# ls /tmp/
fstab
[root@localhost ~]# rm -f /tmp/fstab (此處沒有詢問用戶是否刪除)
[root@localhost ~]# ls /tmp
-r:遞歸刪除目錄
刪除/tmp/test/目錄
[root@localhost ~]# ls /tmp/
test
[root@localhost ~]# rm -r /tmp/test/
rm: remove directory ‘/tmp/test’? y
[root@localhost ~]# ls /tmp/
二.bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
命令返回值狀態:
返回值0:執行成功
[root@localhost ~]# ll
total 4
-rw——-. 1 root root 958 Aug 13 07:46 anaconda-ks.cfg
[root@localhost ~]# echo $?
0 (返回值0)
返回值(1-255):執行失敗
[root@localhost ~]# ll -d /home/test
ls: cannot access /home/test: No such file or directory
[root@localhost ~]# echo $?
2 (返回值1-255之間的數字)
命令行展開:
返回用戶主目錄
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cd ~
[root@localhost ~]#
在/tmp下創建test1,test2,test3目錄
[root@localhost ~]# mkdir /tmp/{test1,test2,test3}
[root@localhost ~]# ls /tmp
ks-script-cR5LUy test1 test2 test3 yum.log
三.請使用命令行展開功能來完成以下練習:
(1)創建/tmp目錄下的:a_c,a_d,b_c,b_d
[root@localhost ~]# touch /tmp/{a_{c,d}},b_{c,d}}
[root@localhost ~]# ls /tmp/
a_c} a_d} b_c b_d ks-script-cR5LUy mylinux yum.log
(2)創建/tmp/mylinux目錄下的:
/tmp/mylinux
├── bin
├── boot
│ └── grup
├── 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 ~]# mkdir – p /tmp/mylinux/{bin,boot/grup,/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 ~]# tree -d /tmp/mylinux
/tmp/mylinux
├── bin
├── boot
│ └── grup
├── 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 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 1040 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 12075 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:passwd_file_t:s0
Access: 2016-08-14 18:12:30.456000517 -0400
Modify: 2016-08-13 07:45:37.605912316 -0400
Change: 2016-08-13 07:45:37.606912316 -0400
Birth: –
File——文件名
Size——文件大小,默認單位(B)
Blocks——文件所占塊的數量
IO Block—— 文件系統的Block大小,默認單位(B)
regular file——文本文件
Device: fd00h/64768d——指明存儲文件的設備
Inode: 12075 ——文件的inode值
Links: 1——文件被硬鏈接的數量
Access: (0644/-rw-r–r–)——文件的訪問權限
Uid: ( 0/ root)——文件所有者
Gid: ( 0/ root)——文件所屬組
Access: 2016-08-14 18:12:30.456000517 -0400——文件最近的訪問時間
Modify: 2016-08-13 07:45:37.605912316 -0400——文件最近的修改時間
Change: 2016-08-13 07:45:37.606912316 -0400——文件屬性最近的改變時間
修改文件的時間戳信息:
先查看test文件當前時間戳信息:
[root@localhost ~]# stat ./test
Access: 2016-08-15 11:19:03.849323742 -0400
Modify: 2016-08-15 11:19:03.849323742 -0400
Change: 2016-08-15 11:19:03.849323742 -0400
修改test文件的atime時間戳:
[root@localhost ~]# touch -a –date="2004-10-08 13:23:45" ./test
再查看test文件的狀態:
[root@localhost ~]# stat ./test
Access: 2004-10-08 13:23:45.000000000 -0400 (時間修改為上面命令里指定的時間)
Modify: 2016-08-15 11:19:03.849323742 -0400
Change: 2016-08-15 11:34:58.463263349 -0400
修改test文件的mtime時間戳:
[root@localhost ~]# touch -m –date="2005-09-15 10:20:23" ./test
查看一下:
[root@localhost ~]# stat ./test
Access: 2004-10-08 13:23:45.000000000 -0400
Modify: 2005-09-15 10:20:23.000000000 -0400 (時間已改變)
Change: 2016-08-15 11:47:10.994217005 -0400
五.如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果
定義命令別名:alias命令
定義‘lld’為‘ls -ld’命令的別名
[root@localhost ~]# alias "lld=ls -ld"
[root@localhost ~]# lld /etc
drwxr-xr-x. 76 root root 8192 Aug 15 09:27 /etc
在命令中引用另一個命令的執行結果
進入當前內核的模塊目錄:
[root@localhost ~]# cd /lib/modules/$(uname -r)/kernel/
[root@localhost kernel]# pwd
lib/modules/3.10.0-327.el7.x86_64/kernel
六.顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文件或目錄
[root@localhost ~]# ls /var/l*[0-9]*[a-z]
ls: cannot access /var/l*[0-9]*[a-z]: No such file or directory
七.顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
[root@localhost ~]# ls /etc/[0-9]*[^[:digit:]]
ls: cannot access /etc/[0-9]*[^[:digit:]]: No such file or directory
八.顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其他任意長度任意字符的文件或目錄
[root@localhost ~]# ls /etc/[^[:alpha:]][[:alpha:]]*
ls: cannot access /etc/[^[:alpha:]][[a-z]]*: No such file or directory
九.在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件
[root@localhost ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
[root@localhost ~]# ls /tmp
ks-script-cR5LUy mylinux tfile-2016-08-15-13-41-55 tfile-2016-08-15-13-42-31 yum.log
十.復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中
[root@localhost ~]# mkdir /tmp/mytest1
[root@localhost ~]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1
pam.d passwd passwd- pki plymouth pm popt.d postfix ppp prelink.conf.d printcap profile profile.d protocols python
十一.復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中
[root@localhost ~]# mkdir /tmp/mytest2
[root@localhost ~]# cp -r /etc/*.d /tmp/mytest2
[root@localhost ~]# ls /tmp/mytest2
bash_completion.d cron.d dracut.conf.d ld.so.conf.d modules-load.d popt.d rc0.d rc3.d rc6.d rwtab.d sysctl.d yum.repos.d binfmt.d depmod.d grub.d logrotate.d my.cnf.d prelink.conf.d rc1.d rc4.d rc.d statetab.d tmpfiles.d chkconfig.d dnsmasq.d init.d modprobe.d pam.d profile.d rc2.d rc5.d rsyslog.d sudoers.d xinetd.d
十二.復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中
[root@localhost ~]# mkdir /tmp/mytest3
[root@localhost ~]# cp -r /etc/[l,m,n]*.conf /tmp/mytest3
[root@localhost ~]# ls /tmp/mytest3
ld.so.conf libaudit.conf libuser.conf locale.conf logrotate.conf man_db.conf mke2fs.conf nsswitch.conf
原創文章,作者:heianyangguo,如若轉載,請注明出處:http://www.www58058.com/35833
寫的很好,排版還可以在漂亮一點,加油,3大題2小題在看看原題的要求