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

linux下sh命令详解

Linux下sh命令详解

基础概念

sh 是 Linux 系统中的一个 shell,即命令解释器。它用于解释用户输入的命令并执行相应的操作。sh 通常是指向某个具体 shell 的符号链接,比如 Bourne Shell (/bin/sh) 或 Bash (/bin/bash)。在大多数 Linux 发行版中,sh 默认指向 Bash。

相关优势

  1. 兼容性sh 作为 POSIX 标准的一部分,具有良好的跨平台兼容性。
  2. 简洁性sh 命令通常较为简洁,适合编写简单的脚本。
  3. 广泛支持:几乎所有的 Linux 系统都预装了 sh,因此使用它不需要额外安装。

类型

  • Bourne Shell (sh):最初的 Unix shell,由 Stephen Bourne 开发。
  • Bash (Bourne Again SHell):是 sh 的扩展版本,提供了更多的功能和更好的用户体验。
  • Dash (Debian Almquist Shell):一个轻量级的 sh 实现,速度较快,常用于 Debian 及其衍生系统。

应用场景

  • 脚本编写sh 常用于编写自动化脚本,如系统初始化脚本、备份脚本等。
  • 命令行操作:通过 sh 可以执行各种系统命令,进行文件管理、进程控制等操作。
  • 兼容性需求:在一些需要严格遵循 POSIX 标准的场景中,使用 sh 可以确保脚本的兼容性。

常见问题及解决方法

  1. 找不到命令
    • 问题:执行某些命令时提示 command not found
    • 原因:可能是环境变量 PATH 没有包含该命令的路径。
    • 解决方法:检查并修改 PATH 环境变量,确保包含该命令的路径。例如:
    • 解决方法:检查并修改 PATH 环境变量,确保包含该命令的路径。例如:
  • 脚本执行权限问题
    • 问题:执行脚本时提示 Permission denied
    • 原因:脚本文件没有执行权限。
    • 解决方法:使用 chmod 命令添加执行权限。例如:
    • 解决方法:使用 chmod 命令添加执行权限。例如:
  • 变量未定义
    • 问题:脚本中使用未定义的变量时提示 variable not set
    • 原因:变量在使用前未定义或未正确赋值。
    • 解决方法:确保在使用变量前进行定义和赋值。例如:
    • 解决方法:确保在使用变量前进行定义和赋值。例如:
  • 循环和条件语句错误
    • 问题:脚本中的循环或条件语句执行不正确。
    • 原因:语法错误或逻辑错误。
    • 解决方法:仔细检查循环和条件语句的语法,确保逻辑正确。例如:
    • 解决方法:仔细检查循环和条件语句的语法,确保逻辑正确。例如:

示例代码

以下是一个简单的 sh 脚本示例,用于打印当前日期和时间:

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

echo "Current date and time:"
date

将上述代码保存为 print_date.sh,然后赋予执行权限并运行:

代码语言:txt
复制
chmod +x print_date.sh
./print_date.sh

参考链接

通过以上内容,您应该对 Linux 下的 sh 命令有了较为全面的了解。如果还有其他问题,欢迎继续提问。

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

相关·内容

linux下vim命令详解

高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的: :qx 开始记录宏,并将结果存入寄存器x q 退出记录模式 @x 播放记录在x寄存器中的宏命令...稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模 式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如...标签命令 :tabe fn 在一个新的标签页中编辑文件fn gt 切换到下一个标签页 gT 切换到上一个标签页 :tabr 切换到第一个标签页 :tabl 切换到最后一个标签页...窗口命令 ctrl+w s 水平分割窗口 ctrl+w w 切换窗口 ctrl+w q 退出当前窗口(由于同时有多个文件,此命令不会影响其他窗口) ctrl+w v 垂直分割窗口...h,j,k,l 上,下,左,右 ctrl-f 上翻一页 ctrl-b 下翻一页 % 跳到与当前括号匹配的括号处,如当前在{,则跳转到与之匹配的}处 w 跳到下一个字首

2.5K30

Linux下netstat命令详解

