1、Linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示
·touch:创建文件和刷新时间戳
touch [OPTION]..FILE..
【1】touch -c 文件名:如果文件已存在则刷新文件的时间戳,如果文件不存在则创建空文件
示例:
touch -c tmpchi 或touch tmpchi
目录下没有文件则创建空文件:-rw-r--r--. 1 root root 0 Oct 7 14:18 tmpchi
目录下有文件则刷新时间戳:-rw-r--r--. 1 root root 0 Oct 7 14:21 tmpchi
【2】touch -a 文件名: 仅改变atime和ctime
示例:
touch -a tmpchi
Access: 2018-10-07 14:21:42.167194043 +0800
Modify: 2018-10-07 14:21:01.915193580 +0800
Change: 2018-10-07 14:21:42.167194043 +0800
【3】touch -m 文件名: 仅改变mtime和ctime
示例:
touch -m tmpchi
Access: 2018-10-07 14:21:42.167194043 +0800
Modify: 2018-10-07 14:23:43.221195437 +0800
Change: 2018-10-07 14:23:43.221195437 +0800
【4】touch -t [[CC]YY]MMDDhhmm[.ss]: 指定atime和mtime的时间戳
示例:
touch -t 201809081112.13 tmpchi
Access: 2018-09-08 11:12:13.000000000 +0800
Modify: 2018-09-08 11:12:13.000000000 +0800
Change: 2018-10-07 14:24:55.220196265 +0800

·cp:复制文件或目录
【1】cp [OPTION]...[-T] SOURCE DEST:复制文件并改文件名
cp -i:覆盖前提示
示例:
文件不存在,则创建新的文件
cp /tmp/tmpchi /app/tmpchi.bak
-rw-r--r--. 1 root root 0 Oct 7 14:34 /app/tmpchi.bak
-rw-r--r--. 1 root root 0 Oct 7 14:25 /tmp/tmpchi
文件已存在,则覆盖文件(-i覆盖前提示)
cp -i /tmp/tmpchi /app/tmpchi.bak
-rw-r--r--. 1 root root 0 Oct 7 14:36 /app/tmpchi.bak
-rw-r--r--. 1 root root 0 Oct 7 14:25 /tmp/tmpchi
【2】cp [OPTION]...SOURCE...DIRECTORY:复制文件不改文件名
cp -r,-R:递归复制目录及内部的所有内容
示例:
app目录里复制一个tmp目录(-r递归复制tmp目录及内部的所有内容)
cp -r /tmp /app
drwxr-xr-t. 26 root root 4096 Oct 7 14:43 tmp
【3】cp -d :复制软连接名
示例
如果不加-d,如果复制的是目录,默认复制目录的软连接指向的对应原始文件,而不是软连接本身
cp /etc/rc /app
-rwxr-xr-x. 1 root root 2617 Oct 7 15:09 /app/rc
lrwxrwxrwx. 1 root root 7 Sep 17 21:44 /etc/rc -> rc.d/rc
cp -d /etc/rc /app
lrwxrwxrwx. 1 root root 11 Oct 7 15:13 /app/init.d -> rc.d/init.d
lrwxrwxrwx. 1 root root 11 Sep 17 21:32 /etc/init.d -> rc.d/init.d\\
【4】--preserv
-rw-r--r--. 1 root root 0 Oct 7 15:23 /app/tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
cp --preserv=timestamp:复制时保留源文件的时间戳
示例:
cp /tmp/tmpchi /app/tmpchi --preserv=timestamp
-rw-r--r--. 1 root root 0 Oct 7 15:22 /app/tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
cp --preserv=ownership:复制时保留源文件的所有者
示例:
cp /tmp/tmpchi /app/tmpchi --preserv=ownership
-rw-r--r--. 1 cmx cmx 0 Oct 7 15:25 /app/tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
cp --preserv=all等同于cp -a:归档,复制时保留源文件的所有属性
示例:
cp -a /tmp/tmpchi /app/tmpchi 或cp /tmp/tmpchi /app/tmpchi --preserv=all
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /app/tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
示例:
cp --backup=numbered:目标存在,覆盖前先备份加数据后缀
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 /tmp/tmpchi
-rw-r--r--. 1 root root 0 Oct 7 15:28 tmpchi
-rw-rw-r--. 1 cmx cmx 0 Oct 7 15:22 tmpchi.~1~

