Table of Contents
globbing:文件名通配
匹配模式:元字符
- *:匹配任意长度的任意字符
- ?:匹配任意单个字符
- 有几种特殊的格式:
详情见man 7 glob
- [a-z] , [A-Z] , [0-9] , [a-z0-9]
[:upper:]
所有大写字母[:lower:]
所有小写字母[:alpha:]
所有字母[:digit:]
所有数字[:alnum:]
所有的字母和数字[:space:]
所有空白字符[:punct:]
所有标点[:print:]
所有可打印字符
- [^]:匹配范围外的字符
IO 重定向
程序的三种数据流:
- 输入的数据流: stdin
- 输出的数据流: stdout
- 错误输出流: stderr
fd:file descriptor 文件描述符:
- stdin:0
- stdout:1
- stderr:2
重定向
输出重定向:
>
特性:覆盖输出
set -C
:可禁止覆盖至已存在文件
可使用强制覆盖输出:>|
set +C
:可关闭- 错误输出重定向
2>
- 合并所有输出流
$>
2>&1
- 输出到拉圾箱
可定向到 /dev/null
追加输出重定向:
>>
特性:追加输出
输入重定向:
<
Here Document:
<<
cat << EOF
cat > /PATH/TO/FILE << EOF
tr
形式
tr [OPTION]... SET1 [SET2]
把 SET1 中出现的字符转化为 SET2 中对应位置的字符。OPTION
- -d:删除字符
xargs
COMMAND1 |xargs COMMAND2
用于将前一个命令的输出作为下一个命令的参数
管道:
COMAND1|COMAND2|COMAND3
将前一个命令的输出作为后一个命令的输入。
tee
COMMAND2 | tee /PATH/TO/FILE | COMMAND2
将数据分出来
通配与重定向示例
显示/etc下以非字母开头,后跟一个字母以及其它任意长度字符的文件与目录
ls -d /etc/[^[:alpha:]]*
复制/etc下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
cp /etc/p*[[:digit:]] /tmp/mytest1
将/etc/issue文件中的内容转换为大写并存至/tmp/issue.out中
cat /etc/issue | tr [a-z] [A-Z] > /tmp/issue.out
用户与用户组管理示例
创建组distro ,且gid为2019
groupadd -g 2019 distro
创建用户mandriva,uid为1005,基本组为distro
useradd -u 1005 -g distro mandriva
创建用户mageia,uid为1100,家目录为/home/linux
useradd -u 1100 -b /home/linux mageia
给用户mageia添加密码mageedu,设置用户密码7天后过期
echo "mageedu" | passwd -e 7 --stdin mageia
删除mandriva,保留家目录
userdel mandriva
创建用户slackware,uid为2002,基本组为distro,附加组为peguin
useradd -u 2002 -g distro -G peguin slackware
修改slackware的默认shell为/bin/tcsh
usermod -s /bin/tcsh slackware
为用户slackware新增附加组admins
usermod -aG amdins slackware