补充Linux基本命令

1 管道符— “|”

将左侧的命令输出结果,作为右侧命令的输入(处理对象)可以 叠加使用

管道符(pipe)用 “|” 这个界定符号表示,如果需要对linux命令的输出结果进行再次处理,就可以使用管道符+管道命令解决。 管道符 “|” 仅能处理由前一个命令执行后传来的正确信息,如果命令执行异常,无法对异常信息进行处理。

例如:通过ps命令可以查看系统中的进程,但如果需要查看指定进程,就需要在ps命令返回的结果中进行筛选,如查看java进程:

ps -aux | grep java

在这里插入图片描述
例如

# 求和
[root@fyr ~]# seq -s+ 100  //中间加上加号
[root@fyr ~]# seq -s+ 100 >log.txt   //将log.txt中的信息交给bc 计算
[root@fyr ~]# bc < log.txt    //bc就是计算命令
[root@fyr ~]# seq -s+ 100|bc   //写脚本

在这里插入图片描述

2 重定向— “>、>>、<”

重定向就是使命令改变它所认定的标准输出
“>” 可将结果输出到文件中,该文件原有内容会被删除
“>>” 则将结果附加到文件中,原文件内容不会被删除
“<” 可以改变标准输入。如:

[root@fyr ~]# cat 1.txt >> 2.txt
#将1.txt文件的内容加在2.txt文件的后面

在这里插入图片描述

[root@localhost ~]# setenforce 0
[root@localhost ~]# vim passwd.txt
121212
[root@localhost ~]# passwd --stdin zhangsan <passwd.txt

在这里插入图片描述

交互式硬件设备

  • 标准输入:从该设备接收用户输入的数据
  • 标准输出:通过该设备向用户输出数据
  • 标准错误:通过该设备报告执行出错信息
类型设备文件文件描述编号默认设备
标准输入/dev/stdin0键盘
标准输出/dev/stdout1显示器
标准错误输出/dev/stderr2显示器

重定向的意思就是 ,不通过标准输出到屏幕上,输出到你指定的位置

类型操作符用途
重定向输入<从指定的文件读取数据,而不是从键盘输入
重定向输出1> 或者>将输出结果保存到指定的文件(覆盖原有内容)
重定向输出>>将输出结果追加到指定的文件尾部
重定向标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
重定向标准错误输出2>>标准错误输出结果追加到指定的文件尾部
混合输出&>无论对错都可以重定向将标准输出、标准错误的内容保存到同一个文件中
混合输出命令 1> 文件 2>&1 或者 命令 > 文件 2>&1将标准输出、标准错误的内容保存到同一个文件中

例一
在这里插入图片描述
例二
在这里插入图片描述

2.1 输出重定向

1.命令 >> 文件 2>&1:以追加的方式,把正确输出和错误输出都保存在文件中
2.命令 &> 文件名:以覆盖的方式将正确和错误输出都保存在文件中
3.命令 &>> 文件名:以追加的方式将正确和错误输出都保存在文件中
4.命令>>文件A 2>>文件B:正确的输出到 A 文件中,错误的输出到 B 文件中

1代表 正确输入   2代表 错误输入
&    代表混合

注意:只要涉及到错误输出,> 或者 >> 两侧都不能有空格。
例如

不能将正确和错误一起显示出来 
A [root@centos7 ~]# ls /data /xxx > /data/all.log 2>&1
B [root@centos7 ~]# ls /data /xxx 2> /data/all.log 1>&2 
C [root@centos7 ~]# ls /data /xxx &> /data/all.log  
D [root@centos7 ~]# ls /data /xxx >& /data/all.log  
E [root@centos7 ~]# ls /data /xxx 2>&1  1> /data/all.log
E是错误的

3 连接符号— “;”

当有几个命令要连续执行时,我们可以把它们放在一行内,中间用 “;” 分开。

mkdir myfile;cp /tmp/myfile.txt myfile
#先建立一个目录myfile
#然后把myfile.txt拷贝到新建的目录中 

4 后台执行— “&”

用户有时候执行命令要花很长时间,可能会影响做其他事情。最好的方法是将它放在后台执行。后台运行的程序在用户注销后系统还可以继续执行。当要把命令放在后台执行时,在命令的后面加上"&"。

