sed -e 's/a/b/; s/c/d/' file //-e 多个 sed -f 从文件中执行
1、if ;then xxx;fi if ;then elif xx;then xx;else xx;fi test condition -eq ge g...
回顾一下,我们前面学习了进程创建,进程终止,进程等待,进程替换,通过这些内容我们可以来进行实现简单的shell命令行解释器!!!...下面我们直接来看一看如何去实现shell命令行解释器: 总体分为(整体需要循环哦): 1.输出提示符 2.输入和获取命令 3.fork创建子进程 4.内建命令 ---- 输出提示符 这里的提示字符为用户名...问题不大 printf("用户名@主机名 当前路径# "); 同时,这里并没有\n,会有缓冲区的问题,类似于我们之前所说的进度条所遇到的问题,在这个地方哦可以用fflush(stdout)刷新缓冲区 输入和获取命令...\n也读取到了,直接进行处理即可,清除最后一个\n lineCommand[strlen(lineCommand)-1] = 0; 获取 输入之后,我们自然需要去进行获取,我们需要分割命令行...shell运行原理 同时,在理解一下shell的运行原理:shell内部提取命令行做分析,然后调用exec. shell执行命令必须通过创建子进程,如果不创建子进程会把我们所有的shell全部替换,所以执行命令时一般磁盘上的程序必须创建子进程
目录 一、基本 bash shell命令 二、更多shell命令 三、理解Shell 四、Linux环境变量 全局变量 局部变量 五、Linux文件权限 六、管理文件系统 七、安装软件程序 八、构建基本脚本...子shell不能改变父shell中的全局变量,即使使用export命令。 局部变量 查看局部变量: set命令会显示为某个特定进程设置的所有环境变量,包括局部、全局和用户定义变量。...环境变量的定位 : 登录时作为默认登录shell的启动文件为/etc/profile, 作为非登录shell的交互式shell(如在命令行敲入bash时启动),它不会访问/etc/profile文件,只会检查用户...非交互式shell使用的BASH_ENV环境变量,它可以继承父shell导出过的变量,使用当前shell的局部变量和全局变量。...逻辑求反, ~ 位求反, ** 幂运算, << 位左移 # >> 位右移, & 位布尔和, | 位布尔或, && 逻辑和, || 逻辑或 ##双方括号
前言 本文是基于前面介绍过的关于进程创建、进程终止、进程等待、进程替换等知识,尝试做的一个简单的shell命令解释器。...三、fork创建子进程 利用fork创建子进程; 替换函数需要带上v和p,即execvp函数。 为啥要用子进程去执行命令?...答:如果不创建子进程,而是让bash直接去执行进程,会将我们的bash直接替换为其他程序,shell就不能继续正常执行其他指令了(就回不到输入界面了)。...四、内建命令 我们在运行自己写的shell,输入cd ../cd path等命令时,发现路径并没有发生修改,这是为啥?...本文作者目前也是正在学习Linux相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。
本文是关于如何在Ubuntu 20.04上安装和配置ZSH。此步骤适用于所有基于Ubuntu的发行版。ZSH代表Z Shell,它是类Unix操作系统的shell程序。...ZSH是Bourne Shell的扩展版本,结合了BASH,KSH和TSH的某些功能。 Zsh功能 命令行完成。 可以在所有shell之间共享历史记录。 扩展文件匹配。 更好的变量和数组处理。...在Ubuntu Linux上安装Zsh 在Ubuntu中可以使用apt包管理器和从源代码安装ZSH两种方法 我们将使用apt软件包管理器在Ubuntu上安装ZSH。...现在要使用新的zsh shell,请从终端注销并再次登录。 在Ubuntu Linux中设置Zsh 与BASH之类的其他shell相比,ZSH需要一些首次配置才能解决。...像这样,您必须修改完成系统、密钥和常见shell选项的配置。完成后按“0”保存所有的更改。 安装现在已经完成,它将把您带到shell。
shell变量可分为两类:局部变量和环境变量。 局部变量只在创建它们的shell中可用;而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用。...EUID:展开为在shell启动时被初始化的当前用户的有效ID GROUPS:当前用户所属的组 HISTFILE:指定保存命令行历史的文件。默认值是~/.bash_history。...如果被复位,交互式shell退出时将不保存命令行历史 HISTSIZE:记录在命令行历史文件中的命令数。默认是500 HOME:主目录。...shell给PATH、PS1、PS2、MAILCHECK和IFS设置默认值。...HOME和MAIL由login(1)设置 SHELLOPTS:包含一列开启的shell选项,比如braceexpand、hashall、monitor等 UID:展开为当前用户的用户ID,在shell启动时初始化
shell)和默认的交互shell(bash shell)并不相同。...可以直接 dash 来启动 dash shell exit 退出 5.2 shell 的父子关系 一个shell可以创建另外一个shell(子shell)。 ps -f 查看一下。...比如ps是一个外部命令,可以使用which 和 type命令找到它 $which ps $ type -a ps $ ls -l /bin/ps 2....内建命令:不需要子进程来执行,和shell是一体的,不需要借助外部程序文件来运行。...(1)比如 exit 和 cd是内建命令 $type exit $type cd 有些命令有多种实现,比如pwd和echo既有外部命令也有内建命令 #type -a echo which 只显示出外部命令文件
1、date:显示、设置系统的日期和时间。...find / -name *.txt -exec rm-f {} \; -exec的操作表示找到所有的.txt文件之后 执行 rm -f命令,{}表示找到的所有结果,;是-exec的终止符,由于;是shell...命令一样,都不改变原文件内容,若要保存结果,可通过重定向和管道。...11、tr:转换和删除字符。...开启一个子shell去执行该组命令 E、{ 命令1;命令2;... } 在现行的shell中执行该组命令,{右和}左有至少一个空格 18、script::记录命令执行内容。
-p 修改密码 -L锁定 -U解除锁定 passwd chpasswd change -E修改密码的过期日期 image.png chfn 修改备注信息 chsh -s 修改默认shell
** $#:添加到shell的参数个数 $0:shell本身文件名 1 1~n:添加到shell的各个参数值 ∗和*和@在不加引号的时候,都可以表示一个参数数组;而在加了引号之后,”∗"就表示一个参数字符串...交互模式:在shell命令行直接输入bc及能进入bc语言的交互模式。 非交互模式:与echo方法一起使用。...和上面的方法不同的是,该方法是把批命令放在现行的shell中执行,而不是子shell中执行。...在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。...du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。
说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很“自然”的错误,也让我吃了不少的苦头,所以总结一下...Shell中函数的调用方法。...一、Shell中函数的定义 为了方便程序和管理和模块化并减少代码的重复,函数的确是一个好东西。...需要传递两个参数); 二、自定义函数的例子 不知道大家的情况如何,反正一开始我就觉得很别扭,因为在C语言中,例如我定义一个函数int cmp(int a, int b),那么我就会在函数中使用到函数头中声明的变量a和b...,而在Shell中却没有定义参数,那我的函数又需要用到这两个参数,怎么办好呢?
19.1 文本处理 能轻松实现自动格式化、插入、修改或删除文本元素的简单命令行编辑。 sed和gawk就具备上述功能 19.1.1 sed编辑器 被称为流编辑器。...命令可以从命令行输入,也可以存储在一个命令文本文件中。...1.在命令行定义编辑器命令 默认情况下,sed编辑器会将指定的命令应用到STDIN输入流上。...19.2.4 插入和附加文本 sed编辑器允许向数据流插入和附加文本行 插入(insert):命令(i)会在指定行前增加一个新行 附加(append):命令(a)会在指定行后增加一个新行 它们不能在单个命令行上使用...2.打印行号 $sed ‘=’ data.txt 还可以打印包含指定文本的内容和行号:打印包含line 3的行号和内容 xcy@xcy-virtual-machine:~/shell/19zhang$
进程控制语句甚至于内置的变量和函数。...实际上 awk 的确拥有自己的语言:awk 程序设计语言, 三位创建者已将它正式定义为“样式扫描和处理语言”。...sort语法: 例如: 4.Shell编程4.0Shell介绍 Shell是用户与内核进行交互的一种接口,目前最流行的Shell是bash Shell;Shell也是一门编程语言(解释型的编程语言),即...4.1 Shell的执行方式 首先需要赋予+x的权限,即执行的权限 bash或sh +脚本,就是sh加空格加脚本名称 在脚本的路径前加". " 4.2变量和运算符 变量:Shell中的变量分为“系统变量...”和“用户自定义变量”,可以通过set命令查看当前所有的变量 系统变量:$HOME、$PWD、$SHELL、$USER等等。
登录 shell 的途径 了解两种方式之间的区别,就要先了解 shell 的配置文件: bash 的配置文件 ~/.bash_profile ~/.bashrc /etc/profile /etc/profile.d.../*.sh /etc/bashrc 全局配置文件 个人配置文件 由上可知,bash 的配置文件分别为profile 类文件和bashrc 类文件: 1.设定环境变量。...定义命令别名 了解以上配置文件后,则: 登录式 shell 读取配置 文件过程: /etc/profile –> /etc/profile.d/*.sh –> ~/.bash_profile–> ~/....shell 和非登录式 shell 的运行形式如下: 登录式 shell: 正常通过某终端登录的 shell。...非登录式 shell: su username。 图形终端下打开的命令窗口。 自动执行的 shell 脚本。
登录 shell 的途径 了解两种方式之间的区别,就要先了解 shell 的配置文件: bash 的配置文件 * **全局**配置文件 * `/etc/profile` *...etc/bashrc` * **个人**配置文件 * `~/.bash_profile` * `~/.bashrc`由上可知,bash 的配置文件分别为profile 类文件和bashrc...shell 和非登录式 shell 的运行形式如下: 登录式 shell: 正常通过某终端登录的 shell。...非登录式 shell: su username。 图形终端下打开的命令窗口。 自动执行的 shell 脚本。...原文链接:https://rumenz.com/rumenbiji/linux-nologin-shell.html 微信公众号:入门小站
登录 shell 的途径 了解两种方式之间的区别,就要先了解 shell 的配置文件: bash 的配置文件 * **全局**配置文件 * `/etc/profile` *...etc/bashrc` * **个人**配置文件 * `~/.bash_profile` * `~/.bashrc`由上可知,bash 的配置文件分别为profile 类文件和bashrc...shell 和非登录式 shell 的运行形式如下: 登录式 shell: 正常通过某终端登录的 shell。...非登录式 shell: su username。 图形终端下打开的命令窗口。 自动执行的 shell 脚本。...原文链接:https://rumenz.com/rumenbiji/linux-nologin-shell.html
第二十三章 使用其他shell bash shell是linux发行版中最广泛使用的shell。但是它并不是唯一的选择,还有其他的shell可以供你选择。...下面是书上的: dash shell是作为debian linux发行版的一部分开发的,主要出现在Ubuntu linux发行版中。它是Bourne shell的精简版。...比如网络支持和高级数学功能,你可以只添加你觉得有用的模块。 zsh shell通常会用在编程环境中,因为它为shell脚本程序员提供了许多很好的功能。...它是以可加载的模块来加载单独的代码库,这使得高级函数的使用在命令行上运行命令一样简单。 从复杂的数学算法到网络应用(如FTP HTTP),可加载模块支持许多功能。 这里也不展开介绍了。...1.用du命令可以显示单个文件和目录的磁盘使用情况 -s用来总结目录以及的整体使用状况 -S为每个目录和子目录分别提供了总计信息。
shell中使用source xxx.sh ,是直接运行xxx.sh的命令,不创建子shell,而sh则创建子shell,子shell里面 的变量父shell无法使用,对环境变量的修改也不影响父shell...父shell中的局部变量,子shell也无法使用,只有父shell的环境变量, 子shell能够使用。...sh 创建了子shell和当前的shell并行执行,子shell中执行,脚本设置的变量不会影响当前shell。...一旦子Shell中的执行完毕,此子Shell随即结束,回到父Shell中,不会影响父Shell原本的环境。...sh执行脚本 source执行脚本 还有个办法可以在父shell和子shell中分别加上 echo $SHLVL ,显示当前运行层级,可以明显的看出来: 两种执行层级不同 [root@bogon home
领取专属 10元无门槛券
手把手带您无忧上云