day08-别名-重定向-去重排序等

发布于:2024-12-19 ⋅ 阅读:(10) ⋅ 点赞:(0)

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 1126 21:25 anaconda-ks.cfg
-rw-r--r--. 1 root root 3525 1218 19:39 a.txt
-rw-r--r--. 1 root root 3525 1129 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


网站公告

今日签到

点亮在社区的每一天
去签到