Shell常用语法和案例

awesome-shell

ag – 通过目录层次结构,快速搜索文本

shell大全

网道Bash基础教程

Linux shell 中$() ` `,${},$[] $(()),[ ] (( )) [[ ]]作用与区别

获取时间到变量

currentdate=$(date +%Y%m%d)

字符串操作

向文件末尾追加多行文本

here文档语法

Here 文档内部会发生变量替换,同时支持反斜杠转义,但是不支持通配符扩展,双引号和单引号也失去语法作用,变成了普通字符。

cat >> 1.txt <<EOF
export NVM_DIR="\$HOME/.nvm"
[ -s "\$NVM_DIR/nvm.sh" ] && \. "\$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "\$NVM_DIR/bash_completion" ] && \. "\$NVM_DIR/bash_completion"  # This loads nvm bash_completion
EOF

使用指定用户运行命令

sudo -u username command
su -c "cd /www/wwwroot/tuntun/server_php && /www/server/php/74/bin/php artisan schedule:run >> /dev/null 2>&1" -s /bin/sh www

文本操作

sed 替换文本

linux中sed命令替换包含引号、斜杠等特殊字符的的使用

Shell中使用grep、sed正则提取和替换字符串

Shell判断字符串包含关系的几种方法

应用场景描述

安装nvm脚本时需要添加环境变量,卸载时又想把环境变量删除。可以在写入时,在文件末尾追加特殊标识,删除时通过sed删除末尾有标识行

#写入时增加##nvm标识
cat >> /home/${run_user}/.bashrc <<EOF
export NVM_DIR="\$HOME/.nvm"##nvm
[ -s "\$NVM_DIR/nvm.sh" ] && \. "\$NVM_DIR/nvm.sh"##nvm
[ -s "\$NVM_DIR/bash_completion" ] && \. "\$NVM_DIR/bash_completion"##nvm
EOF

#删除末尾有##nvm的行,通过元字符$匹配
sed -i '/##nvm$/d' .bashrc

获取系统信息

查看Linux内核版本

#方式一
cat /proc/version
Linux version 5.13.0-51-generic (buildd@lcy02-amd64-046) (gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #58~20.04.1-Ubuntu SMP Tue Jun 14 11:29:12 UTC 2022

#方式二
uname -a
Linux MINIPC-PN51-E1 5.13.0-51-generic #58~20.04.1-Ubuntu SMP Tue Jun 14 11:29:12 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

查看Linux发行版相关信息

#方式一
lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.4 LTS
Release:	20.04
Codename:	focal

#方式二
cat /etc/issue
Ubuntu 20.04.4 LTS

#仅适合Redhat系的Linux
cat /etc/redhat-release

输入输出重定向

Shell 输入/输出重定向

Linux shell中2>&1的含义解释 (全网最全,看完就懂)

数组常用操作

#读取目录下名字为php*的目录,存为数组, 然后合并数组
enable_dir=(`find /usr/local/php/etc/php.d -maxdepth 1 -type f -name "*.ini" | sort`)
disable_dir=(`find /usr/local/php/etc/php.d/disable -maxdepth 1 -type f -name "*.ini" | sort`)
extension_dir=(${enable_dir[@]} ${disable_dir[@]})

条件语句

Shell脚本IF条件判断和判断条件总结

Shell学习资料笔记

极客时间

https://github.com/geektime-geekbang/geekbanglinux/tree/master/ppt

Bash4.0 中文手册

Bash4.0 英文手册

https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html

Bash教程

https://wangdoc.com/bash/index.html

explainshell

https://explainshell.com/

Shell常用语法和案例

简单笔记

执行方式 bash ./xxx.sh ./xxx.sh (子进程运行) | source ./xxx.sh . xxx.sh (当前进程运行,会更改当前目录)

bash ./xxx.sh 可以不需要赋予执行权限 其它的方式需要 chmod u+x(r) xxx.sh

内建命令不需要创建子进程,对当前shell生效

环境变量配置

Linux环境变量设置/etc/profile、/etc/bashrc、~/.profile、~/.bashrc区别

Linux下/etc/profile 文件和/etc/profile.d区别以及相关说明

/etc/profile.d/目录增加脚本,或者/etc/profile增加内容后执行如下命令生效

source /etc/profile