首页 > 系统相关 >Uinx\Linux系统编程第十章

Uinx\Linux系统编程第十章

时间:2023-09-24 17:15:12浏览次数:27  
标签:文件 ... 编程 命令 sh 参数 Linux Uinx 执行

第十章 sh编程

10.1 sh脚本

sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。

10.2 sh脚本与C程序

这两者之间有一些相似之处,但在根本上是不同的。
sh是一个解释程序,逐行读取脚本文件并直接执行这些行。如果行是可执行命令且为内置命令,那么sh可直接执行。否则,他会复刻一个子进程来执行命令,并等其终止后再继续。
C语言必须先编译连接到一个二进制可执行文件,然后通过sh的子程序运行。

10.3 命令行参数

在 sh 脚本中,可以通过位置参数 $0、$1、$2 等访问命令行参数。通常,$0 是程序名本身,$1到 $n 是程序的参数。在 sh 中,可用内置变量 $# 和 $* 计数并显示命令行参数。

$# =命令行参数 $1到 $n 的数量

$*=所有命令行参数,包括 SO
此外,sh 还有与命令执行相关的以下内置变量。
$S =执行 sh 的进程 PID
$?=最后一个命令执行的退出状态(如果成功,则为 0,否则为非 0)

10.4 sh变量

所有的sh变量值都是字符串,未赋值的sh变量是NULL字符串

10.5sh中的引号

如想把$、/、*、<、>等用作普通字符,需要用\或者单引号来引用它们。通常,\用于引用单个字符,单引号用于引用长字符串。

10.7 sh命令

10.7.1 内置命令

sh 有许多内置命令,这些命令由 sh 执行,不需要创建一个新进程。

  • file: 读取并执行文件。
  • break [n]: 从最近的第 n 个套循环中退出
  • cd[dirname]:更换目录。
  • continue [n]:重启最近的第 n 个套循环
  • eval[arg ..]:计算一次参数让sh 执行生成的命令
  • excc [arg...]:通过这个 sh 执行命令,h将会退山
  • exit [n]:使 sh 退山,退山状态为n。
  • export [var ...]:将变导出到随后执行的命令
  • read [var ...]:从 stdin 中读取一行非为变赋值
  • set [arg ...]:在执行环境中设置变量。
  • shift:将位置参数 S2 S3...重命名为 SIS2...。
  • trap [arg][n]:接收到信号n 后执行参数。
  • umask [ddd]:将掩码设置为八进制数 ddd 的。
  • wait [pid]:等待进 pid,如果没有给出 pid,则等待所有活动子进程。
  • read 命令:当sh 执行 read 命令时,它会等待来自 stdin 的输人行。它将输人行划分为几个标记,分配给列出的变量。read 的一个常见用法是允许用户与正在执行的 sh 进行交互

10.7.2 Linux命令

sh 可以执行所有的 Linux 命令。
echo 命令 : echo 只是将参数字符串作为行回显到 stdout。它通常将相邻的多个空格压缩为一个空格,除非有引号。
expr 命令 :因为所有的 sh 变量都是字符串,所以我们不能直接把它们改为数值。
管道命令 :在 脚木中经常使用管道作为过滤器。
除了上面的 Linux 命令之外,sh 还使用许多其他实用程序作为命令。

  • awk:数据处理程序
  • cmp:比较两个文件。
  • comm:选择两个排序文件共有的行。
  • grep:匹配一系列文件的模式。
  • dim:找出两个文件的差异。
  • join:通过使用相同的键来连接记录以比较两个文件。
  • sed: 流或行编辑命令。
  • sort:排序或合并文件。
  • tail:打印某个文件的最后 n 行
  • tr:一对一字符翻译。
  • uniq: 从文件中删除连续重复行

10.10 I/O重定向

当进入 sh 命令时,我们可以指示 sh 将I/O重定向到除默认 stdin、stdout 和 sterr 以外的文件。I/O 重定向有以下形式和含义:

  • >file stdout转向文件,如果文件不存在,将会创建文件。
  • >>file stdout追加到文件。
  • < file 将文件用作 stdin;文件必须存在并具有r权限。
  • << word 从“here”文件中获取输人,直到只包含“word”的行。

