Linux:Bash中的命令介绍(简单命令、管道以及命令列表)

news2024/9/20 16:57:21

相关阅读

Linuxicon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12234591.html?spm=1001.2014.3001.5482


        在Bash中,命令执行的方式可以分为简单命令、管道和命令列表组成。这些结构提供了强大的工具,允许用户组合命令并精确控制其执行方式。以下是对这些Bash命令形式的介绍。

1.、简单命令(Simple Commands)

        简单命令是最常见的命令形式。它由一系列用空白(制表符、空格)分隔的token组成,并由shell的控制符号终止(换行符(newline)、后台执行符(&)或命令分隔符(;),注意这里的后台执行符(&)或命令分隔符(;)后仍然要有换行符(newline),之后不再进行特殊说明

结构

        简单命令的第一个单词通常指定要执行的命令,随后的单词是该命令的选项或参数。例如:

ls -l /home/user [newline or & or ;]

        其中,ls是命令名,-l是命令的选项,/home/user是命令的参数。

返回状态

        一般情况下(指没有后台执行),简单命令的返回状态是命令的退出状态(exit status)。POSIX标准定义的waitpid系统调用返回这个状态,通常为零表示成功,非零表示失败。如果命令因信号而终止,则返回128加上信号编号。可以通过特殊变量@?获得上一条前台命令的返回状态。

控制符号

        (1)换行符(newline):换行符是命令的一般默认终止符号,它告诉shell执行命令并在命令结束时将提示符返回给用户。

ls -l /home/user[newline]

        (2)后台执行符(&):使用后台执行符结尾的命令命令将以异步的方式在子shell(注意子shell和子进程shell的区别,见Linux:subshell(子shell)和childprocess(子进程))中执行,shell不会等待该命令完成,而是立即返回提示符让用户执行其他命令,而命令会在后台继续运行。后台执行命令的返回状态永远为0。如果作业控制未激活(即shell无法管理多个作业或命令),后台命令的标准输入会自动从/dev/null重定向。这意味着该命令将无法从终端或任何输入源读取数据,因为/dev/null会丢弃所有输入。

ls -l /home/user &

        (3)命令分隔符(;):命令分隔符用于将多个命令串联在一起(一般用于命令列表),shell会顺序执行这些命令,每个命令之间没有条件依赖,所有命令都会按照出现的顺序执行。

ls -l /home/user ;

2、管道(Pipelines)

        管道是由一个或多个命令组成的序列,每个命令之间通过管道符(|或|&)分隔,由shell的控制符号终止(换行符(newline)、后台执行符(&)或命令分隔符(;))。

结构

        一个管道命令的基本形式如下:

command1 [| or |&] command2 [| or |&]  command3 [newline or & or ;]

        在这个例子中,command1的标准输出会作为command2的标准输入,command2的标准输出会作为 command3的输入,这些连接会在重定向发生前就进行。、

        |&用于将标准错误和标准输出一起传递给下一个命令,相当于重定向2>&1 |的缩写。

执行方式

        管道中的所有命令都是同时执行的,即command2并不会等待command1结束才执行,这可以通过下面的命令进行验证。

sleep 5 | sleep 5 ;

         管道中的所有命令分别在各自的子shell中执行,且shell会等待管道中的所有命令完成(在不使用后台执行符的前提下)。

返回状态

        一般情况下(指没有后台执行),管道的返回状态通常是最右边命令的退出状态。如果启用了pipefail选项,那么返回状态将是最右边第一个非零的返回状态。

3、命令列表(Lists of Commands)

        命令列表是由一个或多个管道(不包括管道最后的终止控制符号)组成的序列,通过控制符号(命令分隔符(;)、后台执行符(&)、与操作符(&&)、或操作符(||))分隔。由shell的控制符号终止(换行符(newline)、后台执行符(&)或命令分隔符(;))。

结构

        (1)用命令分隔符(;)分隔的管道会按顺序执行,shell会等待每个管道结束后再执行下一个管道。

Pipeline1 ; Pipeline2 ; Pipeline3 [newline or & or ;]

        (2)用后台执行符(&)分隔的管道,以后台执行符(&)结尾的管道将以异步的方式在子shell中执行。

Pipeline1 & Pipeline2 & Pipeline3 [newline or & or ;]

        其中Pipeline3是否后台执行,取决于结尾是否是后台执行符(&)。

        (3)用与操作符(&&)分隔的管道,只有左边的管道执行成功(返回状态为0,右边的管道才会执行)。

Pipeline1 && Pipeline2 [newline or & or ;]

        如果Pipeline1执行成功(退出状态为0),则执行Pipeline2。否则,Pipeline2不会执行。

        (4)用或操作符(||)分隔的管道,只有左边的管道执行失败(返回状态非0,右边的管道才会执行)。

Pipeline1 || Pipeline2 [newline or & or ;]

        如果Pipeline1执行失败(退出状态非0),则执行Pipeline2。否则,Pipeline2不会执行。

        这四个控制符号可以混用,其中||和&&的优先级最高且相同,其次是优先级较低的&,优先级最低的是;。

Pipeline1 || Pipeline2 && Pipeline3 &

        上面的命令列表根据相同优先级的结合性被解释为下面的形式。

# 整体后台执行
((Pipeline1 || Pipeline2) && Pipeline3) &
Pipeline1 ; Pipeline2 &

        上面的命令列表根据优先级被解释为下面的形式。

# Pipeline后台执行
(Pipeline1 ;) (Pipeline2 &)

返回状态

        命令列表的返回状态是列表中最后前台执行的管道的返回状态。

Pipeline1 & Pipeline2 [newline]

        上面的命令列表的返回状态是Pipeline2的返回状态,因为Pipeline1后台执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2070376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享一个基于文本挖掘的微博舆情分析系统Python网络舆情监控系统Flask爬虫项目大数据(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

Comsol TPMS_Diamond多孔构型吸声性能仿真

TPMS_Diamond多孔构型是一种新型的吸声材料结构,它采用了三维打印技术制备而成。该构型的设计灵感来自于结晶体的晶格结构,通过将正方形的单元堆积并沿着特定方向旋转,形成了一种类似于钻石的多孔结构。 TPMS_Diamond多孔构型具有以下特点&a…

systemback制作Ubuntu自己的系统镜像

systemback制作Ubuntu自己的系统镜像 目录1.安装、制作2.解决镜像大于4GB的问题3.写入镜像到U盘4.安装 目录 systemback制作Ubuntu自己的系统镜像 最近需要备份自己的系统,同时制作安装镜像在另一台笔记本上安装,这里找到了一款很不错的软件…

excel表格输入数据生成函数曲线图

1.新建一个excel表格,横向或者纵向输入x轴点的数据 下图以横向数据为例子,两个y轴数据,生成两个函数曲线 2.右键选中上面输入的数据,点击插入,选择你要构造的函数样式 3.选中带平滑散点图即可生成前面数据生成的函数 …

内存管理篇-06Per-CPU页帧缓存

per-CPU缓存是对伙伴系统的完善,也是伙伴系统中的一部分。再回顾一下zone结构体的内容,这里的__percpu *pageset实际上就是Per-CPU的实现机制,所以这里的内存实际上最少有三部分,(1)free_area管理了大部分的…

数学建模之Matlab快速入门--全

前言: 本文是之前学Matlab时候做的笔记,很适合快速入门数学建模中matlab和python是最常用的两个软件,现在本人更喜欢python去做数学建模 文章目录 界面介绍与操作快捷操作 数据类型数值型整型浮点型复型逻辑型字符型struct数组cell数组函数句…

区块链国赛第六套样题(关于运维)

任务1-2:区块链系统部署与运维 围绕食品安全溯源区块链平台部署与运维需求,进行项目相关系统、节点以及管理工具的部署工作。通过监控工具完成对网络、节点服务的监控。最终利用业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维…

Jetson安装Archiconda3全过程

1. 下载Archiconda3 下载网址: 发布 Archiconda/build-tools --- Releases Archiconda/build-tools (github.com)​​​​​​ 2. 执行命令 bash ./Archiconda3-0.2.2-Linux-aarch64.sh 3. conda换源 conda config --add channels https://mirrors.tuna.tsing…

计算机网络-PIM-SM组播实验

一、概述 目前为止我们学习了组播转发网络中的PIM协议,PIM模型有两种: PIM-DM主要使用在网络规模较小,用户集中的组播网络中。 PIM-SM主要使用在网络规模较大,用户较为分散的组播网络中。PIM-SM基于组播模型又可以分为PIM-SM&…

5.Lab four —— Trap

首先切换traps分支 git checkout traps make clean RISC-V assembly 代码: #include "kernel/param.h" #include "kernel/types.h" #include "kernel/stat.h" #include "user/user.h"int g(int x) {return x3; }int f(…

AI预测体彩排3采取888=3策略+和值012路或胆码测试8月24日升级新模型预测第61弹

经过近60多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大…

Linux——驱动——自动设备

自动创建设备节点是Linux设备驱动开发中的一个重要环节,它允许设备驱动程序在内核中注册后,自动在/dev目录下创建对应的设备文件,从而使得用户空间程序可以通过标准的文件操作接口(如open、read、write等)与硬件设备进…

Level3 — PART 4 机器学习算法 — 朴素贝叶斯

目录 贝叶斯定理 朴素贝叶斯模型(Naive Bayes Model) 估计 离散估计 极大似然估计 案例 朴素贝叶斯扩展 高斯贝叶斯分类器 原理 应用 源码分析 伯努利贝叶斯分类器 原理 源码分析 多项朴素贝叶斯分类器 半朴素贝叶斯分类器 模拟题 CDA…

Linux系统之jobs命令的基本使用

Linux系统之jobs命令的基本使用 一、jobs命令介绍二、jobs命令的使用帮助2.1 jobs命令的help帮助信息2.2 jobs命令的语法解释 三、jobs命令的基本使用3.1 运行一个后台任务3.2 列出后台所有的作业3.3 列出进程ID3.4 只列出进程ID3.5 终止后台任务3.6 只显示运行任务3.7 只显示停…

tcp 网络通信及抓包工具的使用

tcp网络通信 本地回环(Loopback)的概念 本地回环地址是一个特殊的IP地址,用于指向计算机本身的网络接口。在IPv4中,最常见的本地回环地址是127.0.0.1,而在IPv6中则是::1。这个地址用于测试网络软件,确保网…

【IoT】路由器/linux系统,如何使用shell查看系统硬件配置,传感器CPU温度,资源占用率等信息(以红米AX6000为例)

【IoT】路由器/linux系统,如何使用shell查看硬件配置,传感器CPU温度,系统资源占用率等信息(以红米AX6000为例) 文章目录 1、路由器拆机与测评(Redmi AX6000)2、通过telnet获得SSH3、linux系统信…

SpringBoot集成kafka接收消息

SpringBoot集成kafka接收消息 1、SpringBoot集成kafka接收消息2、Payload注解接收消息体内容3、Header注解接收消息头内容4、接收消息所有内容 1、SpringBoot集成kafka接收消息 生产者 package com.power.producer;import org.springframework.kafka.core.KafkaTemplate; imp…

【自动化】考试答题自动化完成答案,如何实现100%正确呢

一、科目仿真考试不能自动答题 我的答案是可以的,电脑程序可以模拟人的操作完成所有的答题并提交结束考试 二、分析页面内容 完成一个题目,包括判断题,对与错2选1答案,单选题ABCD4选1答案,多选题大家想一想 F12查看按…

基于机器学习的糖尿病数据分析与风险评估系统

B站视频及代码下载:基于机器学习的糖尿病数据分析与风险评估系统_哔哩哔哩_bilibili 1. 项目简介 糖尿病,作为一种在全球范围内广泛流行的慢性疾病,已经影响了数以百万计的人们的生活,给全球公共健康带来了严重的挑战。因此&#…

uni-app的示例项目--简单的登陆页面及列表页面

uni-app的示例项目--简单的登陆页面及列表页面 文章说明核心代码效果展示源码下载 文章说明 随着移动端使用占比升高,手机端的App、小程序也成了一些场景下的首选;采用uni-pp开发此类应用具有很多优势,它可以直接使用vue3进行开发&#xff0c…