·mv:移动文件或重命名文件名
【1】mv [OPTION]...[-T] SOURCE DEST:移动文件并改文件名
示例:
同目录下移动文件,文件存在则重命名文件
mv tmpchi tmpchixx
-rw-r--r--. 1 root root 0 Oct 7 14:25 tmpchi
-rw-r--r--. 1 root root 0 Oct 7 14:25 tmpchixx
不同目录下移动文件,移动并改名
mv /tmp/tmpchi01 /app/tmpchixx
-rw-r--r--. 1 root root 0 Oct 7 16:07 /tmp/tmpchi01
-rw-r--r--. 1 root root 0 Oct 7 14:36 /app/tmpchixx

·rename:重命名多个文件
rename [OPTIONS] expression replacement file...
示例:
-rw-r--r--. 1 root root 0 Oct 7 16:15 f1
-rw-r--r--. 1 root root 0 Oct 7 16:15 f2
-rw-r--r--. 1 root root 0 Oct 7 16:15 f3
-rw-r--r--. 1 root root 0 Oct 7 16:15 f4
-rw-r--r--. 1 root root 0 Oct 7 16:15 f5
rename f f00 f?
-rw-r--r--. 1 root root 0 Oct 7 16:15 f001
-rw-r--r--. 1 root root 0 Oct 7 16:15 f002
-rw-r--r--. 1 root root 0 Oct 7 16:15 f003
-rw-r--r--. 1 root root 0 Oct 7 16:15 f004
-rw-r--r--. 1 root root 0 Oct 7 16:15 f005