关于问题与AI的苏格拉底式提问与解答

1、

2、

标签:文件,...,编程,命令,sh,参数,Linux,Uinx,执行
From: https://www.cnblogs.com/Semelia/p/17725815.html

相关文章

  • windows 与linux 文件互传
      使用windows自带的powershell 其中自带了scp命令。这个命令可以实现与linux服务器的文件互传功能。他的语法是在windows的命令提示符下(注意不要远程到linux)从第一个参数的目录复制文件到第二个参数命令和参数中间有操作符。例如从windows向linux复制文件命令为scpd:......
  • Linux内核裁剪移植
    目录前奏内核移植步骤制作可引导的LinuxISO文件对新机器配置网络前奏rambo@debian:~$cat/etc/issueDebianGNU/Linux12\n\lrambo@debian:~$free-htotalusedfreesharedbuff/cacheavailableMem:15Gi1.......
  • Linux系统编程之Makefile
    Makefile什么是Makefile我想说,在学习编程初阶段我们习惯性使用GCC/G++命令来帮助我们编译调试代码,可是当进行系统性编程的时候,编译和调试得复杂起来,我们可能需要许许多多的文件,那么命令可能是一大行并且可能自己都不知道那些需要编译,那些是刚刚修改过,只需要再次对进行修改,而不......
  • Linux系统编程之GCC编译器
    Gcc编译器gcc[选项][文件]  常用选项:-c:只编译不链接为可执行文件,编译器将输入的.c文件编译为.o的目标文件。-o:<输出文件名>用来指定编译结束以后的输出文件名,如果使用这个选项的话GCC默认编译出来的可执行文件名字为a.out。-g:添加调试信息,如果要使用调试工具(......
  • 异步编程基础
    使用async和await进行异步操作的基础知识,其中只会涉及自然异步操作,如HTTP请求、数据库指令、Web服务调用等。一、需要通过异步签名实现同步方法时,返回已完成的任务 如果在继承异步接口或者基类的同时又想同步实现该任务,便可能发生这样的情况。当需要异步接口的简单签名......
  • 深度学习算法中的遗传编程(Genetic Programming)
    深度学习算法中的遗传编程(GeneticProgramming)引言深度学习算法在近年来取得了巨大的成功,广泛应用于计算机视觉、自然语言处理等领域。然而,深度学习算法仍然面临着一些挑战,例如需要大量的标注数据、模型结构的选择等。为了解决这些问题,研究者们开始探索结合遗传编程(GeneticProgram......
  • Linux中NAT配置——目的NAT
    Linux目的NAT地址转换配置实验准备:客户端、网关、web服务器网关需要配置为双网卡目的:让内网的web服务器通过配置DNAT后可以被外网的用户访问。一、初始化配置确保客户端与Web服务器都能与网关连通1)配置网关服务器为网关添加双网卡配置内外网IP信息#外网网卡[root@NAT-SERVER~]#c......
  • Uinx\Linux系统编程第九章
    I/O库函数I/O库函数与系统调用系统调用函数:open()、read()、write()、lseek()、close()I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose()相同点:1、目的:I/O库函数和系统调用都用于进行输入/输出操作,以便程序能够与外部设备、文件系统或网络通信。2、提供抽象:它们都提供了一种抽象层,使开......
  • Linux命令(83)之cut
    linux命令之cut1.cut介绍linux命令cut用来从文本文件或者标准输入提取文本列2.cut用法cut[参数][提取范围]文本文件cut常用参数参数说明-c从指定提取范围中提取字符-f从指定提取范围中提取字符段-d指定分隔符提取范围:n:第n项n-:第n项到行尾-m:行首到第m项n,m:第n项和第m项(单个的)n......
  • 《Unix/Linux系统编程》教材第10章学习笔记
    大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在shell脚本中是如果呈现出来的?必备要素和技能:数据类型和变量:用于存储和处理数据的基本单元。控制结构:用于控制程序流程的结构,如条件语句、循环语句等。函数和模块:用于封装代码块......