通配符 * ? [] [^]
命令行光标 home end ctrl+u ctrl+k ctrl+箭头 ctrl+l
echo $HISTFILE, $HISTFILESIZE, $HISTSIZE
!100 !-5 !! !$ (esc + .) !string
$(cmd) `cmd`
mkdir -pv ./test/{x/m,y} ./test2/{a,d}_{b,c}
cp复制的文件,属主,属组是当前执行cp的用户本身
复制链接时,默认是复制链接指向的那个文件本身
cp -a /etc /backup/etc-`date +%F` 归档复制
/etc/default/useradd
/etc/skel
/etc/shells
$SHELL
PATH=$PATH:/bin/go
export PATH
suid 特殊权限位,进程的属主为该执行文件本身的属主,如果本身的owner有x,则为小写s,否则大写S
umask 创建文件默认的权限=最大权限-umask值
注意:文件一般不给执行权限
umask
umask 027
grep 'umask' /etc/profile /etc/bashrc
bash配置文件
/etc/profile.d/*.sh /etc/profile ~/.bash_profile ~/.bashrc /etc/bashrc
立即生效修改后的配置文件 . file , source file
type set
set 查看所有变量
set -C 禁止覆盖重定向 (可以使用强制覆盖 >|)
set +C 解除
stdin 0
stdout 1
stderr 2
重定向 改变标准输入,输出的设备源
> >> >|
2> 2>>
&> &>>
<
ls /var > out1 2> out2
ls /var > out 2> out
ls /var &> out
cat < /etc/fstab 接受文件并打印,一般就默认带有stdin重定向
tr a-z A-Z < /etc/passwd
here doc
cat << END
...
END
cat >> file << EOF
...
EOF
tee 读取stdin,写到stdout,和文件各一份
tee file < /etc/file2
echo xxx | tee file
管道: 前一个命令的标准输出stdout,当前后一个命令的标准输入stdin
cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'
egrep
egrep -ivo --color pattern file...
egrep -A|B|C # ...
. 单个任意字符
* 其前面的字符任意次 .*
? 其前面的字符0次或1次
[] [^]
+ {1,}
{m,n}
^ $ ^$
\< \> \b
() \1 \2
a|b C|cat (C|c)at