首页 > 系统相关 >linux如何同时执行两个命令,如何同时运行两个或者多个终端命令

linux如何同时执行两个命令,如何同时运行两个或者多个终端命令

时间:2023-06-11 10:33:36浏览次数:46  
标签:如何 MyFolder echo 运算符 命令 linux txt 目录

[ -d ~/aa ] || mkdir ~/aa
[ -f  ~/sample.txt ] && echo "Fiel exits" || touch ~/sample.txt

  查看前一条命令的返回值

echo $?

  echo $?

查看命令执行成功与否的原理
“进程生命周期”

当一个进程执行完毕时,该进程会调用一个名为 _exit 的例程来通知内核它已经做好“消亡”的准备了。该进程会提供一个退出码(一个整数)表明它准备退出的原因。按照惯例,0用来表示正常的或者说“成功”的终止。

也就是说我们在执行 echo $? 时反回的值就是进程的退出码。而且,这个退出码是由刚刚执行完的进程提供给系统内核的

 Linux中echo $命令的作用

echo $$ 返回登录shell的PID
echo $? 返回上一个命令的状态,0表示没有错误,其它任何值表明有错误
echo $# 返回传递到脚本的参数个数
echo $* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可超过9个
echo $! 返回后台运行的最后一个进程的进程ID号
echo $@ 返回传递到脚本的参数个数,但是使用时加引号,并在引号中返回每个参数
echo $- 显示shell使用的当前选项
echo $0 是脚本本身的名字
echo $_ 是保存之前执行的命令的最后一个参数
echo $1 传入脚本的第一个参数
echo $2 传入脚本的第二个参数

 

87c58728013018339b68a81ce03c0365.png

选项一:分号(;)运算符

1a9312d3670801dc634b3553344537ca.png

分号(;)运算符允许你连续执行多个命令,而不管前面的每个命令是否成功,例如,打开终端窗口(在Ubuntu和Linux Mint中 Ctrl Alt T),然后,在一行中键入以下三个命令,用分号分隔,然后按Enter,这会列出当前目录(ls ),找出你当前在(pwd )中的目录,然后一次显示你的登录名(whoami )。ls ; pwd ; whoami

不必在分号和命令之间加上空格,可以将三个命令输入为: ls;pwd;whoami,

da90f006adf8bf26e442d394f43c2828.png

选项二:逻辑与运算符(&&)

