SHELL 基础 入门(三) Bash 快捷键 命令执行顺序,详解通配符

目录

Bash 常用快捷键 

输入输出重定向 

<< 用法 

输出重定向 

命令执行顺序 

;  分号

&&

|| 

通配符 

传统通配符 

'  *  ' 

[  ]  

[ - ]  

[ ^ ]

常用字符 

强调 : {  }   生成序列 


Bash 常用快捷键 

Ctrl + A    把光标移动到命令行开头

Ctrl + E    把光标移动到命令行尾 

Ctrl + D    退出当前终端 ( 正常的退出 ) 

Ctrl + C    强制终止当前命令 ( 非正常的退出 ) 

Ctrl + L     清屏 

Ctrl + U    删除或剪切光标之前的命令 

Ctrl + K    删除或剪切光标之后的命令

Ctrl + Y    粘贴 Ctrl + U  或 Ctrl + K  剪切的内容

Ctrl + R    在历史命令中搜索 

Ctrl + Z    暂停,并放入后台

Ctrl + S    暂停屏幕输出

Ctrl + Q    恢复屏幕输出 

输入输出重定向 

 Bash 的标准输入输出 

设备                        设备文件名                       文件描述符                                类型

键盘                         /dev/stdin                         0                                                标准输入

显示器                     /dev/stdout                       1                                                标准输出

显示器                     /dev/stderr                        2                                                标准错误输出

<< 用法 

       快速生成文件 

        ===>>

[root@localhost ~]# cat > test1.txt << EOF
> TOM
> LACY
> Jon
> EOF
[root@localhost ~]# 

当键盘输入 EOF 的时候,就会结束,就是 结束符 ~!!   

这样 test1.txt 就生成了 ~!!!  

输出重定向 

类型符号作用
标准输出重定向命令 > 文件 以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中
命令 >> 文件以追加的方式,把命令的正确输出,输出到指定的文件或设备当中
标准错误输出重定向错误命令 2> 文件以覆盖的方式,把命令的错误输出,输出到指定的文件或设备当中
错误命令 2>> 文件  以追加的方式,把命令的错误输出,输出到指定的文件或设备当中
正确输出和错误输出同时保存命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出,都保存到同一个文件当中
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出,都保存到同一个文件当中
命令 &> 文件以覆盖的方式,把正确输出和错误输出,都保存到同一个文件当中
命令 &>> 文件以追加的方式,把正确输出和错误输出,都保存到同一个文件当中
命令 >> 文件1  2>>文件 2把正确的输出追加到文件1中,把错误的输出追加到文件2中

命令执行顺序 

;  分号

        -- 命令的顺序执行 

===>>>

 不管前面的命令是否执行成功,都会挨个执行一遍,即使中间有的命令没能执行成功,也会接着

 执行后面的命令。 

&&

    -- 前面命令执行不成功,后面的命令不执行 

===>>>

 显然,前面 lddd 命令执行不成功,后面的 pwd 也就不执行了 ~!!

|| 

  --  前面的命令执行成功,后面的命令就不执行;    前面的命令执行不成功,后面的命令才执行

===>>>

 前面命令执行不成功,则执行后面命令 

 前面命令执行成功了,后面命令就不执行了 ~!!!

拓展 : 面试题 

                                   如果用户 hadoop 不存在则创建 

===>>>

        首先,我们如何判断用户是否存在呢 ??

        ===>>>

        那就是 id 命令了, id  用户名 

         

         那我们就可以根据 id 用户名 是否执行成功来判断 该用户是否存在,

         即利用命令的返回值来判断,并且,我们又不需要这个命令执行的结果,只要这个命令是否

         执行成功的返回值。 

         ===>>>

[root@localhost ~]# id hadoop &> /dev/null

          这就是 我们将命令执行,执行完后把结果扔到  回收站 ( 我们不要执行结果 ) 

             

          完整执行为

          ===>>>

[root@localhost ~]# id hadoop &> /dev/null || userhad hadoop 

        我们就用到了  ||  符, 即前面的命令要是执行成功了,那就不需要再创建该用户;

        要是 || 符 前面的命令没执行成功,那就说明没有该用户,那就执行 || 后面的命令,创建用户

通配符 

传统通配符 

?               匹配一个任意字符

' * '              匹配0个或任意多个任意字符,也就是可以匹配任意内容

[ ]                匹配 [ ] 中任意一个字符

[ - ]             匹配 [ ]  中任意一个字符, - 代表一个范围,从哪儿到哪儿 

[ ^ ]             逻辑非,表示匹配不是中括号内的一个字符 

示例 :  

  创建一系列文件,提供素材

[root@localhost test]# touch test.txt
[root@localhost test]# touch test{1..20}.txt

===>>>

没有 test.txt  和    test10 - test20.txt  

'  *  ' 

===>>>

 所有 test.txt 的文件都列出了,包括 test.txt 理解 0个或多个 任意字符 

[  ]  

===>>>

 [  ]  中 任意 一个字符  

[ - ]  

===>>>

 注意列出  test11 到 test16 的文件时,那就得  往外提一个 1 出去,因为 [ ] 里只能匹配一个字符 

  列出以小写字母开头,结尾时 .sh 的文件 

  ===>>>

[root@localhost test]# ls [a-z]*.txt 

[ ^ ]

===>>>

不想要 test1  test3  test5 文件,所以就取反;   注意列出的 也并没有 test10-test20 .txt 的文件哦 

常用字符 

[ [:class:] ] :  匹配一个属于指定字符类中的字符

                    [:class:] 表示一种字符类,比如: 数字,大小写字母等 

常用字符类 : 

[:alnum:]  :   匹配任意一个字母或数字,传统写法 : a-zA-Z0-9

