Linux常用命令补充
1. echo (打印)
说到打印,你一定可以想到print、printf、或者println。没错echo也是一样的,它可以打印字符串、序列、也可以与重定向巧妙的结合。
1 | [root@hostlocal ~]# echo Hello World |
关于重定向
数据流又可分为 标准输入流 、标准输出流和标准错误流。 这三种流向对应着相关的文件描述符, 默认描述符范围是:0-2。标准输入流为:0,标准输出流:1,标准错误流:2。当指定没有描述符的时候,默认就是标准数据流。
>
:(输出重定向)把结果或荧幕内容放到一个原本不属于它的地方去;如> 1.txt
,它的意思是指把空的内容放到1.txt中(覆盖),如果没有1.txt文件就自动创建1.txt文件。同样的它与echo结合用起来会更方便,如,echo Hello World > 1.txt
。
当然不仅可以覆盖文件,同样我们也可以追加内容到文件。如下:
1 | [root@hostlocal ~]# echo My name is nanxi >> 1.txt |
如果我们指令错误,或者得到的是错误的结果,还能添加到追加文件中吗?当然可以!
1 | [root@hostlocal ~]# ech eror command >> 1.txt #看到错误数据流,当不指定描述符的时候,还是会输出到屏幕。 |
那我们怎么把正确和错误的文件同时追加到文件中呢?
1 | [root@hostlocal ~]# ech eror command >> 1.txt 2>>1.txt |
So,可以这样记:
>
标准正确输出重定向,只接收正确的结果;>>
标准正确追加输出重定向,追加内容到文件的末尾;2>
标准错误输出重定向,只接收错误的命令或执行结果;2>>
标准错误输出追加重定向,追加错误的结果到文件的末尾
【拓展】输入重定向:
输入输出重定向可以先做了解,后面会再做介绍哦~
2. less (查看大文件)
它的作用是一页一页的展示文件内容,常用于查看大文件的内容。常用语法less [file]
,也可以接收荧幕输出。less -N [file]
:表示分页查看文件内容时显示行号。
关于less分页查看文件内容时的快捷键:
快捷键 | 释义 |
---|---|
f & space | 往下翻一页 |
b | 往上翻一页 |
10g | 快速到第10行 |
g | 快速到文首 |
G | 快速到文末 |
q | 退出less视图 |
/[匹配内容] | n-----查找下一个匹配内容 N-----查找上一个匹配内容 |
3. sort (排序)
排序是我们处理数据时经常用到的手段,在Linux中我们同样存在排序的功能。它的语法结构为:sort [options] [file]
或者与管道符结合command | sort [options]
,其中参数-r 为逆序排序;-n为按照数字进行排序; -k 指定列进行排序 -k 2 第2列;以下直接演示示例:
1 | [root@hostlocal ~]# > 1.txt |
4. uniq (去重)
偶尔处理数据的时候,我们需要用到uniq去重,但是uniq去重是基于sort排序的,也就是说当两个重复的数据是紧挨着的时候我们的uniq去重才能生效。参数-c表示统计出现的次数。
1 | [root@hostlocal ~]# cat 2.txt |
5. tr (替换)
替换字符内容,tr "abc" "a"
:把荧幕结果中显示的a、b、c字符全部替换成a;示例如下:
1 | [root@hostlocal ~]# echo 1238456215abcbcxfgjjszaajjcjzbbbb > 1.txt |
6. xargs (组合&过滤)
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是一个强有力的命令,xargs 一般是和管道一起使用。它能够捕获一个命令的输出,然后传递给另外一个命令。
多行变单行:
1 | [root@hostlocal ~]# >1.txt |
单行变多行:(-n)
1 | [root@hostlocal ~]# echo {a..z} > 1.txt |
选择定界符:(-d)
1 | [root@hostlocal ~]# echo "xxxzxxxzxxxzxxx" | xargs -dz |
将屏幕上输出的内容甩到命令的指定位置(-i)或末尾,变为可执行调用的内容:
1 | [root@hostlocal ~]# find ./ -name "*.txt" | xargs -i cp {} /opt |
关于xargs的详细使用,我们可以参考csdn博客🤜xargs详解
7. alias (别名)
顾名思义就是同样的本质不同的叫法,例如ll
是命令ls -l
的别名一样的道理。我们可以简单的查看一下:
1 | [root@hostlocal ~]# alias |
别名和变量的区别:我的理解是,别名里面存放的是可执行的命令,而变量赋值变量地址里面存放的是数据,Linux的变量也可以是目录,可以快速连接到某个数据或地址。相比较而言存放可执行命令的别名肯定更牛X…
8. diff (比对)
释义:比对两个文件内容的不同。使用方法:diff [file1] [file2]
;案列对照:
1 | [root@hostlocal ~]# echo 1111 > 1.txt |
警告
在编写案例的过程中,我出现了这样一个提示
1 | [root@hostlocal ~]# echo 1111>1.txt |
由此反省一下,虽然>
是输入重定向的意思,但是写在echo
命令后字符串的后面,没有分割,那么解释器会把1111
默认为了描述符,释义失败。