一、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