*********************************************************************************************************
命令行展开功能:
{}可以承载一个以逗号为分割符的列表,进行展开,如下使用此功能实现一次性新建多个目录:
[root@centos6 test]#mkdir /tmp/{x,q}_{y,z}
[root@centos6 test]#ll /tmp/
total 16
drwxr-xr-x. 2 root root 4096 May 11 17:01 q_y
drwxr-xr-x. 2 root root 4096 May 11 17:01 q_z
drwxr-xr-x. 2 root root 4096 May 11 17:01 x_y
drwxr-xr-x. 2 root root 4096 May 11 17:01 x_z
[root@centos6 test]#
*********************************************************************************************************
文件元数据:
文件系统中的数据分为两类,分别是数据和元数据。数据:指的是普通文件中的实际数据;
元数据:指用来描述一个文件的特征系统数据,诸如文件类型、链接数、访问权限、属主、属组、
inode、atime、mtime、ctime等信息;
- Access Time:简写为atime,表示文件上一次被访问的时间,如用ls命令查看文件时,会更新atime
- Modify Time:简写为mtime,表示文件内容上一次被修改的时间,文件内容被修改时,说明文件已
- 被访问,同时文件的大小等文件状态信息也被改变了,所以此时atime/ctime也随着改变。
- Change Time:简写为ctime,表示文件状态信息上一次被修改的时间,如文件的链接数,大小,
- 权限,属主,属组等信息被修改时则更新ctime。
可以使用stat命令来查看文件元数据:
NAME
stat - display file or file system status
SYNOPSIS
stat [OPTION]... FILE...
如下使用stat命令查看/etc/passwd文件元数据信息
[root@centos6 ~]#stat /etc/passwd
File: `/etc/passwd'
Size: 1738 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 799021 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-05-11 16:55:14.139798808 +0800
Modify: 2019-05-11 16:55:11.775810252 +0800
Change: 2019-05-11 16:55:11.789810120 +0800
stat命令-c选项可以按需格式化输出信息,FORMAT参数具体man stat查看
-c --format=FORMAT
use the specified FORMAT instead of the default; output a newline
after each use of FORMAT
如下通过-c 和%F 格式化输入/etc/passwd文件类型,显示为普通文件
[root@centos6 ~]#stat -c %F /etc/passwd
regular file
使用touch命令可以修改文件元数据的atime/mtime/ctime
NAME
touch - change file timestamps
SYNOPSIS
touch [OPTION]... FILE...
-a change only the access time //只修改atime(同时ctime会随着修改)
-m change only the modification time //只修改mtime(同时ctime会随着修改)
-c, --no-create
do not create any files //如果文件不存在时,touch默认会新建一个空文件,
//-c选项则不会创建(所以touch平时也可以用来创建空文件使用)
***注意:这里有个知识点,mount分区时mount命令有个选项-o noatime | nodiratime 如下:
mount -o noatime /dev/sda3 /data //关闭文件访问时间更新功能
mount -o nodiratime /dev/sda3 /data //关闭目录访问时间更新功能
在一些生产环境中,由于目录和文件被频繁访问,关闭访问时间更新功能能提升性能
*********************************************************************************************************
在bash中,$( )
与` `
(反引号)都是用来作命令替换的。
效果为先完成$( )
与` `
(反引号)里的命令行,然后将其结果替换出来,再重组成新的命令行。
如下使用date命令和$()与``反引号来创建sc-开头加当前系统时间的文件
[root@centos6 ~]#date
Sat May 11 23:27:14 CST 2019
[root@centos6 ~]#date +%Y-%m-%d-%k-%M-%S
2019-05-11-23-27-15
[root@centos6 ~]#touch /tmp/sc-$(date +%Y-%m-%d-%k-%M-%S)
[root@centos6 ~]#ll /tmp/
total 0
-rw-r--r--. 1 root root 0 May 11 23:27 sc-2019-05-11-23-27-21
[root@centos6 ~]#touch /tmp/sc-`date +%Y-%m-%d-%k-%M-%S`
[root@centos6 ~]#ll /tmp/
total 0
-rw-r--r--. 1 root root 0 May 11 23:27 sc-2019-05-11-23-27-21
-rw-r--r--. 1 root root 0 May 11 23:27 sc-2019-05-11-23-27-36
*********************************************************************************************************
globbing通配符:用于文件名整体匹配
- *:匹配任意长度的任意字符
- ?:匹配任意单个字符
- []:匹配指定范围内任意单个字符 ,man tr可以查看更多[]通配符
- 如:[0-9] [a-z] [0-9a-z] [[:upper:]](使用大写字母)[[:lower:]](所有小写字母) [[:digit:]](所有数字)
- [[:alpha:]](所有字母)[[:alnum:]](所有字母和数字)[[:punct:]](所有标点符号)[[:space:]](所有
- 空白字符)
- ^:取反,匹配指定范围外的任意单个字符
- 如:[^0-9](非数字单个字符)[^[:upeer:]](非大写字母单个字符,注意这里不仅指小写字母,还指
- 数字等等一切非大写字母单个字符)
如下,运用通配符实现复制/etc目录下所有的以p开头,以非数字结尾的文件和目录到/tmp/mytest目录中。两种方法,
cp -R是递归复制,用于复制目录
[root@centos6 ~]#cp -R /etc/p*[^0-9] /tmp/mytest/
[root@centos6 ~]#ls /tmp/mytest/
pam.d pcmcia pm-utils-hd-apm-restore.conf ppp profile
pango pinforc pnm2ppa.conf prelink.cache profile.d
passwd pki popt.d prelink.conf protocols
passwd- plymouth portreserve prelink.conf.d pulse
pbm2ppa.conf pm postfix printcap purple
[root@centos6 ~]#cp -R /etc/p*[^[:digit:]] /tmp/mytest/
[root@centos6 ~]#ls /tmp/mytest/
pam.d pcmcia pm-utils-hd-apm-restore.conf ppp profile
pango pinforc pnm2ppa.conf prelink.cache profile.d
passwd pki popt.d prelink.conf protocols
passwd- plymouth portreserve prelink.conf.d pulse
pbm2ppa.conf pm postfix printcap purple
*********************************************************************************************************
useradd:新建用户
userdel:删除用户
-u 指定用户Id号,-G指定附属组,-m指当家目录不存在时创建家目录,-k拷贝/etc/skel下的隐藏配置文件
到家目录,必须和-m一起使用,-d指定家目录,-s指定具体shell
如下,创建用户tom,指定id号为5001,附属组为sc,家目录为/tmp/tom,shell为/bin/zsh
[root@centos6 tmp]#useradd -u 5001 -G sc -m -k /etc/skel/ -d /tmp/tom -s /bin/zsh tom
[root@centos6 tmp]#tail -2 /etc/passwd
chrooter:x:503:503::/home/chrooter:/bin/bash
tom:x:5001:5001::/tmp/tom:/bin/zsh
[root@centos6 tmp]#tail -6 /etc/group
tcpdump:x:72:
sc:x:500:tom
rootkit:x:501:
user4:x:502:
chrooter:x:503:
tom:x:5001:
[root@centos6 tmp]#
userdel -r选项指删除用户的同时删除用户相关文件夹,如tom家目录/tmp/tom和/var/spool/mail/tom等文件