·rm:删除文件或目录
【1】rm -i:删除前提示
示例:
rm -i tmpchi
rm: remove regular empty file tmpchi'?
【2】rm -r:递归删除目录
示例:
cp -r /tmp/gconfd-root /app
drwx------. 2 root root 4096 Oct 7 16:23 gconfd-root
rm gconfd-root
rm: cannot remove
gconfd-root': Is a directory
rm -r gconfd-root
rm: descend into directory `gconfd-root'?
输入y,删除目录

·mkdir:创建文件夹
【1】mkdir -p:创建目录包含目录下的子目录
示例:
mkdir -p mylinux
drwxr-xr-x. 2 root root 4096 Oct 7 16:29 mylinux
【2】mkdir -m:创建目录是直接指定权限
mkdir -m 750 mylinux:权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问
drwxr-x---. 2 root root 4096 Oct 7 16:35 mylinux
【3】mkdir -v:显示详细信息
示例:
mkdir -v mylinux
mkdir: created directory 'mylinux'

2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示
【1】特性
·alias命令别名:定义别名NAME,其相当于执行命令VALUE alias NAME='VALUE'
·history命令历史:
-c: 清空命令历史
-d 5: 删除历史中指定的第5个命令
-a:将内存中的所有命令,附加到磁盘命令文件里(.bash_history)
-r:将磁盘命令文件里的所有命令附加到内存history中
-n:将磁盘命令文件里的新增的命令附加到内存history中
-p:展开历史命令参数成多行(执行命令但历史命令history不记录)
-s:展开历史命令参数成一行(可以伪造命令并不执行命令,history -s "rm /")
·echo显示字符:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号 ,
$( ) 或 `` 把一个命令的输出打印给另一个命令的参数
示例:
[root@centos6 /]# echo "hello welcome to $(hostname)"
hello welcome to centos6.cmx
·tab键:命令补全,路径补全
command 2Tab 所有子命令或文件补全
示例:
[root@centos6 /]# he 双击Tab键
head help hexdump
./2Tab 显示所有根目录下一级目录,包括隐藏目录
示例:
[root@centos6 /]# ./
app/ dev/ lib64/ mnt/ root/ sys/
bin/ etc/ lost+found/ net/ sbin/ tmp/
boot/ home/ media/ opt/ selinux/ usr/
.dbus/ lib/ misc/ proc/ srv/ var/
2Tab 当前目录下子目录,不包括隐藏目录
示例:
[root@centos6 /]#

app etc lost+found net sbin tmp
bin home media opt selinux usr
boot lib misc proc srv var
dev lib64 mnt root sys
~2Tab 所有用户列表
示例:
[root@centos6 /]# ~
~abrt/ ~games/ ~nobody/ ~saslauth
~adm ~gdm/ ~ntp/ ~shutdown/
~apache/ ~gopher ~operator/ ~sshd/
~avahi-autoipd ~haldaemon/ ~postfix/ ~sync/
~bin/ ~halt/ ~pulse ~tcpdump/
~cmx/ ~lp/ ~root/ ~usbmuxd/
~daemon/ ~mail/ ~rpc ~uucp
~dbus/ ~mysql/ ~rpcuser/ ~vcsa/
~ftp ~nfsnobody/ ~rtkit/
·bash快捷键
Ctrl+l=clear:清屏
Ctrl+s:阻止屏幕输出
Ctrl+q:允许屏幕输出
Ctrl+c:关闭当前运行窗口
Atl+r:删除当前整行
echo (Atl+a) 1000:输出1000个a
Ctrl + u:从光标处删除至命令行首
Ctrl + k:从光标处删除至命令行尾
Ctrl + a:光标移到命令行首,相当于Home
Ctrl + e:光标移到命令行尾,相当于End
Ctrl + w:从光标处向左删除至单词首
Alt + d:从光标处向右删除至单词尾
Ctrl + d:删除光标处的一个字符
Ctrl + h:删除光标前的一个字符

【2】命令执行状态返回值
在bash中使用一个特殊的变量$?来保存上一个命令的执行状态结果:0表示成功, 1-255表示失败
示例:
[root@centos6 app]#rm null ;echo $?
rm: remove regular empty file `null'? y
0
[root@centos6 app]# rm null ;echo $?
rm: cannot remove `null': No such file or directory
1

【3】命令行展开
以某些bash能够解释的符号来代替命令中的某些参数。 
~:展开为用户的家目录; 
示例:
切换至家目录 
[root@centos6 app]# cd ~
[root@centos6 ~]# pwd
/root
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径; 
例:在/tmp/mylinux目录下创建f01,f02,f03三个文件 
[root@centos7 /]#touch /tmp/mylinux/f0{1,2,3} 
-rw-r--r--. 1 root root    0 Oct  7 16:57 f01
-rw-r--r--. 1 root root    0 Oct  7 16:57 f02
-rw-r--r--. 1 root root    0 Oct  7 16:57 f03

3、请使用命令行展开功能完成以下练习:
(1)创建/tmp目录下的:a_c,a_d,b_c,bd
mkdir /tmp/{a,b}
{c,d}
(2)创建/tmp/mylinux目录下的:
mylinux/
|---bin
|---boot
|----grub
|---dev
|---etc
| |----rc.d
| | |--init.d
| |----sysconfig
| |---network-scripts
|---lib
| |--modules
|---lib64
|---proc
|---sbin
|---sys
mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys}

4、文件元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
stat 文件名查看元数据(metadata)信息:
File: a_c
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 1048579 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-10-07 12:01:31.600097235 +0800
Modify: 2018-10-07 12:01:31.600097235 +0800
Change: 2018-10-07 12:01:31.600097235 +0800
三个时间戳:
access time:访问时间,atime,读取文件内容
modify time:修改时间,mtime,改变文件内容(数据)
change time:改变时间,ctime,元数据发生改变
查看atime和mtime,ctime时间:stat 文件名
touch -a 文件名: 仅改变atime和ctime(touch -a a_c)
touch -m 文件名: 仅改变mtime和ctime(touch -m a_c)
touch -t [[CC]YY]MMDDhhmm[.ss]: 指定atime和mtime的时间戳(touch -t 201809081112.13 a_c)
touch -c 文件名:若文件已存在则刷新文件的的时间戳,若文件不存在则创建一个新文件

5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
命令别名:alias
定义别名为if,其相当于执行命令VALUE
alias if='ifcofig'
命令引用:
alias pwd='ifconfig':执行pwd显示ifconfig结果

6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件或目录
ls -d /var/l[[:digit:]][[:lower:]] 或ls -d /var/l[0-9][[:lower:]]

7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录
ls -d /etc/[[:digit:]][^[:digit:]] 或ls -d /etc/[0-9][^0-9]

8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录
ls -d /etc/[^[:alpha:]][[:alpha:]] 或ls -d /etc/[^a-zA-Z][a-zA-Z]

9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22
touch /tmp/tfile-date +%Y-%m-%d-%H-%M-%S或者touch /tmp/tfile-date +%F-%H-%M-%S

10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytestl目录中
cp -a /etc/p[[:alpha:]] /tmp/mytest1 或cp /etc/p[^[:digit:]] /tmp/mytest1

11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中
cp -a /etc/*.d /tmp/mytest2

12、复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中
cp -a /etc/[lmn]*.conf /tmp/mytest3