给历史命令加日期


vi /etc/profile 编辑历史命令所在的配置文件
source /etc/profile 将修改过后的配置文件生效
echo $HISTSIZE 查看变量——历史命令保存数量
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 添加历史命令日期

HISTTIMEFORMAT="%F %T "


输入输出重定向

ls 1.txt > a.txt #将1写入到a
ls 1.txt >> a.txt #将1追加到a
ls 1.txt 2> a.txt #将错误信息写入a
ls 1.txt 2>> a.txt #将错误信息追加到a
ls 1.txt &> a.txt #将正确和错误的信息都写入到a
ls 1.txt &>> a.txt #追加
ls 1.txt > a.txt 2> b.txt #将正确和错误分开写入


环境变量

/etc/profile #用户环境变量,交互,登录才执行
/etc/bashrc 用户不用登录,执行shell就生效

cut 分隔符

cat /etc/passwd |head -2 |cut -d ":" -f 1,12 #截取以冒号为分割前两段
-d 分隔符
-f 指定段号
-c 指定第几个字符

sort排序

-n 以数字排序
-r 反序
-t 分隔符
sort /etc/passwd
sort -n 1.txt #以字母去排序

uniq 去重,-c统计行数

sort 2.txt |uniq -c #先排序再去重

tee 重定向并打印 ,-a追加

sort 2.txt |uniq -c |tee -a a.txt

tr 替换

echo "yardlinux" |tr '[yl]' '[YL]' #[]表示任选一个
echo "yardlinux" |tr 'y' 'Y'
echo "yardlinux" |tr '[a-z]' '[A-Z]'

split 切割(例如,用于日志过大),-b大小,-l 行数

split -b 100M bigfile
split -b 100k a.txt abc
split -l 1000 a.txt #切割1000行一个文件

find /etc/ -type f -name "*conf" -exec cat {} >>a.txt \;

|| &&

ls 1.txt || wc -l 2.txt #前一条命令执行成功,后续不执行,若失败,执行下一条
ls 1.txt && wc -l w.txt #前一条命令执行成功,再执行下一条
例如:
判断一个目录存在不存在,若不存在就创建
[ -d yardlinux ] || mkdir yardlinux

grep 过滤文件中关键字

-c 行数
-i 不区分大小写
-n 显示行号
-v 取反
-r 遍历所有子目录
-A 后面跟数字,过滤出符合要求的行以及下面n行
-B 同上,过滤出符合要求的行以及上面n行
-C同上,同时过滤出符合要求的行以及上下各n行

grep nologin passwd
grep -c nologin passwd 查看多少行
grep -nA2 'root' passwd