1.重复用touch命令创建同一份文件,会修改文件的时间戳。
alias命令:
别名
查看已有别名:alias
[root@oldboy ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
设置别名:alias net=‘cat /etc/sysconfig/network-scripts/ifcfg-eth0’
别名优先于命令
如何不使用别名?
(1)使用绝对路径
用which查找命令的绝对路径
[root@oldboy ~]# which cp
alias cp='cp -i'
/usr/bin/cp
[root@oldboy ~]# /bin/cp test.txt ./a.txt
(2)在命令前加上反斜线
[root@oldboy ~]# \ll
-bash: ll: 未找到命令
[root@oldboy ~]# \ls -l
总用量 12
-rw-------. 1 root root 1438 11月 26 21:25 anaconda-ks.cfg
-rw-r--r--. 1 root root 3525 12月 18 19:39 a.txt
-rw-r--r--. 1 root root 3525 11月 29 20:24 test.txt
(3)取消别名:
unalias + 命令
[root@oldboy ~]# unalias net
[root@oldboy ~]# net
-bash: net: 未找到命令
别名永久生效
全局环境变量文件:
/etc/profile
/etc/bashrc
用户环境变量文件:
~/.bash_profile
~/.bashrc
将alias别名命令写入全局环境变量就可永久生效
重定向
1.标准输入重定向,用数字0表示
< 或 0< ,标准输入
[root@oldboy ~]# cat a.txt
1
2
3
4
5
[root@oldboy ~]# tr "1" "A" < a.txt #按字符替换
A
2
3
4
5
可以按范围替换:
xargs:分组,按照个数分组
[root@oldboy ~]# cat a.txt
1
2
3
4
5
[root@oldboy ~]# xargs -n 2 < a.txt
1 2
3 4
5
2.标准输出重定向,用数字1表示
> 或 1> ,将正确的信息重定向,会清空文件
[root@oldboy ~]# echo 1234675 1> a.txt
[root@oldboy ~]# cat a.txt
1234675
标准输出追加:>>或1>>
清空文件命令:
[root@oldboy ~]# > a.txt
[root@oldboy ~]# cat a.txt -n
[root@oldboy ~]# cat /dev/null > a.txt
[root@oldboy ~]# cat a.txt -n
3.标准错误输出重定向,用数字2表示
重定向错误信息:
[root@oldboy ~]# abc 2> a.txt
[root@oldboy ~]# cat -n a.txt
1 -bash: abc: 未找到命令
标准错误输出追加:2>>
4.大段内容非交互式编辑
[root@oldboy ~]# cat > a.txt << EOF
> 123
> 123
> 23
> EOF
[root@oldboy ~]# cat a.txt
123
123
23
cat的标准输出内容会重定向至a.txt文件,而cat的标准输入是EOF之间的内容。
5. 将正确信息和错误信息写入同一个文件
(1)
[root@oldboy ~]# echo 123 >> a.txt 2>> a.txt
[root@oldboy ~]# cat a.txt
123
[root@oldboy ~]# cho 123 >> a.txt 2>> a.txt
[root@oldboy ~]# cat a.txt
123
-bash: cho: 未找到命令
(2)
[root@oldboy ~]# echo 123 &>> a.txt
[root@oldboy ~]# cho 123 &>> a.txt
[root@oldboy ~]# cat a.txt
123
-bash: cho: 未找到命令
(3)标准错误和标准输出一样
[root@oldboy ~]# echo 123 >> a.txt 2>&1
[root@oldboy ~]# cho 123 >> a.txt 2>&1
[root@oldboy ~]# cat a.txt
123
-bash: cho: 未找到命令
uniq命令-去重
cat > a.txt << EOF
10.0.0.1
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.1
10.0.0.1
EOF
uniq + 文件:把相邻的相同行去重
[root@oldboy ~]# uniq a.txt
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.1
uniq -c +文件:去重并且计数
[root@oldboy ~]# uniq a.txt -c
5 10.0.0.1
1 10.0.0.2
1 10.0.0.3
1 10.0.0.4
6 10.0.0.1
sort 排序
按字典序列排序
[root@oldboy ~]# sort a.txt
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
-n:按数字排序
-t:指定分隔符
-k:指定哪一列
-r:倒序排序
[root@oldboy ~]# sort -n -t . -k 4 a.txt
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.14
10.0.0.16
10.0.0.23
1. 企业面试题:查看重复IP,按照次数排序
[root@oldboy ~]# sort -n -t . -k 4 a.txt -r | uniq -c | sort -nr -t " " -k 1
11 10.0.0.1
1 10.0.0.4
1 10.0.0.3
1 10.0.0.23
1 10.0.0.2
1 10.0.0.16
1 10.0.0.14