一、介绍 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。...-p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令。...四、netstat网络状态详解 一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手 如图: SYN:(同步序列编号,Synchronize Sequence Numbers...Linux的相关keepalive参数 1、tcp_keepalive_time – INTEGER How often TCP sends out keepalive messages when keepalive...五、常用netstat相关命令 1、列出所有端口 #netstat -a 2、列出所有 tcp 端口 #netstat -at 3、列出所有 udp 端口 #netstat -au 4、只显示监听端口

1.9K10
  • Linux下top命令详解

    豌豆贴心提醒,本文阅读时间7分钟 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。...该命令可以按CPU使用、内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。 下面详细介绍它的使用方法。...首先来认识一下各列的含义。 默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。...c:显示整个命令行而不只是显示命令名 内部命令 在top命令执行过程中可以使用的一些交互命令。 从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。...这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。 h:显示帮助画面,给出一些简短的命令总结说明。 k:终止一个进程。

    5.4K50

    Linux下ps命令详解

    linux上进程有5种状态:  1. 运行(正在运行或在运行队列中等待)  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)  3....SW Sep10 0:00 [kswapd] 具体命令解释如下:    1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。   2)ps -A 显示所有程序。   ...8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。   9)ps s 采用程序信号的格式显示程序状况。   10)ps S 列出程序时,包括已中断的子程序资料。   ...附:linux中top与ps区别 一:ps命令 以下是 ps 的最简单形式:  $ ps PID TTY          TIME CMD 3884 pts/1    00:00:00 bash 3955...主要参数说明: 1) 进程用户ID(UID), 虽然 uid 通常是指数字型的标识,但在第一列下指定的是用户名,标记为 UID 2) 进程ID (PID) 3) 父进程ID (PPID) PPID 是父进程的标识号

    3.5K51

    Linux下的find命令详解

    这篇讲讲Linux下文件查找的命令:locate和find,其中locate很简单,主要讲解find命令 locate 用法 locate to/find/file/name 直接加上需要的文件名就行了...更新文件数据库 updatedb 速度非常慢,视你的系统中文件的多少决定 find 由于locate的非精确查找和非实时查找的特性,导致locate用的不多 find支持实时查找,拥有众多查找选项,是Linux...上查找最常用的,但是缺点也是比较明显: 如果文件数量很多的话,查找起来很慢 whatever,find依然是最有用且最常用的Linux查找命令 用法 find支持文件名的正则表达式查找,按文件修改时间查找...,按文件大小查找,按文件权限查找,按文件类型查找等,查找到以后还支持直接对查找到的文件使用命令,功能非常强大 典型的find命令的写法是: find 查找路径 查找的标准 查找到之后的动作 比如:...find /home -type d -ls 意思是: 找出/home/下所有的目录,并显示目录的详细信息 选项 按文件名查找 -name 直接加文件名,且支持文件名通配 iname

    1.9K100

    Linux下diff命令用法详解

    在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也有很多很强大的工具 这些比对工具其实都是基于 diff 命令,下面就详细介绍一些 diff 命令的用法...diff 命令是一个分析文件信息的命令,可以打印出文件之间的差异。它可以逐行地比较两个文件的内容,也可以递归地比较文件夹的内容。...使用 diff 命令查看两个文件是否有差异: $ diff diffsample1 diffsample2 这时 diff 命令没有输出任何信息,说明这两个文件的内容是完全相同的。...可以看到 diff 命令找出了大小写的不同,如果我们不想检查大小写,可以使用 -i 选项。...diff 命令还有许多选项,可以用来忽略某些情况或者更改输出等,我们可以使用 man 命令来获取更多的相关信息。 完

    2.8K20

    Linux下top命令高级用法详解

    好文推荐 Linux shell编程常用方法总结 C++基础知识精髓 Linux下AutoMake创建工程流程 Qt5.7.1添加支持openssl zynq平台移植python3.10.5 作为一名Linux...top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。top可以动态显示过程,不断刷新当前状态。top命令提供了实时的对系统处理器的状态监视。...交互输入 过滤用户:在top命令显示中,输入u,然后输入用户名,则可以查看相应的用户进程。 在top命令下,输入1,可以看到各个CPU的使用情况。...在top命令下,输入i,可以隐藏闲置或僵死的进程,效果跟输入top -i是一样的。 top命令默认以K为单位显示内存大小,可以通过大写字母E来切换内存信息区域的显示单位。...小结 ★top命令是linux下常用的查看系统信息的命令,对程序定位问题,包括CPU占用率,内存泄漏都有很好的参考作用。要学会利用这些系统命令快速定位工作中的问题,有事半功倍的效果。

    2.9K20

    linux下fdisk命令的用法详解

    linux下fdisk命令的用法详解 ((1)通过fdisk -l 查看机器所挂硬盘个数及分区情况;一、fdisk用法详解 举例说明: [root@localhost ~]# fdisk -l Disk...25748 30401 37383223+ 83 Linux 以上数据说明: 硬盘分区的表示:在Linux 是通过hd*x 或 sd*x 表示的,其中 * 表示的是...1、输入命令:fdisk /dev/sda 2、进入fdisk交互界面。出现提示:command(m for help) 3、输入m,回车,显示帮助信息。...估算一个存储设备是否被完全划分; 估算一个硬盘是否完全被划分,只要看 fdisk -l 输出的内容中的 cylinders(柱体) 上一个分区的End 和 下一个分区的Start是不是一个连续的数字,另外要看一下每个硬盘设备的...fdisk -l 的开头部份,看一下他的 cylinders(柱体)的值; Disk /dev/sda: 250.1 GB, 250059350016 bytes 255 heads, 63 sectors

    4.7K10

    详解Linux命令行下常用svn命令

    命令行下查看日志 svn log path 例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化 9、Linux命令行下查看文件详细信息 svn info path 例如...帮助 svn help svn help ci 以上是常用命令,下面写几个不经常用的 13、Linux命令行下版本库下的文件和目录列表 svn list path 显示path目录下的所有属于版本库的文件和目录...简写:svn ls 14、Linux命令行下创建纳入版本控制下的新目录 svn mkdir: 创建纳入版本控制下的新目录。...15、Linux命令行下恢复本地修改 svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。...17、Linux命令行下解决冲突 svn resolved: 移除工作副本的目录或文件的“冲突”状态。

    6.7K70

    Linux中find命令的使用详解(下)

    不过写法有点与C语言中不一样,这一点学要我们特别注意一下。...出了上述两种比较典型的执行命令的方法以外,find还对这两个参数提供了另一种形式的命令执行格式: -exec command {} + -execdir command {} + 我们还是先用例子来看一下这个格式和以分号结束的方式的差别...cp到了/opt/目录中,当然如果文件有重名的情况下,会被覆盖掉。...从这个命令中我们学习一下{} +格式的使用注意事项,它不能写成: [root@GeekDevOps-find ~]# find / -name GeekDevOps.txt -exec cp {} /opt...至此,关于find命令的介绍基本完成了,这是一个比较常用的命令,还有更多的功能期待大家去发现,具体可以man一下find的手册。随时随地阅读我的文章,敬请关注同名微信公众号及头条号。

    2.9K80

    Linux操作系统下 chkconfig 命令详解

    特别是在修改主题或者插件的时候这个需求特别的强烈,在Windows下一般都是锁定某个文件借助文本编辑器搜索来解决的,很明显这个方式最笨了,效率也是最低的,在Linux下这样的话很明显是不科学的,其实在Linux...下命令行是无所不能的,像这种需求在Linux下实现基本就是命令行就可以应对了,今天笔者就来分享一下使用grep命令查找文件中的特定文本,最神奇的是可以说多个文件甚至是整个目录下的所有文件。...下面借用几个grep命令的实际操作给大家分享一下具体的使用方法和各个参数的区别,至于结果就不贴出来了,大家只要知道对应的参数会输出什么结果即可,具体使用可以举一反三的。...以下命令将在/etc/目录内的所有文件(包括所有子目录)中搜索字符串artful: grep -R artful /etc/* 搜索包含特定单词的所有文件 上面的grep命令示例列出了包含字符串artful...下一个示例将只递归地显示包含/etc/目录下的字符串artful的所有文件名: grep -Rl artful /etc/* 执行不区分大小写的搜索 所有搜索默认情况下都区分大小写,这意味着任何搜索字符串的搜索都将只显示包含确切的大写和小写匹配的文件

    1.3K00

    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 .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

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券