Shell 知识点2020

语法相关

shell 脚本中的空格语法

=
赋值的时候, 左右不留空格.

对比的时候, 左右要留空格.

中括号 [] 与其中间的代码应该有空格隔开

大括号

在Linux中, 有时候使用{}来表示, 当前命令同时对多个值进行操作, 中间用,分隔.
像是ls 一般情况下下个ls 只能看到当前或指定目录.
如果是ls {.,../,../../}, 则依次输出三个目录情况

.:
bin  GNU-AGPL-3.0  MPL-2  README  THIRD-PARTY-NOTICES

../:
mongodb  mysql

../../:
bin   dev  home         lib    media  opt   root  sbin  sys  usr
boot  etc  jettodevops  lib64  mnt    proc  run   srv   tmp  var

= 和 ==

在对字符串进行操作的时候 = ==是等价的.
在对数字进行操作的时候, 有区别, =会被看作,是赋值.
所以, 一般情况下, 对比的情况下尽量用==,赋值用=


实操

直接kill掉查找出来的对应进程

# 查找过滤mysql相关进程
ps -ef |grep mysql
# 输出对应进程号
ps -ef |grep mysql|awk '{print $2}'

# kill 掉查出来对应的进程号, 但是会提交某个进程找不到.(ps -ef的时候会显示查找进程本身, 结束查找后就没有该进程了)
kill -9 `ps -ef |grep mysql|awk '{print $2}'`

# kill 掉查出来对应进程(除grep进程)外的所有进程
kill -9 `ps -ef |grep mysql|grep -v grep|awk '{print $2}'`


## 另一种实现方式
# 不是通过``符号改变优先级, 而是添加对应的`kill -9`的输形成整体作为一个命令, 传给`sh`
ps -ef|grep mysql|grep -v grep|awk '{print "kill -9 "$2}'|sh

Linux只删除文件

# 列举目录下所有文件, 过滤,
ls |grep -v .jar|grep -v test|xargs rm -rf

字符串转换大小写

  1. typeset 命令
    typeset 可以转换变量的值, 这种改变是永久的.修改的时候, 只需要输入变量名不用加$, 因为typeset是直接改内存的值.
    但是某些时候不起作用, 例如值为AgileCenter时候
str="aaaZZZ"
typeset -l str
echo $str
typeset -u str
echo $str
  1. tr
#大转小
echo "aaaZZZ" | tr '[A-Z]' '[a-z]'
#小转大
echo "aaaZZZ" | tr '[a-z]' '[A-Z]'
posted @ 2021-01-30 21:48  Jrri  阅读(57)  评论(0编辑  收藏  举报