5 Linux shell的&&和||

shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。

当 $? == 0 时,表示执行成功;当 $? == 1 时,表示执行失败。

shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。

5.1 &&(命令执行控制)

语法格式如下:

command1 && command2 [&& command3 ...] 
#命令之间使用 && 连接,实现逻辑与的功能。 
#只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。 
#只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。 

5.2 ||(命令执行控制)

语法格式如下: 
command1 || command2 [|| command3 ...] 
#命令之间使用 || 连接,实现逻辑或的功能。 
#只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。 
#只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。

shell 提供了两种方法(() 和 {})实现将几个命令合作一起执行,代替独立执行。这种方式并不能控制命令是否需要执行,仅是将多个单独的命令组合在一起执行,最终命令的返回值将由最后一条命令的返回值来决定。

5.3 () (命令组合)

语法格式如下:
(command1;command2[;command3...]) 
# 一条命令需要独占一个物理行,如果需要将多条命令放在同一行,命令之间使用命令分隔符(;)分隔。执行的效果等同于多个独立的命令单独执行的效果。 
# () 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。 
# 命令组合常和命令执行控制结合起来使用。 

6 参数替换—xargs

由于很多命令不支持管道来传递参数,xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数据,并且以空格符或回车符将 stdin 的数据分隔成为参数
另外,许多命令不能接受过多参数,命令执行可能会失败,xargs 可以解决

注意:文件名或者是其他意义的名词内含有空格符的情况

举例一
单独使用 xargs是将键盘上的输入输出在屏幕上

[root@localhost opt]# ls /opt
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt
#我不想固定后面的参数 /opt 我想把后面的参数使用命令生成变成活的
#简单来说就是只要可以加参数的命令后面的参数是可以使用xargs灵活改变的

#xargs默认 是读取键盘输入在输出出来,把输入的东西 传给下一个命令作为参数
[root@localhost opt]# xargs 或xargs  echo(echo可以省略)
333
333

在这里插入图片描述
举例二:seq打印出10

[root@localhost opt]# seq 10
[root@localhost opt]# seq 10 |xargs   取消换行
1 2 3 4 5 6 7 8 9 10
[root@localhost opt]# seq 10 |xargs -n1    处理一个参数换行一次

在这里插入图片描述
举例三:将显示的结果全部删除

#不支持标准输出重定向
[root@localhost opt]# ls *.txt |rm
rm: 缺少操作数
Try 'rm --help' for more information.

[root@localhost opt]# touch {1..10}.txt
#
[root@localhost opt]# ls *.txt |xargs rm  //将显示的结果全部删除

在这里插入图片描述
find 经常和 xargs 命令进行组合,形式如下:

[root@fyr opt]# find /etc/ -type d | wc -l
[root@fyr opt]# find /etc/ -type f | wc -l
[root@fyr opt]# find /etc/ ! -type f | wc -l

在这里插入图片描述

7 基本功能转换—tr

格式:tr [选项]... SET1 [SET2]

SET 是一组字符串,一般都可按照字面含义理解

-d删除
-s压缩
案例一
[root@localhost ~]# tr 123 abc  //只要出现123 就转换成abc

[root@localhost ~]# tr 12345678 abc  //最后一个一直用
[root@localhost ~]# tr -d abc  //删除
2a34bc
234
[root@localhost ~]# tr -s " " 
1     2      3     4
1 2 3 4
[root@localhost ~]# tr -s "a"

在这里插入图片描述
案例二:面试题生成随机密码

[root@fyr ~]# cat /dev/urandom |tr -dc '[:alnum:]' | head -c12

在这里插入图片描述
案例三

[root@fyr ~]# cat 1.txt
aaaaa     11111
bbbbb     22222
[root@fyr ~]# cat 1.txt |tr -c "[a-z]" " "  //用 空格替换除了小写字母之外的所有字符
[root@fyr ~]# cat 1.txt |tr -sc "[a-z]" " "   //加s压缩

在这里插入图片描述

8 提取文本文件数据的指定列—cut

格式:cut [选项]... [文件]...

常用选项

