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]*
相关文章:
SHELL 基础 入门(三) Bash 快捷键 命令执行顺序,详解通配符
目录 Bash 常用快捷键 输入输出重定向 << 用法 输出重定向 命令执行顺序 ; 分号 && || 通配符 传统通配符 ? * [ ] [ - ] [ ^ ] 常用字符 强调 : { } 生成序列 Bash 常用快捷键 Ctrl A 把光…...
nvm安装使用教程
文章目录 下载配置安装最新稳定版 node安装指定版本查看版本切换版本删除版本 常见问题安装node后 显示拒绝访问的问题使用cnpm会报错的问题降低cnpm版本npm镜像 下载 NVM for Windows 下载地址:https://link.juejin.cn/?targethttps%3A%2F%2Fgithub.com%2Fcoreyb…...
【Android】JUnit和Espresso单元测试新手快速入门
引入依赖 android {defaultConfig {testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}}dependencies {testImplementation junit:junit:4.13.2androidTestImplementation androidx.test.ext:junit:1.1.0androidTestImplementation androidx.tes…...
8.4 【C语言】通过指针引用字符串
8.4.1 字符串的引用方式 在C程序中,字符串是存放在字符数组中的。想引用一个字符串,可以用以下两种方法。 (1)用字符数组存放一个字符串,可以通过数组名和下标引用字符串中一个字符,也可以通过数组名和格…...
【广州华锐视点】AR配电所巡检系统:可视化巡检利器
随着科技的发展,人工智能、大数据等技术逐渐应用于各个领域,为人们的生活带来便利。在电力行业,AR(增强现实)技术的应用也日益广泛。AR配电所巡检系统作为一种新型的巡检方式,可以实现多种功能,提高巡检效率࿰…...
微服务中间件--http客户端Feign
http客户端Feign http客户端Feigna.Feign替代RestTemplateb.自定义Feign的配置c.Feign的性能优化d.Feign的最佳实践分析e.Feign实现最佳实践(方式二) http客户端Feign a.Feign替代RestTemplate 以前利用RestTemplate发起远程调用的代码: String url "http:…...
C语言学习系列-->【关于qsort函数的详解以及它的模拟实现】
文章目录 一、概述二、qsort函数参数介绍三、qsort实现排序3.1 qsort实现整型数组排序3.2 qsort实现结构体数组排序 四、模拟实现qsort函数 一、概述 对数组的元素进行排序 对数组中由 指向的元素进行排序,每个元素字节长,使用该函数确定顺序。 此函数使…...
Linux系统安全:NAT(SNAT、DNAT)
目录 一.NAT 二.SNAT 三.DNAT 一.NAT NAT: network address translation,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链 请求报文:修改源/目标IP, 响应报文:修改源/目标IP,根据…...
【数据库】MySQL存储过程:提升数据库性能和操作效率的利器
在数据库管理系统中,存储过程是一种重要的数据库对象,它允许将一组复杂的SQL语句组合起来,形成一个独立的单元进行重复使用。存储过程可以极大地提高数据库的性能和操作效率,降低网络流量,减轻系统负载。本文将深入探讨…...
rust写一个多线程和协程的例子
当涉及到多线程和协程时,Rust提供了一些非常强大的工具,其中最常用的库之一是tokio,它用于异步编程和协程。下面我将为你展示一个简单的Rust程序,演示如何使用多线程和协程。 首先,你需要在你的项目的Cargo.toml文件中…...
react18+antd5.x(1):Notification组件的二次封装
antdesign已经给我们提供了很好的组件使用体验,但是我们还需要根据自己的项目业务进行更好的封装,减少我们的代码量,提升开发体验 效果展示 开起来和官网的使用没什么区别,但是我们在使用的时候,进行了二次封装,更利于我们进行开发 MyNotification.jsx,是我们的业务页面…...
jenkins运行pytest测试用例脚本报错:没有权限,无法写日志PermissionError:[Error 13]Permission denied
报错信息: PermissionError:[Error 13]Permission denied:‘/var/jenkins_home/workspace/deleverySystem/Delivery_System/out_files/logs/waimai_20230823.log’ 解决方法: 在jenkins容器内部输入 chmod -R 777 /var/jenkins_home/works…...
数据结构 day1
1>x.mind 2>间接定义结构体数组,进行4种方式的定义和初始化 3>定义结构体存储10辆车(车的信息:品牌、单价、颜色) 1.定义函数,实现循环输入 2.定义函数,实现排序 3.定义函数,计算红色车…...
湖北咸宁农业三维扫描数字化农业3d打印制造应用-CASAIM中科广电
农业是人类衣食之源、生存之本,是一切生产的首要条件,CASAIM在农业三维扫描和3d打印应用上有丰富经验。 1.三维扫描技术在农业领域的应用 CASAIM三维扫描是集光学、机电和计算机技术于一体的高新无损检测技术,能够对实物的空间外形、结构乃…...
Jenkins的定时任务配置
jenkins配置定时任务位置(点击日程表的问好可查看语法配置) jenkins的定时任务的参数 # 定时任务参数(每个参数之间使用tab键或空格分隔)MINUTE HOUR DOM MONTH DOW 参数解释取值范围 MINUTE 分钟0-59HOUR小时0-23DOM一月的天数1-31MONTH月份1-12DOW 一周的天数0…...
THINKPHP 微联云投票系统源码独立版 + 支持刷礼物
THINKPHP 微联云投票系统源码独立版 支持刷礼物 nginxphp7.2以上 mysql5.6以上 简单测试后台基本没什么问题,暂时发现H5前端有bug,自行修复。...
Mongodb两种启动方法
一、命令行启动 1.修改存放数据库的位置 说明:E:\data\mongodb;我在E盘创建的文件夹mongodb mongod --dbpathE:\data\mongodb 2.成功启动 说明:默认端口27017,代表已经启动成功 ,并在mongodb自动创建文件 二、配置项…...
Python:列表的浅拷贝与深拷贝
在python语言中,因为其面向对象的特性,在进行列表拷贝时可能会出现一些意想不到的结果,涉及到列表的浅拷贝和深拷贝相关问题,本文将对其进行总结。 首先我们来看以下代码。 my_list [1, 2, 3] your_list my_list your_list[0] …...
OnePlus Open可折叠手机:规格、价格、发布日期等详细信息汇总!
我们知道OnePlus可折叠手机即将问世,无论它是否被命名为OnePlus Open。我们迫不及待地想让它到来,为该公司再添一根弦,为最好的可折叠手机增添一个新的竞争对手。 OnePlus以前没有生产过任何可折叠产品,但它确实拥有合作伙伴公司Oppo的丰富知识,并可以向三星、摩托罗拉和…...
SQL 数据库
安装配置 【1】 MySQL安装配置教程(超级详细、保姆级) 【2】 MySQLNavicat安装配置教程(超级详细、保姆级) 学习资料 【戴师兄】SQL入门免费教程 刷题链接:https://share.mubu.com/doc/4BHMMbbvIMb 学习笔记…...
【算法系列篇】滑动窗口
文章目录 前言什么是滑动窗口1.长度最小的子数组1.1 题目要求1.2 做题思路 1.3 Java代码实现2.无重复字符的最长子串2.1 题目要求2.2 做题思路2.3 Java代码实现 3.最大连续1的个数 III3.1 题目要求3.2 做题思路3.3 Java代码实现 4.将x减到0的最小操作数4.1 题目要求4.2 做题思路…...
多维时序 | MATLAB实现BiTCN-BiGRU-Attention多变量时间序列预测
多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现BiTCN-BiGRU-Attention多变量时间序列预测。 模型描…...
Docker容器与虚拟化技术:Docker compose部署LNMP
目录 一、理论 1.LNMP架构 2.背景 3.Dockerfile部署LNMP 3.准备Nginx镜像 4.准备MySQL容器 5.准备PHP镜像 6.上传wordpress软件包 7.编写docker-compose.yml 8.构建与运行docker-compose 9.启动 wordpress 服务 10.浏览器访问 11.将运行中的 docker容器保存为 doc…...
高性能服务器Nodejs操作Mysql数据库
目录 1 Node 操作 mysql1.2 操作 mysql 数据库 2 Web 开发模式2.1 服务端渲染2.2 前后端分离2.3 如何选择 3 身份认证3.1 Session 认证机制3.2 JWT 认证机制 1 Node 操作 mysql 数据库和身份认证 配置 mysql 模块 安装 mysql 模块 npm install mysql建立连接 const mysql …...
ffmpeg将rtsp流转成mp4
命令行版本 ffmpeg -y -i "rtsp://你的rtsp地址" -vcodec copy -f mp4 d:/1.mp4中间的rtsp网址一定要加上双引号,避免出现url有特殊字符的问题 java代码版本 如果不支持tcp协议,去掉下面两个参数即可,加上这两个参数是因为ffmpeg默认使用ud…...
第十四天|层序遍历、226.翻转二叉树 (优先掌握递归)、101. 对称二叉树 (优先掌握递归)
层序遍历 题目链接:102. 二叉树的层序遍历 - 力扣(LeetCode) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(n…...
如何使用装rancher安装k8s集群(k8s集群图形化管理工具)
前言 kubernetes集群的图形化管理工具主要有以下几种: 1、 Kubernetes Dashborad: Kubernetes 官方提供的图形化工具 2、 Rancher: 目前比较主流的企业级kubernetes可视化管理工具 3、各个云厂商Kubernetes集成的管理器 4、 Kuboard: 国产开源Kubernetes可视化管理…...
类加载器与双亲委派
类加载器与双亲委派 Java 类加载器(Class Loader)是 Java 虚拟机(JVM)的一部分,负责将类的字节码加载到内存中,并将其转换为可执行的 Java 对象。类加载器在 Java 应用程序中起着重要的作用,它…...
用Python创造乐趣:编写你自己的探索游戏世界
在当今数字化时代,编程不再是一个专业程序员的专利。无论你是一个编程新手还是有一定经验的开发者,用Python编写简单的游戏是一个有趣且富有创造性的方式。在这篇博客中,我们将探索如何用Python构建一个基本的探索游戏世界,让玩家…...
git stash弹出栈中的指定内容
使用 git stash 的相关命令来选择性地弹出特定的 stash 内容,应用到指定的分支上。如果我们使用 git stash 命令已经存储了多个记录时,每个 stash 记录都会有一个唯一的标识符(stash{0}、stash{1}…)。通过这些标识符可以应用或弹…...
网站图片列表怎么做/推广搜索引擎
一、设置默认参数 ES6之前,给函数设置默认参数是这样做的: function fn(a) {if(typeof y undefined){a a || hello;}console.log(a); } fn(hi); // hi fn(false); // false 这里之所以要判断一下,是因为我们本意是函数没有传值时才给参数 a 设置为…...
路由器映射做网站稳定吗/百度快照怎么看
对于使用Eclipse进行日常编程工作的工程师来说,调试是每天都在进行的工作。针对一般意义上的调试过程,相信每一位工程师朋友都熟练掌握了。这里介绍几个调试中比较实用的高级功能。Eclipse远程调试Java自身支持调试功能,并提供了一个简单的调…...
临沂网站制作计划/免费seo关键词优化排名
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。 使用 Express 可以快速地搭建一个完整功能的网站。Express 框架核心特性:可以设置中间件来响应 HTTP 请求。定义了路由表用于执行不…...
中搜网站提交/策划网络营销活动
QList是一种表示链表的模板类。QList是Qt的一种泛型容器类。它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作。QList、QLinkedList和QVector提供的操作极其相似:*对大多数操作来说,我们用QList就…...
专业网站开发费用/链接点击量软件
前面学习了 at 命令,此命令在指定的时间仅能执行一次任务,但在实际工作中,系统的定时任务一般是需要重复执行的。而 at 命令显然无法满足需求,这是就需要使用 crontab 命令来执行循环定时任务。在介绍 crontab 命令之前࿰…...
北京网站制作一般多少钱/加盟
在802.11b/g网络标准中,无线网络的信道虽然可以有13个,但非重叠的信道,也就是不互相干扰的信道只有1、6、11(或13)这三个。是不是感觉很奇怪呢?不同的信道还能产生干扰或重叠?确实这样ÿ…...