如果希望第二个命令仅在第一个命令成功后运行,请使用逻辑与运算符分隔这些命令,即两个和运算符(例如,希望创建一个名为MyFolder的目录,并在成功创建该目录后,将它更改为,在命令行上键入以下内容并按Enter。mkdir MyFolder && cd MyFolder

文件夹已成功创建,因此cd命令被执行,现在位于新文件夹中。

建议在大多数情况下使用逻辑与运算符,而不是分号运算符(; ),例如,如果你运行一个命令来更改目录,然后强制递归地删除该目录中的所有内容(cd /some_directory ; rm -Rf * 如果目录更改没有发生,你最终会破坏掉系统。

23e6df141d45e34f8eab0b5f814dcf12.png

选项三:逻辑or运算符(||)

有时你可能希望在第一个命令不成功时执行第二个命令,为此,使用逻辑or运算符,或者两个垂直条(|| ),例如,要检查MyFolder目录是否存在([ -d ~/MyFolder ] 如果不是(mkdir ~/MyFolder ),则创建它,在提示符下键入以下命令并按Enter。[ -d ~/MyFolder ] || mkdir ~/MyFolder

确保在第一个括号之后,第二个括号之前或第一个命令之前有一个空格,用于检查目录是否存在无法工作。

在的示例中,MyFolder目录不存在,因此第二个命令创建目录。

f1de9c0ae58915e184c9bdc434c228c1.png

组合多个运算符

也可以在命令行上组合多个运算符,例如,希望首先检查文件是否存在([ -f ~/sample.txt ] 如果是这样,把一条信息打印到屏幕上,说(echo"File exists," ),如果没有,创建文件(touch ~/sample.txt ),在命令提示符下键入以下内容,然后按Enter。[ -f ~/sample.txt ] && echo"File exists." || touch ~/sample.txt

在的示例中,文件不存在,因此它被创建。

9e462290dfa7c98cb0c0131fba1e5613.png

以下是用于组合命令的每个运算符的有用摘要:A;B =运行A和B,而不考虑A的成功或失败, A && B =仅当A成功时运行B A || B =仅当A失败时运行B

标签:如何,MyFolder,echo,运算符,命令,linux,txt,目录
From: https://www.cnblogs.com/wzihan/p/17472586.html

相关文章

  • Avalonia如何快速使用Prism进行MVVM开发,实现Prism区域导航功能
    新建ViewA和ViewB以及他的ViewModel 创建View和WPF开发是一样的,创建UserControl,注意avalonia里面需要指定DataType的类型。 创建ViewModel,这里面和开发WPF是一模一样的 到App里面取注册Region  到Window里面取写好界面,创建一个Region用于导航 MainWindowVie......
  • 面试官:在项目中,你是如何使用线程池的?
    大家好,我是田哥前两天,有位星友(知识星球里的朋友简称)私信我,问在项目中如何使用线程池,关于线程池的原理和八股文相关的都可以背,但是要是问到你们项目中是怎么用的,心里总是有点慌。公众号里回复77,获取面试小抄和面试相关资源:话不多说,我们直接步入正题。创建线程池的方式我在这篇文章......
  • Avalonia如何快速使用Prism进行MVVM开发
    Avalonia版本:RC1.1Prism.Avalonia版本:8.1.97.11000-rc1.1创建Avalonia模板  如果没有RC1.1模板的取看下官网文档,更新一下模板的版本GettingStarted-AvaloniaUI 进入App.axaml.cs文件修改,将App的继承由Application改为PrismApplication,实现prism里面的抽象 到......
  • vue3的composition API如何使用async语句
    问题:在setup使用aysnc,生命函数钩子和函数必须出现在await语句前面,否者会出现组件无法渲染以及内存泄漏的问题。import{ref,watch,onMounted,onUnmounted}from'vue'exportdefaultdefineAsyncComponent({asyncsetup(){constcounter=ref(0......
  • pip 命令简介
    pip简介pip是Python中的标准管理器,它允许安装和管理不属于Python标准库的其它软件包(第三方库);pip简单操作windowsWin+r输入cmd回车pip常用命令查看pip路径C:\Users\admin>wherepipD:\tool\python3.8\Scripts\pip.exe查看pip版本C:\Users\admin>pip-Vp......
  • go程序在linux服务器上运行
    一、go语言环境安装参考菜鸟教程二、编译测试代码源码:packagemainimport"fmt"funcmain(){ fmt.Println("gorunning...")}编译在powershell终端输入命令编译后是运行不了的,在源码文件目录cmd,然后输入编译命令gobuild编译前先设置几个环境变量GOARCH:目......
  • Redis安装与启动(Linux)
    安装Redis依赖yuminstall-ygcctcl上传安装包并解压redis.io下载安装包,上传到/usr/local/src目录解压tar-zxvfredis-6.2.6.tat.gz解压成功 进入安装目录,运行编译命令cdredis-6.2-6/make&&makeinstall默认的安装路径在/usr/local/bin下默认启动(不友好......
  • 架构师如何判断和利用技术趋势
    看技术趋势,甚至看任何发展趋势,都要先找前置量(Leadingindicator)。对于软件发展而言,硬件的革新往往是前置量。首先,硬件技术进化的驱动力是需求规模。计算机硬件技术从巨型机、大型机、小型机,到PC、Mobile的进化过程,就是市场需求规模的增长过程。随着市场需求规模越来越大,就会有越......
  • comsol瞬态求解不收敛报错,如何解决?
    1.计算开始时,报错“找不到一致的初始值,最后一个时间步不收敛”解决方法:(1)使用稳态研究的结果作为瞬态研究的初始值。单个研究可以包含多个步骤,且默认情况下,每个步骤的结果都会作为初始值传递到下一步骤。因此,在瞬态研究步骤之前添加一个稳态步骤,可以先求解稳态假设下的流场,从......
  • linux 内存管理之内核分页机制(PAGING_INIT)初始化
     TEXT_OFFSET=0x00008000KERNEL_OFFSET=0x80000000PG_DIR_SIZE=0x4000kernel代码起始链接地址如下:PHYS_OFFSET=0x80000000r10指向proc_info_list结构体类型数据__create_page_tables:pgtblr4,r8@pagetableaddres......