首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux下的sh命令

基础概念

sh 是 Linux 系统中的一个 shell,它是 Unix shell 的一种实现。Shell 是一个命令行解释器,它允许用户通过输入命令来与操作系统进行交互。sh 通常是指向某个具体 shell 的符号链接,比如 Bash(Bourne-Again SHell)。

相关优势

  1. 兼容性sh 是 POSIX 标准的一部分,因此它具有良好的跨平台兼容性。
  2. 简洁性sh 的语法简洁,易于学习和使用。
  3. 脚本编写sh 脚本可以用于自动化任务,系统管理,以及简单的程序开发。

类型

  • Bash:最常用的 sh 实现,提供了丰富的功能和强大的脚本能力。
  • Dash(Debian Almquist Shell):设计用于执行 shell 脚本,速度较快,但不支持 Bash 的所有扩展功能。
  • Ksh(Korn Shell):提供了更多的内置命令和更好的编程特性。
  • Csh(C Shell):语法类似于 C 语言,但使用较少。

应用场景

  • 系统管理:通过编写 sh 脚本来自动化系统维护任务,如备份、日志清理等。
  • 脚本编程:用于编写自动化脚本,处理文本文件,数据转换等。
  • 程序开发:在某些情况下,sh 脚本可以作为简单的程序开发工具。

常见问题及解决方法

问题:为什么我的 sh 脚本在执行时没有输出?

原因

  • 脚本中可能没有包含 echoprintf 等输出命令。
  • 脚本可能被设置为静默执行(例如使用了 -n 选项)。
  • 脚本中的命令可能执行失败,但没有错误输出。

解决方法

  • 确保脚本中有输出命令,如 echo "Hello, World!"
  • 检查脚本的执行选项,确保没有使用 -n 等静默执行选项。
  • 使用 set -e 使脚本在遇到错误时立即退出,并使用 set -x 打印执行的每一条命令。

示例代码

代码语言:txt
复制
#!/bin/sh

# 输出示例
echo "Hello, World!"

# 错误处理示例
set -e
set -x

# 尝试执行一个可能失败的命令
ls /nonexistent_directory

参考链接

