Linux中的sh命令的详细解释

Linux中的sh命令的详细解释,第1张

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

no such file or directory

没有这样的文件或目录

解决方法

分析原因,可能因为平台迁移碰到权限问题我们来进行权限转换

1)在Windows下转换:

利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。

2)方法

用vim打开该sh文件,输入:

[plain]

:set ff

回车,显示fileformat=dos,重新设置下文件格式:

[plain]

:set ff=unix

保存退出:

[plain]

:wq

再执行,竟然可以了

3)在linux中的权限转换

也可在Linux中转换:

首先要确保文件有可执行权限

#chmod u+x filename

然后修改文件格式

#vi filename

以上三种方法都可以帮助大家解决有关linux执行.sh文件时出现no such file or directiory一问题,有需要的朋友可以参考下了,希望对大家有所帮助。

command not found带这个的行,是前面的可执行程序没有安装。

No such file or directory带这个的行,是前面的文件找不到。

怀疑你这个是从redhat或者centos发行版的linux上拷贝的脚本,放到debian系,比如ubuntu系统上去执行了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7919821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存