一.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.178linux.com/35833
评论列表(1条)
写的很好,排版还可以在漂亮一点,加油,3大题2小题在看看原题的要求