1. linux中的shell究竟是什么
【一】
shell的含义:
首先shell的英文含义是“壳”;
它是相对于内核来说的,因为它是建议在核的基础上,面向于用户的一种表现形式,比如我们看到一个球,见到的是它的壳,而非核。
Linux中的shell,是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息;
【二】shell在Linux中的存在形式:
由于Linux不同于Windows,Linux是内核与界面分离的,它可以脱离图形界面而单独运行,同样也可以在内核的基础上运行图形化的桌面。
这样,在Linux系统中,就出现了两种shell表现形式,一种是在无图形界面下的终端运行环境下的shell,另一种是桌面上运行的类型Windows
的MS-DOS运行窗口,前者我们一般习惯性地简称为终端,后者一般直接称为shell
【三】shell如何执行用户的指令
shell有两种执行指令的方式,一种方法是用户事先编写一个sh脚本文件,内含shell脚本,而后使用shell程序执行该脚本,这种方式,我们习惯称为shell编程。
第二种形式,则是用户直接在shell界面上执行shell命令,由于shell界面的关系,大家都习惯一行行的书写,很少写出成套的程序来一起执行,所以也称命令行。
总结:shell可以说只是为用户与机器之间搭建成的一个桥梁,让我们能够通过shell来对计算机进行操作和交互,从而达到让计算机为我们服务的目的。
以上。
参考资料:
【shell的定义】http://ke..com/view/849.htm
【shell学习】http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80
2. linux榛樿shell鏄浠涔坙inux榛樿shell
linux/bin/bash鏄浠涔堟剰镐濓纻
/bin浠h〃镄勬槸binary,浜岃繘鍒舵枃浠讹纴涓昏佸氨鏄涓浜涚郴缁熷懡浠わ绂杩樻湁涓涓甯哥敤镄勭洰褰曟槸/usr/bin锛屽嚑涔庢墍链夌殑搴旂敤绋嫔簭镄勫彲镓ц屾枃浠堕兘瑁呰繖閲岀殑銆/bin/bash璇存槑浣犵殑shell绫诲瀷涓篵ash锛宐ashshell鏄链甯哥敤镄勪竴绉岘hell,鏄澶у氭暟Linux鍙戣岀増榛樿ょ殑shell銆傛ゅ栬缮链塁shell绛夊叾瀹僺hell銆
linux涓榛樿ょ殑shell鏄浠涔堬纻
bash
Linux绯荤粺榛樿や娇鐢ㄧ殑Shell鏄痓ash銆侺inuxshell锛歋hell鏄绯荤粺镄勭敤鎴风晫闱锛屾彁渚涗简鐢ㄦ埛涓庡唴镙歌繘琛屼氦浜掓搷浣灭殑涓绉嶆帴鍙c傚畠鎺ユ敹鐢ㄦ埛杈揿叆镄勫懡浠ゅ苟鎶婂畠阃佸叆鍐呮牳铡绘墽琛屻傚疄闄呬笂Shell鏄涓涓锻戒护瑙i喷鍣锛屽畠瑙i喷鐢辩敤鎴疯緭鍏ョ殑锻戒护骞朵笖鎶婂畠浠阃佸埌鍐呮牳銆
linux锻戒护涓镄剆h鏄浠涔堟剰镐濓纻
Bourneshell(sh)鍙浠ヨ存槸涓涓骞冲彴.鐩存帴阃氩悜鍐呮牳镄.浣犺緭鍏SH绛変簬鏀瑰彉浜嗕綘镄剆helllinux榛樿ょ殑shell鏄痓ash浣犳敼鎴愪简,bourneshell浣犺緭浜哹ash灏辨敼锲炴潵鍟.$绗︿唬琛ㄦ櫘阃氱敤鎴.
鍦╨inux涓嬩粈涔堟槸bash.浠涔埚张鏄痵hell锛
bash鏄涓涓涓篏NU椤圭洰缂栧啓镄刄nixshell锛屼篃灏辨槸linux鐢ㄧ殑shell銆
Shell淇楃О澹筹纸鐢ㄦ潵鍖哄埆浜庡唴镙革级锛屾槸鎸団沧彁渚涗娇鐢ㄨ呬娇鐢ㄧ晫闱⑩濈殑杞浠讹纴灏辨槸涓涓锻戒护琛岃В閲婂櫒銆
BASH鏄疭HELL镄勪竴绉嶏纴鏄澶у氭暟LINUX鍙戣岀増榛樿ょ殑SHELL锛岄櫎BASHSHELL澶栬缮链塁SHELL绛夊叾瀹幂被鍨嬬殑SHELL銆
3. Linux下shell脚本PING命令只要延迟高于100ms就发送个邮件
#!/bin/bash第三行Timeout_limit值写错了,应该是100哈,代码提交了不能改了。你这个不需要把延迟结果保存在文件的,而是应该需要作定时检测的。
Timeout=0;
Timeout_limit=1;
Timeout_flag=0;
IP="8.8.8.8"
while [ 1 ]
do
# 取平均延迟的整数位
Timeout="`ping $IP -c 3 | grep 'min/avg/max/mdev'|awk '{print $4}'|cut -b ƍ'`"
if [ $Timeout -ge $Timeout_limit ] && [ $Timeout_flag -ne 1 ]; then
echo ping timeout, average delay=$Timeout ms
mail -s 'Ping Delay' 邮箱 < ar/log/boot.log
Timeout_flag=1
fi
if [ $Timeout -lt $Timeout_limit ] && [ $Timeout_flag -ne 0 ]; then
echo ping recovery, average delay=$Timeout ms
mail -s 'Ping recovery' 邮箱 < ar/log/boot.log
Timeout_flag=0
fi
sleep 5
done
4. Linux最常用的Shell命令
有些人仍然会有这种愚蠢的想法,他们认为使用Linux就必须使用Linux
shell命令。胡说!你可以不懂得任何Linux命令,比如说ps,grep,ls等,但是你仍然可以使用很多现代的Linux桌面发行版。
Linux的系统管理员与桌面用户不一样,他们不像桌面用户一样使用Cinnamon,GNOME,Unity,或者KDE,他们所有的时间都是用Linux命令。
对于桌面用户来讲,若是了解一部分Linux命令,你可以更好的使用Linux,体验它的魅力,下面列举出了一些:
Shell基础:
你可以通过打开Linux的terminal(终端)来执行Shell命令。Shell的种类有很多种,例如CSH,Bourne
Shell,Korn
Shell。在现在的大多数Linux发行版中,默认的Shell一般都是Bourne
again
shell(bash)。
想看看你的Shell是哪一种,执行下面的命令
echo
$SHELL
在Linux中,$符号代表一个shell变量。所有的shell都用这种方式使用变量。有一些shell变量在你的系统启动的时候就有了默认值。例如,$SHELL;$LOGNAME是你的登录名,而$PATH变量指明了你的shell命令的搜索范围。
echo命令的作用就是打印出你的输入。如果你的输入具有shell的特殊意义,例如shell变量,他就输出变量的值。
一个重要的地方是,你要注意文本的大小写。例如,ls,是DOS的dir命令的Linux版本。这个命令列出当前工作目录下的文件列表。如果你输入的是LS,你得到的只能是“找不到命令”的错误信息。
另外在Linux
shell命令中一个重要的地方是,你可以将命令串起来。这是Unix/Linux从第一天开始就有的巧妙的特点。最简单的将命令连起来的办法就是使用“|”,我们称之为“pipe”。第一个命令的输出就是下一个命令的输入。
Linux命令有自己的语法规则:
基本的语法就像这样:
command
-option
file
例如:
ls
-la
这行命令的意义是输出当前目录的所有文件的文件名,l代表“long”,a代表“all”,有了l选项,你会发现,输出的内容比较丰富,不只包括文件
名,还有文件的访问权限,所有者,所属组等。你会发现这个命令会在屏幕上输出大量的信息,如果当前目录的文件比较多的话。
现在就是“pipe”出场的时候了。
ls
-la
|
more
你会在屏幕上看到如下信息:
你也可以在大多数Linux命令中使用通配符。通配符就是可以代表文件名中任何未知的字符或字符串。例如,*就代表任意字符串,?代表单个字符。例如: