Shell常用的指令

本文介绍了Shell常用的一些命令,包括重定向输入输出(>`>>`),管道`|`,逻辑运算符`&&`、`||`,条件判断`[]`,以及文本过滤工具`grep`、`egrep`和文件查找命令`find`。这些基础知识对于Linux系统的日常管理和自动化任务至关重要。
摘要由CSDN通过智能技术生成

Shell 常用的指令

常用的指令

重定向输入输出 : > < --stdin

  • 输入: >
[root@myserver ~]# echo "123456" >a.txt 
[root@myserver ~]# cat a.txt 
123456

  • 输出: <
 cat < /etc/passwd > a.txt 

  • –stdin

    echo "12345678" |  passwd  --stdin root
    

>> 表示追加 , >表示覆盖内容

[root@myserver ~]# echo 123 > a.txt
[root@myserver ~]# cat a.txt 
123
[root@myserver ~]# echo 123 >> a.txt
[root@myserver ~]# cat a.txt 
123
123
[root@myserver ~]# echo 123 >> a.txt
[root@myserver ~]# cat a.txt 
123
123
123
[root@myserver ~]# 


管道: |

将前面命令的执行结果,作为后面命令的输入。

[root@myserver ~]# cat a.txt  | grep 12
123
[root@myserver ~]# ifconfig | grep "ens33"

逻辑与 : &&

连接命令, 当前前面的命令执行完成后继续执行后面的指令,如果前面的命令执行失败,则后面的命令不执行。

[root@myserver ~]# ls && ls -l 
[root@myserver ~]# aa && ls 
bash: aa: command not found...

逻辑或 : ||

连接命令, 当前前面的命令执行完成后不执行后面的指令,如果前面的命令执行失败,则后面的命令执行。

[root@myserver ~]# ls || ls -l
a                Desktop               mytestfile         shellscripts
anaconda-ks.cfg  Documents             mytestfile.tar.gz  Templates
a.txt            Downloads             mytest.txt         test
b.txt            initial-setup-ks.cfg  Pictures           Videos
c.txt            Music                 Public             zlib-1.2.11.tar.gz
[root@myserver ~]# aa || ls 
bash: aa: command not found...
a                Desktop               mytestfile         shellscripts
anaconda-ks.cfg  Documents             mytestfile.tar.gz  Templates
a.txt            Downloads             mytest.txt         test
b.txt            initial-setup-ks.cfg  Pictures           Videos
c.txt            Music                 Public             zlib-1.2.11.tar.gz
[root@myserver ~]# 

条件判断: [ ]

  • -d 检测目录
  • -f 检测文件
[root@myserver ~]# [ -d /root ]  &&  echo "have "
have 
[root@myserver ~]# [ -d /opt/zz ] || mkdir /opt/zz
[root@myserver ~]# ls /opt/
a.txt  b.txt  c.txt  zz

[root@myserver ~]# [ -f d.txt ] || echo 123 >d.txt && ls 
a                Documents             mytestfile.tar.gz  test
anaconda-ks.cfg  Downloads             mytest.txt         Videos
a.txt            d.txt                 Pictures           zlib-1.2.11.tar.gz
b.txt            initial-setup-ks.cfg  Public
c.txt            Music                 shellscripts
Desktop          mytestfile            Templates
[root@myserver ~]# cat d.txt 
123

文本过滤:grep、 egrep

[root@myserver ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@myserver ~]# 

[root@myserver ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@myserver ~]# grep xiaoa /etc/passwd
xiaoa:x:1008:1004::/home/xiaoa:/bin/bash
[root@myserver ~]# 


[root@myserver ~]# egrep "(root|xiaoa)" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
xiaoa:x:1008:1004::/home/xiaoa:/bin/bash

文本处理

  • 空格
  • 注释
[root@myserver ~]# cat d.txt 
123


#####
# 1
# 2
# 3


ssss



ssss
[root@myserver ~]# grep -v "^#" d.txt 
123



ssss



ssss
[root@myserver ~]# grep -v "^#" d.txt | grep -v "^$" 
123
ssss
ssss

[root@myserver ~]# egrep -v "(^#|^$)" d.txt 
123
ssss
ssss

文件查找: find

[root@myserver ~]# find /root -name "*.txt"
/root/.cache/tracker/db-version.txt
/root/.cache/tracker/db-locale.txt
/root/.cache/tracker/parser-version.txt
/root/.cache/tracker/locale-for-miner-apps.txt
/root/.cache/tracker/last-crawl.txt
/root/.cache/tracker/first-index.txt
/root/Desktop/b.txt
/root/mytest.txt
/root/d.txt
/root/.mozilla/firefox/53suypww.default-default/pkcs11.txt
/root/.mozilla/firefox/53suypww.default-default/SiteSecurityServiceState.txt
/root/.mozilla/firefox/53suypww.default-default/SecurityPreloadState.txt
/root/.mozilla/firefox/53suypww.default-default/TRRBlacklist.txt
/root/.mozilla/firefox/53suypww.default-default/AlternateServices.txt
/root/a.txt
/root/b.txt
/root/a/b/a.txt
/root/a/b/b.txt
/root/c.txt


查找当前用户主目录下的所有文件:

[root@linuxcool ~]# find $HOME -print

列出当前目录及子目录下所有文件和文件夹:

[root@linuxcool ~]# find .

在/home目录下查找以.txt结尾的文件名:

[root@linuxcool ~]# find /home -name "*.txt"

在/var/log目录下忽略大小写查找以.log结尾的文件名:

[root@linuxcool ~]# find /var/log -iname "*.log"

搜索超过七天内被访问过的所有文件:

[root@linuxcool ~]# find . -type f -atime +7

搜索访问时间超过10分钟的所有文件:

[root@linuxcool ~]# find . -type f -amin +10

找出/home下不是以.txt结尾的文件:

[root@linuxcool ~]# find /home ! -name "*.txt"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值