一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
CP
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
-i 以交换形式拷贝文件
[15:03:44 root@qa36 /tmp]#cp -i file_1 file_2 cp:是否覆盖"file_2"? y [15:03:54 root@qa36 /tmp]#ll 总用量 4 -rw-r--r-- 1 root root 0 8月 9 15:03 file_1 -rw-r--r-- 1 root root 0 8月 9 15:03 file_2
-r 递归操作
[15:55:18 root@qa36 /tmp]#cp directroy_1/ directroy_2/ cp: 略过目录"directroy_1/" [15:58:02 root@qa36 /tmp]#cp -r directroy_1/ directroy_2/
-p 制时保留文件属性
[15:13:17 root@qa36 /tmp]#ls -lrt file_1 -rw-r--r-- 1 root root 0 8月 9 15:03 file_1 [15:13:52 root@qa36 /tmp]#cp -p file_1 file_2 [15:14:07 root@qa36 /tmp]#cp file_1 file_3 [15:14:23 root@qa36 /tmp]#ls -lrt file* -rw-r--r-- 1 root root 0 8月 9 15:03 file_2 -rw-r--r-- 1 root root 0 8月 9 15:03 file_1 -rw-r--r-- 1 root root 0 8月 9 15:14 file_3
-P 只拷贝符号链接文件(只拷贝符号链接文件)
[15:39:52 root@qa36 /tmp]#ll 总用量 8 drwxr-xr-x 2 root root 4096 8月 9 15:22 directroy_1 -rw-r--r-- 1 root root 0 8月 9 15:03 file_1 lrwxrwxrwx 1 root root 6 8月 9 15:39 file_2 -> file_1 drwxr-xr-x 2 root root 4096 8月 9 13:38 hsperfdata_root [15:39:52 root@qa36 /tmp]#cp file_2 file_3 [15:40:51 root@qa36 /tmp]#ll 总用量 8 drwxr-xr-x 2 root root 4096 8月 9 15:22 directroy_1 -rw-r--r-- 1 root root 0 8月 9 15:03 file_1 lrwxrwxrwx 1 root root 6 8月 9 15:39 file_2 -> file_1 -rw-r--r-- 1 root root 0 8月 9 15:40 file_3 [15:40:53 root@qa36 /tmp]#cp -P file_2 file_4 [15:41:07 root@qa36 /tmp]#ll 总用量 8 drwxr-xr-x 2 root root 4096 8月 9 15:22 directroy_1 -rw-r--r-- 1 root root 0 8月 9 15:03 file_1 lrwxrwxrwx 1 root root 6 8月 9 15:39 file_2 -> file_1 -rw-r--r-- 1 root root 0 8月 9 15:40 file_3 lrwxrwxrwx 1 root root 6 8月 9 15:41 file_4 -> file_1
-a 会保留原文件或目录的属性
[15:50:08 root@qa36 /tmp]#ll ./directroy_1/ 总用量 0 -rw-r--r-- 1 root root 0 8月 9 15:47 file_1 lrwxrwxrwx 1 root root 6 8月 9 15:48 file_2 -> file_1 [15:52:04 root@qa36 /tmp]#cp -a directroy_1/ directroy_2/ [15:52:47 root@qa36 /tmp]#ll ./directroy_2/directroy_1/ 总用量 0 -rw-r--r-- 1 root root 0 8月 9 15:47 file_1 lrwxrwxrwx 1 root root 6 8月 9 15:48 file_2 -> file_1
MV
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
移动文件
[16:01:39 root@qa36 /tmp]#mv file_1 directroy_1/ [16:04:35 root@qa36 /tmp]#ll 总用量 16 drwxr-xr-x 2 root root 4096 8月 9 16:04 directroy_1 -rw-r--r-- 1 root root 0 8月 9 16:01 file_2 -rw-r--r-- 1 root root 0 8月 9 16:01 file_3 [16:04:43 root@qa36 /tmp]#ll directroy_1/ 总用量 0 -rw-r--r-- 1 root root 0 8月 9 16:01 file_1
移动多个文件
[16:06:07 root@qa36 /tmp]#mv file_2 file_3 directroy_2/ [16:06:21 root@qa36 /tmp]#ll 总用量 16 drwxr-xr-x 2 root root 4096 8月 9 16:04 directroy_1 drwxr-xr-x 3 root root 4096 8月 9 16:06 directroy_2 drwxr-xr-x 3 root root 4096 8月 9 15:52 directroy_3 [16:06:22 root@qa36 /tmp]#ll directroy_2/ 总用量 4 -rw-r--r-- 1 root root 0 8月 9 16:01 file_2 -rw-r--r-- 1 root root 0 8月 9 16:01 file_3
移动目录
[16:06:25 root@qa36 /tmp]#mv directroy_1 directroy_4 [16:07:35 root@qa36 /tmp]#ll directroy_4/ 总用量 0 -rw-r--r-- 1 root root 0 8月 9 16:01 file_1
重命名文件或目录
我们也用 mv 命令来重命名文件或目录。不过目标位置和源位置必须相同才可以。然后文件名必须不同。 [16:09:41 root@qa36 /tmp]#mv file_1 file_2
-i 使用交互模式
[16:13:32 root@qa36 /tmp]#mv -i file_1 file_2 mv:是否覆盖"file_2"? y [16:13:38 root@qa36 /tmp]#
-f 强制覆盖
[16:14:36 root@qa36 /tmp]#mv -f file_1 file_2
rm
rm [OPTION]... FILE...
-i 交互模式
[16:22:47 root@qa36 /tmp]#rm -i file_1 rm:是否删除普通空文件 "file_1"?y
-r 递归删除某个目录下文件以及子目录
[16:22:58 root@qa36 /tmp]#rm -r directroy_2/
-f 强制执行
[16:25:51 root@qa36 /tmp]#rm -rf directroy_3/
二、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
命令执行状态返回值
echo $? 返回 0,表示该函数成功执行完毕 [16:59:43 root@qa36 /tmp]#mkdir directroy_1 [16:59:51 root@qa36 /tmp]#echo $? 0 返回1~255,则说明命令执行过程中发生了错误。 [16:59:57 root@qa36 /tmp]#mkdi directroy_1 -bash: mkdi: command not found [17:00:15 root@qa36 /tmp]#echo $? 127
命令行展开
~:展开为用户的主目录 ~USERNAME:展开为指定用户主目录 {}:可承载一个以逗号分隔的列表,并将其展开为多个路径 [17:24:04 root@qa36 /tmp]#touch file_{1,2,3} [17:24:13 root@qa36 /tmp]#ll 总用量 4 -rw-r--r-- 1 root root 0 8月 9 17:24 file_1 -rw-r--r-- 1 root root 0 8月 9 17:24 file_2 -rw-r--r-- 1 root root 0 8月 9 17:24 file_3
三、请使用命令行展开功能来完成以下练习:
1、创建/tmp目录下的:a_c, a_d, b_c, b_d
[16:29:22 root@qa /tmp]#mkdir /tmp/{a,b}_{c,d} [16:29:40 root@qa /tmp]#ll /tmp/ 总用量 20 drwxr-xr-x 2 root root 4096 8月 8 16:29 a_c drwxr-xr-x 2 root root 4096 8月 8 16:29 a_d drwxr-xr-x 2 root root 4096 8月 8 16:29 b_c drwxr-xr-x 2 root root 4096 8月 8 16:29 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
[16:51:03 root@qa36 /var]#mkdir -p /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} [16:51:26 root@qa36 /var]#tree /tmp/mylinux/ /tmp/mylinux/ ├── bin ├── boot │ └── grub ├── dev ├── etc │ ├── rc.d │ │ └── init.d │ └── sysconfig │ └── network-scripts ├── lib │ └── modules ├── lib64 ├── lock ├── log ├── proc ├── run ├── sbin ├── sys ├── tmp ├── usr │ └── local │ ├── bin │ └── sbin └── var 24 directories, 0 files
四、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
元数据信息
[17:43:32 root@qa36 /tmp]#ls -l file_1 -rw-r--r-- 1 root root 0 8月 9 17:24 file_1 -,它表示文件类型,说明file_1是常规文件(如果是目录文件,则应显示d) rw-r--r--,它们用于表示文件权限 1,表示硬连接数目 root root,表示文件的拥有者和所属组 0,表示文件大小,单位为字节(byte) 8月 9 17:24,表示文件的上一次写入的时间 [17:43:35 root@qa36 /tmp]#stat file_1 File: "file_1" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: 803h/2051d Inode: 1703943 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-09 17:24:13.741674017 +0800 #访问时间,简写为atime Modify: 2016-08-09 17:24:13.741674017 +0800 #修改时间,简写为mtime Change: 2016-08-09 17:24:13.741674017 +0800 #改变时间,简写为ctime
文件时间戳信息修改
touch [OPTION]... FILE... -a change only the access time #只改变访问时间 [10:29:27 root@qa36 /tmp]#touch -a file_1 [10:31:12 root@qa36 /tmp]#stat file_1 File: "file_1" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: 803h/2051d Inode: 1703943 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-10 10:31:12.533006587 +0800 Modify: 2016-08-10 10:00:00.000000000 +0800 Change: 2016-08-10 10:31:12.533006587 +0800 -m change only the modification time #只改变修改时间 [10:31:16 root@qa36 /tmp]#touch -m file_1 [10:32:24 root@qa36 /tmp]#stat file_1 File: "file_1" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: 803h/2051d Inode: 1703943 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-10 10:31:12.533006587 +0800 Modify: 2016-08-10 10:32:24.880625564 +0800 Change: 2016-08-10 10:32:24.880625564 +0800 -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time #更改为自定义时间戳 #[10:29:09 root@qa36 /tmp]#touch -t 201608101000.00 file_1 [10:29:20 root@qa36 /tmp]#stat file_1 File: "file_1" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: 803h/2051d Inode: 1703943 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-08-10 10:00:00.000000000 +0800 Modify: 2016-08-10 10:00:00.000000000 +0800 Change: 2016-08-10 10:29:20.056045865 +0800 -c, --no-create do not create any files #如果文件不存在则不创建
五、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
命令别名
通过alias命令实现 alias 显示当前shell进程的所有可用的命令别名 alias NAME='VALUE' 定义别名NAME,其相当于执行命令VLAUE 在命令汉中定义的别名,仅对当前shell进程有效,如果想有就有效,要定义在配置文件中 仅对当前用户:~/.bashrc 对所有用户有效:/etc/bashrc
在命令中引用另一个命令的执行结果
COMMAND1 | COMMAND2 | COMMAND3 最后一个命令会在当前shell进程的子shell进程中执行 [10:32:26 root@qa36 /tmp]#ll 总用量 4 -rw-r--r-- 1 root root 0 8月 10 10:32 file_1 -rw-r--r-- 1 root root 0 8月 9 17:24 file_2 -rw-r--r-- 1 root root 0 8月 9 17:24 file_3 [10:46:46 root@qa36 /tmp]#ll | grep file_1 -rw-r--r-- 1 root root 0 8月 10 10:32 file_1
六、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ll /var/l*[[:digit:]]*[[:lower:]]
七、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ll /etc/[[:digit:]]*[^[:digit:]]
八、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
ll [^[:alpha:]][[:alpha:]]*
九、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-08-06-09-32-22。
[17:21:21 root@qa36 /var]#touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S` [17:21:25 root@qa36 /var]#ll /tmp 总用量 8 drwxr-xr-x 2 root root 4096 8月 8 17:09 hsperfdata_root drwxr-xr-x 17 root root 4096 8月 8 16:51 mylinux -rw-r--r-- 1 root root 0 8月 8 17:21 tfile-2016-08-08-17-21-25
十、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[17:34:04 root@qa36 /var]#mkdir /tmp/mytest1/ && cp -r /etc/p*[^[:digit:]] /tmp/mytest1/ [17:34:56 root@qa36 /var]#ll /tmp/mytest1/ 总用量 292 drwxr-xr-x 2 root root 4096 8月 8 17:34 pam.d drwxr-xr-x 3 root root 4096 8月 8 17:34 pango -rw-r--r-- 1 root root 1287 8月 8 17:34 passwd -rw-r--r-- 1 root root 1248 8月 8 17:34 passwd- -rw-r--r-- 1 root root 1362 8月 8 17:34 pbm2ppa.conf drwxr-xr-x 2 root root 4096 8月 8 17:34 pcmcia -rw-r--r-- 1 root root 2872 8月 8 17:34 pinforc drwxr-xr-x 9 root root 4096 8月 8 17:34 pki drwxr-xr-x 2 root root 4096 8月 8 17:34 plymouth drwxr-xr-x 5 root root 4096 8月 8 17:34 pm -rw-r--r-- 1 root root 370 8月 8 17:34 pm-utils-hd-apm-restore.conf -rw-r--r-- 1 root root 6300 8月 8 17:34 pnm2ppa.conf drwxr-xr-x 2 root root 4096 8月 8 17:34 popt.d drwxr-xr-x 2 root root 4096 8月 8 17:34 portreserve drwxr-xr-x 2 root root 4096 8月 8 17:34 postfix drwxr-xr-x 3 root root 4096 8月 8 17:34 ppp -rw-r--r-- 1 root root 193255 8月 8 17:34 prelink.cache -rw-r--r-- 1 root root 789 8月 8 17:34 prelink.conf drwxr-xr-x 2 root root 4096 8月 8 17:34 prelink.conf.d -rw-r--r-- 1 root root 233 8月 8 17:34 printcap -rw-r--r-- 1 root root 1990 8月 8 17:34 profile drwxr-xr-x 2 root root 4096 8月 8 17:34 profile.d -rw-r--r-- 1 root root 6455 8月 8 17:34 protocols drwxr-xr-x 2 root root 4096 8月 8 17:34 pulse
十一、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
[17:35:03 root@qa36 /var]#mkdir /tmp/mytest2/ && cp -r /etc/*.d /tmp/mytest2/ [17:36:47 root@qa36 /var]#ll /tmp/mytest2/ 总用量 108 drwxr-xr-x 2 root root 4096 8月 8 17:36 bash_completion.d drwxr-xr-x 2 root root 4096 8月 8 17:36 chkconfig.d drwxr-xr-x 2 root root 4096 8月 8 17:36 cron.d drwxr-xr-x 2 root root 4096 8月 8 17:36 depmod.d drwxr-xr-x 2 root root 4096 8月 8 17:36 dracut.conf.d drwxr-xr-x 2 root root 4096 8月 8 17:36 event.d lrwxrwxrwx 1 root root 11 8月 8 17:36 init.d -> rc.d/init.d drwxr-xr-x 3 root root 4096 8月 8 17:36 latrace.d drwxr-xr-x 2 root root 4096 8月 8 17:36 ld.so.conf.d drwxr-xr-x 2 root root 4096 8月 8 17:36 logrotate.d drwxr-xr-x 2 root root 4096 8月 8 17:36 lsb-release.d drwxr-xr-x 2 root root 4096 8月 8 17:36 makedev.d drwxr-xr-x 2 root root 4096 8月 8 17:36 modprobe.d drwxr-xr-x 2 root root 4096 8月 8 17:36 oddjobd.conf.d drwxr-xr-x 2 root root 4096 8月 8 17:36 pam.d drwxr-xr-x 2 root root 4096 8月 8 17:36 popt.d drwxr-xr-x 2 root root 4096 8月 8 17:36 prelink.conf.d drwxr-xr-x 2 root root 4096 8月 8 17:36 profile.d lrwxrwxrwx 1 root root 10 8月 8 17:36 rc0.d -> rc.d/rc0.d lrwxrwxrwx 1 root root 10 8月 8 17:36 rc1.d -> rc.d/rc1.d lrwxrwxrwx 1 root root 10 8月 8 17:36 rc2.d -> rc.d/rc2.d lrwxrwxrwx 1 root root 10 8月 8 17:36 rc3.d -> rc.d/rc3.d lrwxrwxrwx 1 root root 10 8月 8 17:36 rc4.d -> rc.d/rc4.d lrwxrwxrwx 1 root root 10 8月 8 17:36 rc5.d -> rc.d/rc5.d lrwxrwxrwx 1 root root 10 8月 8 17:36 rc6.d -> rc.d/rc6.d drwxr-xr-x 10 root root 4096 8月 8 17:36 rc.d drwxr-xr-x 2 root root 4096 8月 8 17:36 request-key.d drwxr-xr-x 2 root root 4096 8月 8 17:36 rsyslog.d drwxr-xr-x 2 root root 4096 8月 8 17:36 rwtab.d drwxr-xr-x 3 root root 4096 8月 8 17:36 sane.d drwxr-xr-x 2 root root 4096 8月 8 17:36 setuptool.d drwxr-xr-x 2 root root 4096 8月 8 17:36 statetab.d drwxr-x--- 2 root root 4096 8月 8 17:36 sudoers.d drwxr-xr-x 2 root root 4096 8月 8 17:36 xinetd.d drwxr-xr-x 2 root root 4096 8月 8 17:36 yum.repos.d
十二、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
[17:38:08 root@qa36 /var]#mkdir /tmp/mytest3/ && cp -r /etc/{l,m,n}*.conf /tmp/mytest3/ [17:38:38 root@qa36 /var]#ll /tmp/mytest3/ 总用量 48 -rw-r--r-- 1 root root 1662 8月 8 17:38 latrace.conf -rw-r--r-- 1 root root 28 8月 8 17:38 ld.so.conf -rw-r----- 1 root root 191 8月 8 17:38 libaudit.conf -rw-r--r-- 1 root root 2293 8月 8 17:38 libuser.conf -rw-r--r-- 1 root root 662 8月 8 17:38 logrotate.conf -rw-r--r-- 1 root root 10814 8月 8 17:38 ltrace.conf -rw-r--r-- 1 root root 827 8月 8 17:38 mke2fs.conf -rw-r--r-- 1 root root 3390 8月 8 17:38 nfsmount.conf -rw-r--r-- 1 root root 1688 8月 8 17:38 nsswitch.conf -rw-r--r-- 1 root root 1778 8月 8 17:38 ntp.conf