加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Linux的 Shell 理解和使用

发布时间:2020-12-15 07:17:31 所属栏目:安全 来源:网络整理
导读:p align="left"Shell为命令解释器,把用户命令解释为内核可识别的机器语言,然后翻译命令结果给用户,其也是一个强大的编程语言,是解释执行的脚本语言,无编译,与python机制基本相同。 p align="left"Shell内部可以直接调用Linux系统命令 p align="left"?

<p align="left">Shell为命令解释器,把用户命令解释为内核可识别的机器语言,然后翻译命令结果给用户,其也是一个强大的编程语言,是解释执行的脚本语言,无编译,与python机制基本相同。


<p align="left">Shell内部可以直接调用Linux系统命令


<p align="left">?


<h2 align="left"><span style="font-size: 15px;">echo命令的基本使用
<p align="left">【echo “内容“ 】输出命令


<p align="left">【echo -e “内容“ 】输出,并支持转义字符


<p style="margin-left: 30px;" align="left">转义符:


<p style="margin-left: 60px;" align="left">【t】制表符,tab键


<p style="margin-left: 60px;" align="left">【a】警告音,


<p style="margin-left: 60px;" align="left">【b】退格,删除左边一个字符、


<p style="margin-left: 60px;" align="left">【c】取消最后的换行,与-n效果一致、


<p style="margin-left: 60px;" align="left">【f】换页符,横向占位


<p style="margin-left: 60px;" align="left">【v】与上相同


<p style="margin-left: 60px;" align="left">【n】换行


<p style="margin-left: 60px;" align="left">【r】回车,光标回到行首


<p style="margin-left: 60px;" align="left">【<a href="file://xn--66j/">】


<p align="left">【echo -e "e[1;31m 输出内容 e[0m"】红色输出abd


<p align="left">其中:【e[1;】表示开始标志,【[0m】为结束标志,【31m】表示颜色,可有(黑色 30m)(红色 31m)(绿色 32m)(黄色 33m)(蓝色 34m)(洋红 35m)(青色 36m)(白色 37m)


<p align="left">?


<h2 align="left"><span style="font-size: 15px;">输入输出重定向
<p align="left">标准输入:键盘(/dev/stdin)


<p align="left">标准输出:显示器(/dev/stdout)


<p align="left">标准错误输出:显示器(/dev/stdout)


<p align="left">输出重定向:


<p style="margin-left: 30px;" align="left">【命令 > 文件】以覆盖的方式把正确输出重定向到文件中


<p style="margin-left: 30px;" align="left">【命令 >> 文件】以追加的方式把正确的输出重定向到文件中


<p style="margin-left: 30px;" align="left">【命令 2> 文件】标准错误输出重定向,覆盖


<p style="margin-left: 30px;" align="left">【命令 2>> 文件】标准错误输出重定向,追加


<p style="margin-left: 30px;" align="left">【命令 >>正确文件? 2>>错误文件】对命令判断,分别保存命令结果


<p align="left">?


<h2 align="left"><span style="font-size: 15px;">多命令顺序执行
<p align="left">【命令1; 命令2;命令3】执行命令1到3,错误不影响下一个命令执行


<p align="left">【命令1 && 命令2 && 命令3】前面的命令必须正确执行,才能执行后面的命令


<p align="left">【命令1 || 命令2】命令1正确执行,就不会执行命令2,命令1错误时才会执行命令2


<p align="left">【命令 && echo yes || echo no】判断命令是否正确执行


<p align="left">【命令1 | 命令2】命令1的正确输出作为命令2的操作对象,管道符


<p style="margin-left: 30px;" align="left">如:【ls -lh /usr/bin | grep -i --color=auto pip3】查看pip3的执行文件


<p align="left">?


<h2 align="left"><span style="font-size: 15px;">通配符
<p align="left">匹配文件名,对于命令:ls 、find、cp


<p align="left">【?】匹配任意一个字符


<p align="left">【】匹配任意0个或多个字符,如【rm -r 】删除目录下所有文件和文件夹


<p align="left">【[字符1字符2字符3]】匹配字符1到字符3的其中一个字符


<p align="left">【[a-z]】表示匹配小写字母a到z的任意一个字符


<p align="left">【[^123]】表示不匹配括号内的字符


<p align="left">?


<h2 align="left"><span style="font-size: 15px;">正则表达式
<p align="left">匹配字符串,对于命令:grep、awk、sed


<p align="left">基本支持标准的正则表达式


<p align="left">特殊:


<p style="margin-left: 30px;" align="left">【{n,m}】n到m次,需要加斜线


<p style="margin-left: 30px;" align="left">Shell中无【()】、【+】、【?】


<p align="left">?


<h2 align="left"><span style="font-size: 15px;">特殊字符
<p align="left">【‘内容’】单引号的内容仅仅表示字符串


<p align="left">【“内容”】双引号的内容会解释特殊符号,如()转义、($)调用变量、()反引号等</p> <p align="left"&gt;【命令`】反引号,内容为引用的命令,可用【$(命令)】代替


<p align="left">【#】表示注释当前行之后的内容


<p align="left">【$变量】引用变量的值时


<p align="left">?


<h2 align="left"><span style="font-size: 15px;">变量
<p align="left">变量的值全部以字符串保存


<p align="left">【set】查看系统所有变量


<p align="left">【unset 变量名】删除变量


<p align="left">?


<p align="left">用户自定义变量


<p align="left">本地变量,只在当前shell中生效


<p align="left">声明:namex=”wo sh”


<p align="left">调用:$namex


<p align="left">追加:namex=“$namex”” dongxiaodong”? 或者 namex=${namex}” dongxiaodong”


<p align="left">?


<p align="left">环境变量


<p align="left">父子shell的共享变量


<p align="left">【pstree】查看当前所属shell位置


<p align="left">通过ssh连接的客户端有3个,其中1是root,2是当前普通用户,3是另一个普通用户


<p align="left">

<img src="https://www.52php.cn/res/2019/03-02/08/c300ed4e5daaad6768b3c306edc511cc.png" alt="">


<p align="left">【export 变量名="初始值"】定义环境变量


<p align="left">【bash】进入子shell,可直接访问环境变量,可用【exit】返回上一级


<p align="left">【env】查看所有环境变量


<p align="left">【unset 变量名】删除变量


<p align="left">?


<p align="left">位置参数变量:


<p align="left">【$n】n可为[0,9],超过时可用{ },${100}


<p align="left">?

<img src="https://www.52php.cn/res/2019/03-02/08/f944eca1b2eeb50189685ed2157fe1b1.png" alt="">


<div class="cnblogs_code">


<span style="color: #008000;">#<span style="color: #008000;">接收第0个参数
echo <span style="color: #800000;">"<span style="color: #800000;">当前程序为:$0<span style="color: #800000;">"

<span style="color: #008000;">#<span style="color: #008000;">接收第一个和第二个参数
n1=$1<span style="color: #000000;">
n2=$2<span style="color: #000000;">

echo <span style="color: #800000;">"<span style="color: #800000;">结果为:<span style="color: #800000;">"$(( $n1 * $n2 ))

系统预定义变量:

键盘输入

判断条件

简单的 if 比较:

[ == echo ls - [ 4 -eq 4 echo echo exit 2

简单的 case 编程:

read -t 30 -p case echo echo * echo esac

简单的 for 循环:

i 1 2 5 5 8 done

or

s= ((i= 1;i<=100;i=i+1 s=$(($s+ echo

简单的while循环

i=1 s= [ $i -le 100 s=$(( $i+ i=$(( $i+1 echo

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读