Shell这东西啊,说到底就是个翻译官。
你把鼠标点来点去,它看不懂。
你,那得低下头,使用键盘敲击命令,如同与那个有些耳背但脾气挺和善的老前辈聊天一般。
你敲击ls,那么他会将当前文件夹里头所包含的东西罗列与你看,你敲击cd ..,于是他会引领你退回到紧挨着的上一层目录。
没有花里胡哨的动画,就一行行字在那儿蹦 。
好多人初次碰到,会感觉这何物呀,乌黑一片,压根比不上windows的那个“此电脑”美观。
但你知道吗,好看的东西往往不中用。
等你有那么一天,需要一口气去处理一万个文件,为这些文件进行重命名,还要对它们进行压缩,之后再上传,哪怕鼠标点击到手抽筋,也根本做不完的时候。
唯有你能够领会,那个颜色漆黑的窗口之中,几行脚本一瞬间快速跑完,那般感受——恰似在炎炎夏日猛灌一口冰爽可乐,通体畅快。

脚本?
不就是把命令攒起来
说白了,脚本特简单。
平日里于终端之中逐个逐个敲下的那些指令,有这样一条,即cd /var/log,接着呢,还有一条是grep"error" ,随后又有一条是tar -cvf log.tar.gz .log ,诸如此类……
对,你仅需去创建一个新的文件,就比如说称作 clean.sh 的这个,然后把那些命令依照相应顺序抄录进去。

写上 #!/bin/bash 在第一行,告知电脑“以bash这个翻译官来读取我的话语”。
然后呢?
chmod +x clean.sh
./clean.sh
完事儿了。
电脑随即如同一个呆萌的愣头青那般,规规矩矩地将你录入的指令逐个依次予以执行。
这就是脚本。
把重复的劳动,交给不会抱怨的机器。
那些看起来像天书的东西
变量不是数学,是抽屉
我们有可能会看到,名为“Tom”的代码,以及输出变量“name”值的那部分代码。
那个被称作等号的符号,并非数学意义上所表达的等于,而是有着这样一种含义,即把右边呈现的字符串放置到左边的盒子里面。
要用的时候,在盒子名前加个 $,把里面的东西取出来 。
条件判断,就是替电脑做选择
if [ -f "file.txt" ]; then...
其翻译过来便是:若于现今目录之下寻觅得着file.txt此一文件,那么……若于现今目录之下寻觅得着file.txt此一文件,那么……有这般情况,要是在当前所处目录当中发现了file.txt这个物件,那么……。
千万别被那些方括号给吓得够呛,它们可是电脑的“眼睛”呢,能够帮你瞅瞅文件到底在不在,还能瞧瞧两个数字究竟谁大谁小。
凭什么这玩意能让你“喝咖啡”
我以前也傻。
新来一台服务器,vim /etc/... 进去改配置。
新来十台服务器,还是这么干。
到了改第五台之际,眼睛已然花了,有一个参数给漏掉了,进而致使所有的服务无一起动起来,最终被骂得极其厉害。
后来学乖了。
写个脚本:
#!/bin/bash
# 一键配置新服务器,喝咖啡专用
echo "正在创建用户..."
useradd -m deploy
echo "正在配置 SSH..."
sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd
echo "搞定了,老板,你的咖啡呢?"
以后再来新机器,就一行 ./setup.sh。
我手端着杯子置身于一旁,眼睛注视着屏幕,屏幕上的内容刷刷刷地滚动着,那种感受,要怎么去形容呢——机器作为被役使的一方,而你身为掌控的主体。
别怕那些奇怪的符号
$0, $1:这是脚本自己拿到的“名字”和“第一个参数”。
假设你以这样的方式 ./user.sh root做操作的时候,那么 $0这个所代表的便是 ./user.sh,而 $1所代表的则是 root。
| :管道。
把前一个命令的输出,直接塞给后一个命令当输入。
举个例子,那 cat access.log | grep"404" 这般,乃是将日志文件之中的内容,交付给 grep 去予以过滤,仅仅把 404 错误的那些行挑选出来。
一开始接触这些,肯定晕。
晕就对了。
谁不是这么过来的。
初涉写脚本之域时,我忘却为变量添加上 $,如此一来,电脑便把变量名视作普通字符串予以打印呈现,于此状况下,我还困惑思索良久,内心暗自揣度“为何屏幕之上所显示的分明是 name,却并非 Tom 呢?”。
而后察觉到,实际上呀,是得书写 echo $name,并非 echo name。
这种傻事,不自己踩一遍坑,看再多教程也记不住。
几个练手的小玩意儿
想知道系统里有多少人能登录?
找到"/bin/bash" 在"/etc/passwd" 中出现的次数并计数。。
想知道现在有多少人连你的服务器?
执行“netstat -ntu”命令,从中筛选出处于“ESTAB”状态的信息,接着对筛选出的信息执行“wc -l”命令以统计行数。
甚至...在命令行里下盘国际象棋?
有人真的这么干过 。
就是这样的Shell,模样瞧着简陋到了极点,然而只要你愿意开动脑筋,它所能展现出的花样,远远超出你的想象范围。
最后说一句:
别指望看一遍就全记住。
前往开启你的终端,敲击几下 cd,再敲击 ls,尝试去创建一个 .sh 文件,将那些每一天你都有必要去敲击的重复性命令放置进去。
往后某一日,当你注视着屏幕,发觉自身在不借助鼠标的情形下,能够顺畅自如且如行云流水般操作电脑之际——。
你就懂我今天说的这些话了。


Comments NOTHING