重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
linxu下的sh命令相当于是shell命令语言的解释器。下面由我为大家整理了linux的sh命令的详细解释的相关知识,希望对大家有帮助!
创新互联是一家集网站建设,冀州企业网站建设,冀州品牌网站建设,网站定制,冀州网站建设报价,网络营销,网络优化,冀州网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
一、Linux中的sh命令的详细解释
sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行沟通!Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。
语法
bash [options] [file]
选项
-c string:命令从-c后的字符串读取。
-i:实现脚本交互。
-n:进行shell脚本的语法检查。
-x:实现shell脚本逐条语句的跟踪。
二、Linux中的sh命令的具体例子
使用-x选项跟踪脚本调试shell脚本,能打印出所执行的每一行命令以及当前状态:
[root@AY1307311912260196fcZ satools]# sh -x check_ssh_login.sh
+ DEFINE=30
+ cat /var/log/secure
+ awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'
++ cat /root/satools/black.txt
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.16=1427
++ awk -F= '{print $1}' + IP=121.42.0.16
++ echo 121.42.0.16=1427
++ awk -F= '{print $2}'
+ NUM=1427
+ '[' 1427 -gt 30 ']'
+ grep 121.42.0.16 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.16
+ echo vsftpd:121.42.0.16
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.72=276
++ awk -F= '{print $1}'
+ IP=121.42.0.72
++ awk -F= '{print $2}'
++ echo 121.42.0.72=276
+ NUM=276 + '[' 276 -gt 30 ']'
+ grep 121.42.0.72 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.72
+ echo vsftpd:121.42.0.72
三、Linux中对.sh文件的操作命令
1、创建test.sh文件
touch test.sh
2、编辑sh文件
vi test.sh
3、保存退出
敲击esc, 然后输入 :wq ,回车退出
4、添加可执行权限,当然默认就是可执行的。
chmod +x test.sh
5、运行文件
(1)./test.sh
(2)sh test.sh
6、删除文件
rm test.sh
1、打开电脑,在电脑的左下角选择终端,这里是kde桌面,需要右键点击才能出现终端选项;
2、点击桌面主文件目录,然后.SH文件,并且在终端输入命令:ll把文件拖入到ll命令后面并且回车;
3、ll命令后看到sh文件缺少x权限,则需要在终端输入命令:chmod+x+文件名,即在x后面加入sh文件名并回车;
4、加入x权限后,./+文件名,回车键后即可看到脚本已经运行了。需要注意的是这里是当前目录,相对路径的执行方法。
./a.sh会用你脚本中第一行的那个#!XXX的shell来执行语句
而sh
a.sh则是用sh来执行语句
还有一种可能就是./a.sh确定了文件路径,而sh
a.sh一定要在a.sh所在目录
在Linux下,如果你需要执行shell脚本,那么应该使用那个命令呢?下面由我为大家整理了linux shell脚本执行命令的相关知识,希望对大家有帮助!
linux shell脚本执行
linux shell脚本执行方法一: 切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:
cd /data/shell
./hello.sh
./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。
linux shell脚本执行方法二: 以绝对路径的方式去执行bash shell脚本:
/data/shell/hello.sh
linux shell脚本执行方法三: 直接使用bash 或sh 来执行bash shell脚本:
cd /data/shell
bash hello.sh
或
cd /data/shell
sh hello.sh
注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用指定bash路径自然也好理解了啊。
linux shell脚本执行方法四: 在当前的shell环境中执行bash shell脚本:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。
sh或是执行脚本,或是切换到sh这个bash里,默认的shell是bash,你可以试试tcsh啊,csh啊,ksh,zsh什么的,看看别的shell是什么样子的。当然,linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的。
还有就是在执行脚本的时候是用sh
+
脚本名的方式来执行,其实,大部分的时候,简单脚本只要权限设置正确,可以直接执行,不需要sh命令的