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
# 3ssssssss
[root@myserver ~]# grep -v "^#" d.txt
123ssssssss
[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"