通过以上信息,您应该能够更好地理解 Linux 下的 sh 命令,以及如何解决一些常见问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • linux nohup命令输出日志_nohup运行sh文件

    这不得不找到了一个Linux命令:nohup (二)基本用法 nohup command [arg … ] [ & ] 拿python test.py 为例子 一般我们运行命令是直接:python test.py.../start.sh >> /usr/local/node/output.log 2>&1 & 该命令是把nohup的log输出到/usr/local/node/output.log 这个文件中 2).../start.sh 该命令是把nohup的log直接输出到当前目录下并保存为nohup.log (四)查看运行的后台进程 1)当我们把进程运行到后台后,我们再找回的时候,就需要用到: ps -aux|...grep start.sh a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分 用ps -def | grep查找进程很方便,最后一行总是会grep自己 用grep...-v参数可以将grep命令排除掉 ps -aux|grep start.sh| grep -v grep 2)查看使用某端口的进程 netstat -ap|grep 8090 3)查看到进程id之后,

    4.3K10

    Linux 下 At 命令

    一、安装At 取决于不同的发行版,at在你的 Linux 系统中可能有,也可能没有。 如果at没有被安装,你可以很容易地使用你发行版的软件包来安装它。...你也会看到一个警告,告诉你你将要运行命令的 shell 环境: warning: commands will be executed using /bin/sh at> 输入一个或者更多你想要执行的命令...例如,想要创建一个任务,运行脚本: /home/linuxize/script.sh: at 09:00 -f /home/linuxize/script.sh 默认情况下,这个命令会产生输出,一旦任务完成...at 09:00 -m 三、batch命令 batch或者它的关联at -b预定任务并且在系统负载允许的情况下,批量执行任务。默认情况下,当系统平均负载在1.5以下的时候,任务将会被执行。...默认情况下,仅仅/etc/at.deny文件存在,并且是空的,这意味着所有用户可以使用at命令。如果你想禁止某一个用户的权限,将他的用户名添加到这个文件中。

    18.8K30

    Linux .sh文件

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。...Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。linux中.sh文件是什么?linux中.sh文件是脚本文件,一般都是bash脚本。...想运行的话就用sh命令运行sh xxx.sh。注:sh或是执行脚本,或是切换到sh这个bash里,默认的shell是bash。...当然,linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的。...还有就是在执行脚本的时候是用sh + 脚本名的方式来执行,其实,大部分的时候,简单脚本只要权限设置正确,可以直接执行,不需要sh命令的。

    9.4K20

    Linux 下的 Pkill 命令

    本文讲述 Linux 命令 pkill 的基础用法。 pkill是一个命令行工具,它根据现有标准,给正在运行的程序进程发送信号。进程可以通过他们的完整名字,部分名字,用户进程或者其他属性指定。...这个pkill命令是procps(或者procps-ng)软件包中的一部分。该软件包被预装在几乎所有的 Linux 发行版上。 pkill是一个基于打印匹配进程列表的pgrep程序的封装。...使用kill -l命令列出所有可用的信号。...^ssh$' 符号^代表字符串开头,字符串$代表字符串结尾 默认情况下,pkill仅仅匹配进程名称。...例如,想要杀死最近启动的 screen: pkill -9 -n screen 二、总结 pkill命令被用来发送信号给正在运行的程序 原文 :https://linuxize.com/post/pkill-command-in-linux

    3K20

    Linux 下的 History 命令

    history ... 467 git push 468 tail -f var/logs/error 469 nano +22,5 functions.sh 470 source project-env...n命令时,意思是执行历史命令列表中第 n 行的命令。并且!-n命令是执行倒数第几行的意思。在下面的例子中,我们执行467行的命令: !467 另一个执行命令的方式是使用!word表达式。...sudo nano /etc/hosts 469 nano +22,5 functions.sh 现在,你想重新运行nano setup.py命令,只需要简单输入: !...保留历史列表 默认情况下,当启动一个新会话时,Bash 会从.bash_history文件中读取历史命令列表。当前会话中执行的命令列表会被保存在内存中,并且当会话关闭时,保存到文件。...当你要修改历史行为,在~/.bashrc或者其他任何用户登录需要加载的配置文件中. 默认情况下,Bash 只保留 500 行历史命令列表。这个HISTSIZE变量允许你修改这个值。

    2.9K20

    Linux下的压缩命令

    ./* -r表示递归 zip [参数] [打包后的文件名] [打包的目录路径] 解压 unzip xahot.zip 不解释 linux zip命令的基本用法是: linux zip命令参数列表:...-q 安静模式,在压缩的时候不显示指令的执行过程 -r 将指定的目录下的所有子目录以及文件一起处理 -S 包含系统文件和隐含文件(S是大写) -t 日期 把压缩文件的最后修改日期设为指定的日期.../xahot 上面的命令操作是将绝对地址的文件及文件夹进行压缩.以下给出压缩相对路径目录 比如目前在Bliux这个目录下,执行以下操作可以达到以上同样的效果. zip –q –r xahot.zip xahot...比如现在我的xahot目录下,我操作的zip压缩命令是 zip –q –r xahot.zip * 以上是在安静模式下进行的,而且包含系统文件和隐含文件 //////////////////////...xahot.zip解压到当前目录 unzip xahot.zip 如果出现这个提示: -bash: zip: command not found   不能执行ZIP压缩,是因为没有安装ZIP, 运行下这条安装命令即可

    3.6K20

    Linux下的man命令

    man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。 语法 man(选项)(参数)    选项可有可无,但参数必须有。...选项 -a:在所有的man帮助手册中搜索; -f:等价于whatis指令,显示给定关键字的简短描述信息; -P:指定内容时使用分页程序; -M:指定man手册搜索的路径。...参数 数字:指定从哪本man手册中搜索帮助; 关键字:指定要搜索帮助的关键字。...也可以这样输入命令:“man [章节号] 手册名称”。...man是按照手册的章节号的顺序进行搜索的,比如: man sleep 只会显示sleep命令的手册,如果想查看库函数sleep,就要输入:(如下所示) man 3 sleep ?

    3K30

    Linux下的 Fsck 命令

    fsck(file system check)是一个命令行工具,它允许你在一个或者多个 Linux 文件系统进行连续监测和交互式修复操作。...在系统无法启动,或者分区无法被挂载的情况下,你可以使用fsck命令去修复损坏的文件系统。 在这篇文章中,我们将会讨论fsck命令....fsck命令式一些列 linux 文件系统检测的封装,根据文件系统类型不同,它可以接受不同的选项。 对于指定的检测,请检查手册,获取更多信息。...在启动时检测文件系统 在大部分 Linux 版本系统中,fsck在以下情况下会在系统启动时自动检测文件系统: 1. 文件系统被标记为"dirty” 2.系统启动了一定的次数 3....总结 fsck是一个用来检测,并修复 Linux 文件系统的命令行具。 想要了解更多关于fsck命令的信息,请参考fsck 手册,或者在终端输入man fsck查看 fsck 手册。

    4.7K21

    Linux下的 W 命令

    在这篇文章中,我们将会谈论w命令。 w是一个命令行工具,它可以展示当前登录用户信息,并且每个用户正在做什么。它同时展示以下信息:系统已经运行多长时间,当前时间,和系统负载。...如何使用 w 命令 w [OPTIONS] [USER] 当无参数、无选项调用w命令时,输出如下: 21:41:07 up 12 days, 10:08, 2 users, load average...uptime命令运行结果一样。...当前进程名称显示在 WHAT WHAT - 用户当前进程和选项、参数 这个命令然后列出所有登录用户,以及他们的相关信息。 如果把一个或者多个用户名作为参数传递给w,输出将会仅仅提供这些用户的信息。...默认这一列是否展示出来,都依赖于你所使用的 Linux 发行版。

    4.4K10

    Linux下的 Whoami 命令

    在这篇文章中,我们将会覆盖whoami命令。 就像名字显示的那样,whoami命令打印出当前用户的用户名。换句话说,它显示当前登录用户的名字。...如何使用 whoami 命令 whoami 的命令语法如下: whoami [OPTION] 为了显示当前系统登录用户的用户名,不带任何选项引入这个命令。...whoami 类似的输出结果将在屏幕上展示,显示当前输入命令的用户的用户名: linuxize whoami可以用在 shell 脚本中,用来检测运行脚本的用户的用户名。...whoami [OPTION] 使用id命令可以获得更多关于用户的信息。 环境变量$USER包含了当前登录用户的用户名: echo $USER 总结 whoami命令代表“Who am I?” 。...运行该命令会打印出当前用户的用户名。

    4.7K20

    Linux 下的 Fdisk 命令

    在 Linux,有几个工具可以用来创建分区,fdisk是最常用的一个。 在本文中,我们将会讨论fdisk命令。 fdisk是一个菜单驱动的命令行工具,它允许你在硬盘上创建并且维护分区表。...一、列出分区 想要列出一个设备中的分区表,运行fdisk命令,加上-l选项,再加上设备名称。...在这个例子中,我们将会使用/dev/sdb: fdisk /dev/sdb 命令提示符将会改变,开启fdisk对话模式: Welcome to fdisk (util-linux 2.34)....默认情况下,新分区类型被设置为“Linux filesystem”,它能满足大部分场景。如果你想修改类型,输入l获取分区类型,并且输入t来修改类型。...想要获得更多关于fdisk命令的信息,在终端中输入man fdisk。

    4.9K50

    Linux下的free命令

    一、简介 free命令是最经常使用的命令之一,用于查看内存使用情况。 free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。...二、free命令说明 2.1 命令行说明 命令格式 free [参数] 常用方法 free -m 这里的m 表示 以 MB 为单位查看内存情况,你可以可以用 -g 以 GB 为单位 2.2...Swap 行(第三行)是交换空间的使用情况。 total 列显示系统总的可用物理内存和交换空间大小。 used 列显示已经被使用的物理内存和交换空间。...shared 列显示被共享使用的物理内存大小。 buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。 available 列显示还可以被应用程序使用的物理内存大小。...请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差 周期性查看怎么办? 使用 free -s 10 ,这里的 10 代表间隔10秒查看 ``

    50110

    Linux 下的 Stat 命令

    stat是一个命令,它用来显示文件或者文件系统的详细信息。 本文详细讲解如何使用stat命令. 使用 stat 命令 stat命令的语法如下: stat [OPTION]......FILE... stat接受一个或者多个输入的FILE,和一系列的选项,用来控制命令的行为和输出结果。...安全内容 Access - 文件最后被访问的时间 Modify - 文件内容最后被修改的时间 Change - 文件属性或者内容最后被修改的时间 Birth - 文件创建时间(Linux 下不支持)...用户的可用剩余块数 Inodes: Total - 文件系统上的总节点数 Free - 文件系统上的剩余节点数 间接(跟进)软连接 默认情况下,stat 不会跟进软连接。...总结 stat命令打印了文件和文件系统的信息。 在 Linux 下,还有其他几个命令可以显示文件信息。ls就是最有用的一个,但是它只显示stat信息中的一部分。

    4.4K10

    Linux 下的 Modprobe 命令

    本文最先发布在: https://www.itcoder.tech/posts/modprobe-command-in-linux/ Linux kernel 是 Linux 操作系统的核心部分。...它管理着系统资源,并且它是你的计算机软硬件之间的桥梁。 Linux kernel 有一个模块化设计。一个 kernel 模块,通常被称为 驱动程序,是用来扩展内核功能的一段代码。...在这篇文章中,我们将会讲解如何使用modprobe来从 Linux 内核中 添加或者移除模块。modprobe是kmod的一部分,它是用来管理 Linux 内核模块的多个程序的封装二进制包。...想要加载模块,运行modprobe命令加上模块名: modprobe module_name modprobe命令将会加载给出的模块,以及任何依赖的模块。在命令行中一次只能指定一个模块。...三、总结 modprobe命令可以允许你添加或者移除 Linux 内核模块。

    8.1K30

    Linux 下的 Pgrep 命令

    本文讲述 Linux pgrep命令的基础知识。 pgrep是一个命令行工具,它允许你基于给定条件来查找正在运行的程序的进程 ID。它可以是进程名字的全称或者一部分,进程运行者,或者其他属性。...这个pgrep命令是procps(或者procps-ng)软件包的一部分,它基本上在所有的 Linux 发行版上都预装了。...一、如何使用pgrep命令 pgrep的命令语法如下: pgrep [OPTIONS] 匹配可以指定为正则表达式。...2257 ssh-agent 6850 ssh 31279 ssh-agent 如果你想严格按照搜索样式准确匹配进程,你需要使用: pgrep '^ssh$' -l 输出: 6850 ssh 默认情况下,...想要获得更多关于pgrep命令的信息,浏览pgrep 手册或者在你的终端输入man pgrep。

    7.9K50

    【Linux系列】Shell 命令:`echo ““ > img.sh`及其应用

    在 Linux 操作系统中,文件操作是日常管理工作中不可或缺的一部分。对于系统管理员和开发者来说,掌握如何高效地处理文件是一项基本技能。...img.sh:这是目标文件的名称,即我们想要清空内容的文件。 将这些元素组合起来,echo "" > img.sh命令的作用就是将一个空字符串重定向到img.sh文件中,从而清空该文件的内容。...命令背后的原理 在 Unix 和 Linux 系统中,文件被视为字节序列。当一个文件被创建时,它被分配了一个初始大小,通常是几个数据块。当你向文件写入数据时,这些数据会填充到文件的数据块中。...echo "" > img.sh命令提供了一种快速且可靠的方法来实现这一点。 与其他命令的比较 虽然echo "" > img.sh命令可以清空文件内容,但还有其他几种方法可以达到同样的效果。...随着对 Linux 命令行工具的深入学习,我们会发现更多这样的实用命令,它们将极大地提高我们的工作效率。

    10510
    领券