-d (DELIMITER)指明分隔符,默认tab
-f想要获取的字段。
-c取字符

获取的字段
#: 第#个字段,例如 3
#,#[,#]:离散的多个字段,例如 1,3,6
#-#:连续的多个字段, 例如 1-6
混合使用:1-3,7

举例一

[root@fyr ~]# cut -d : -f1,3 /etc/passwd     
//以冒号作为分隔的条件,取文件的第一列和第三列

在这里插入图片描述
案例二

[root@fyr ~]# ll | tail -n +2 | tr -s " "| cut -d " " -f3,9
//从第二行开始,将空行压缩成一个后,再以空格为分隔符,取第3 和第9列

在这里插入图片描述
在这里插入图片描述
案例三

[root@fyr ~]# df | tail -n +2 | tr -s " " | cut -d " " -f5 | tr -d %
# df |tail -n +2     不显示第一行字段
# tr -s " "          将多个空格压缩成一个
# cut -d " " -f5     已空格为分隔符,取第五列
# tr -d %            删除百分号

[root@fyr ~]# df | tail -n +2 | tr -s " " % | cut -d % -f5
# df |tail -n +2     不显示第一行字段
# tr -s " "          将多个空格压缩成一个后 将空格替换成%
# cut -d % -f5       已%为分隔符 取第5列

在这里插入图片描述
在这里插入图片描述
案例四

[root@fyr ~]# df |tail -n +2 |cut -c54
#使用字符取字段,-c 取当前字符的字段
#在xshell的左下角,复制会有字符个数

9 去重----uniq

格式:uniq [OPTION]... [FILE]...
-c显示每行重复出现的次数
-d仅显示重复过的行
-u仅显示不曾重复的行
uniq常和sort 命令一起配合使用

案例一

[root@fyr ~]# cat 1.txt
[root@fyr ~]# uniq 1.txt  //只会将连续的行去重
[root@fyr ~]# uniq -c 1.txt   //显示出现次数

案例二:面试题,查看访问日志,找出访问前10名的用户

[root@localhost ~]# cat log|cut -d" " -f1 
#先取地址
[root@localhost ~]#cat log | cut -d" " -f1 | sort
#再排序一样的ip地址在一起
[root@localhost ~]#cat log | cut -d" " -f1 | sort | uniq -c
#去重
[root@localhost ~]#cat log | cut -d" " -f1 | sort | uniq -c | sort -nr | head 
#再数字排序,取前10 行

案例三:面试题 取两个文件一样或不一样的字段

[root@fyr ~]# cat 1.txt 2.txt
[root@fyr ~]# cat 1.txt 2.txt | uniq -d  //直接使用 看不出来
[root@fyr ~]# cat 1.txt 2.txt | sort | uniq -d //一样的
[root@fyr ~]# cat 1.txt 2.txt | sort | uniq -u //不一样的

    ·

10 硬件信息及其他系统信息

10.1查看cpu—lscpu或cat /proc/cpuinfo

cat /proc/cpuinfo也可看查看到

[root@fyr ~]# lscpu
[root@fyr ~]# cat /proc/cpuinfo

在这里插入图片描述

10.2 查看内存大小—free或cat /proc/meminfo

[root@fyr ~]# free
[root@fyr ~]# cat /proc/meminfo

在这里插入图片描述

10.3查看硬盘和分区情况—lsblk或cat /proc/partitions

[root@fyr ~]# lsblk
[root@fyr ~]# cat /proc/partitions

在这里插入图片描述

10.4 查看机器架构—arch

[root@fyr ~]# arch

在这里插入图片描述

10.5 查看内核版本—uname -r

[root@fyr ~]# uname -r

在这里插入图片描述

10.6系统时间—date

date查看当前系统时间

-d你描述的日期,显示指定字符串所描述的时间,而非当前时间
%F完整日期格式,等价于 %Y-%m-%d
%T时间(24小时制)(hh:mm:ss)
[root@fyr ~]# date -d '-1 day' +%F 
[root@fyr ~]# date  +%F 
[root@fyr ~]# date -d '1 day ' +%F-%T
[root@fyr ~]# date -d "-3 day"      前三天
[root@fyr ~]# date -d "+3 day"  后三天

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值