[:alpha:]   :   匹配任意一个字母,           传统写法 : a-zA-Z

[:digit:]     :   匹配任意一个数字,           传统写法 : 0-9

[:lower:]   :   匹配任意一个小写字母       传统写法  : a-z

[:upper:]  :    匹配任意一个大写字母       传统写法  : A-Z 

:     在使用专属字符集的时候,字符集之外还需要  [   ]  来包含,否则不能生效 ~!!

           如果使用上述格式的话,那对它的取反就是 在两个括号的中间进行取反

           如 :  [^[ : alnum:]]    [^[:digit:]]    [^[:lower:]]   等等  

 列出 以小写字母开头,.txt 结尾的文件 

 ===>>>

[root@localhost test]# ls [[:lower:]]*.txt

强调 {  }   生成序列 

{ }  生成序列 

touch  file{1..9}.txt   #  当前路径生成 file1.txt-file9.txt 。   { a..f } 代表 a-f  

不连续的使用 , 分隔,比如 file{1,3,5}.txt  那就是 file1.txt   file3.txt  file5.txt 

利用 { } 备份 

[root@localhost test]# cp test1.txt{,.bak}    #  将test1.txt 复制一份叫 test1.txt.bak 


[root@localhost test]# cp test{2,22}.txt       #  复制 test2.txt 为 test22.txt  

示例 : 

列出 /etc/ 目录中不是以字母 a 到 n 开头的,并且以 .conf 结尾的文件 

===>>>

[root@localhost test]# ls /etc/[^a-n]*.conf

列出  /bin/ 下以 c 或 k 开头的文件 

===>>>

[root@localhost test]# ls /bin/[ck]*

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D Pico VR 手势识别 二

Unity3D Pico VR 手势识别_Cool-浩的博客-CSDN博客 此篇主要讲解怎么手势追踪&#xff0c;手势姿态自定义预制识别&#xff0c;不会导入SDK和配置环境的请看上一章节 环境要求 SDK 版本&#xff1a;2.3.0 及以上PICO 设备型号&#xff1a;PICO Neo3 和 PICO 4 系列PICO 设备系…

解密算法与数据结构面试:程序员如何应对挑战

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

无涯教程-Python机器学习 - Semi-supervised Learning函数

Python机器学习 中的 Semi - 无涯教程网无涯教程网提供https://www.learnfk.com/python-machine-learning/machine-learning-with-python-semi-supervised-learning.html

Ceph入门到精通-如何编译安装Quagga?

Quagga 1. 理论部分 1.1 软件简介 Quagga中文翻译斑驴&#xff0c;是一种先进的路由软件包&#xff0c;提供一套基于TCP/IP的路由协议。 1.2 斑驴的应用场景 – 使得操作系统变成专业的路由 – 使得操作系统具有与传统路由通过路由协议直接对接 1.3 斑驴支持的路由协议 …

【Go 基础篇】Go语言日期与时间函数详解:时间的掌控与转化

Go语言是一种快速、简洁且高效的编程语言&#xff0c;它在处理日期与时间方面提供了丰富的标准库函数。本文将详细介绍Go语言中处理日期与时间的函数&#xff0c;涵盖常用的日期时间操作、格式化、时区转换等内容&#xff0c;并介绍time.Time结构体中的相关方法。 时间的表示与…

科技探究之旅--亲子研学活动

2023年8月26日&#xff0c;广州市从化区齐家社会工作服务中心&#xff08;以下简称“齐家”&#xff09;的“星乐园-乡村儿童公益辅导服务项目”组织了新开村及西湖村助学点24对亲子到广州市白云区文搏3D打印基地进行“科技探究之旅--亲子研学”活动&#xff0c;旨在发现、点燃…

AIGC - 生成模型

AIGC - 生成模型 0. 前言1. 生成模型2. 生成模型与判别模型的区别2.1 模型对比2.2 条件生成模型2.3 生成模型的发展2.4 生成模型与人工智能 3. 生成模型示例3.1 简单示例3.2 生成模型框架 4. 表示学习5. 生成模型与概率论6. 生成模型分类小结 0. 前言 生成式人工智能 (Generat…

2023第七届蓝帽杯 初赛 web LovePHP

LovePHP 直接给了源码。 network查看到&#xff0c;PHP版本是7.4.33 题目要求我们GET一个my_secret.flag参数&#xff0c;根据PHP字符串解析特性&#xff0c;PHP需要将所有参数转换为有效的变量名&#xff0c;因此在解析查询字符串时&#xff0c;它会做两件事&#xff1a; 删…

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【五】

&#x1f600;前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【五】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章…

vscode使用anaconda自带的python环境在终端运行时报错

目录 具体报错内容官方翻译报错讲人话解决方法 具体报错内容 CommandNotFoundError: Your shell has not been properly configured to use conda activate. If your shell is Bash or a Bourne variant, enable conda for the current user with$ echo ". E:\Anaconda/e…

ResNet详解:网络结构解读与PyTorch实现教程

目录 一、深度残差网络&#xff08;Deep Residual Networks&#xff09;简介深度学习与网络深度的挑战残差学习的提出为什么ResNet有效&#xff1f; 二、深度学习与梯度消失问题梯度消失问题定义为什么会出现梯度消失&#xff1f;激活函数初始化方法网络深度 如何解决梯度消失问…

vulnhub Seattle-0.0.3

环境&#xff1a;vuluhub Seattle-0.0.3 1.catelogue处任意文件下载(目录穿越) http://192.168.85.139/download.php?item../../../../../../etc/passwd 有个admin目录&#xff0c;可以下载里面的文件进行读取 2.cltohes详情页面处(参数prod)存在sql报错注入 http://192.16…