Linux基础知识与实操-篇五:bash使用进阶

news2024/11/26 5:56:25

通过上篇 篇四:初识bash与配置 的学习,已经基本认识了Linux下bash工具的使用和配置,下面将讲解过多关于bash在其他地方的使用。

终端机的环境设置

stty -a 命令可以得到 目前环境中 所有的 按键列表,其中 ^ 表示的是 ctrl 按键,几个有重要意义的如下:
image

还可以使用 set 命令来设置 自定义的按键值:

image
image

一般不建议修改,如下是 默认的 bash组合键
image

通配符与特殊符号

如下列出常用的几个通配符,通配符 和正则表达式的通配符是一样的
image

除了通配符,还有 常用的特殊符号:
image

因为这样的特殊字符的存在,就不要在 文件名中 涉及这些 特殊字符了

数据重定向

数据重定向 可以简单的理解为 将本来应该要出现在 屏幕上的内容,重定向到 其他地方

每个程序在运行后,都会至少打开三个文件描述符,分别是0:标准输入stdin;1:标准输出stdout;2:标准错误stderr
我们就可以使用这三个数字分别代表不同的 操作,操作不同的 文件描述符了

标准输出

这里再简单区分下 >表示覆盖即 删掉原有的内容,使用新的内容 和 >>表示追加 即在原有的内容后面增加

下面就可以考虑将上的命令组合,实现一些具体的操作了:

1>	以覆盖的方式,将 正确数据 输出到指定的文件中
1>>	以追加的方式,将 正确数据 输出到指定的文件中
2>	以覆盖的方式,将 错误数据 输出到指定的文件中
2>>	以追加的方式,将 错误数据 输出到指定的文件中

有如下应用:可以分别指定两个文件,用来接受 标准输出和标准错误

# 将标准输出 和 标准错误 分别 重定向到不同的文件中,屏幕就不再打印任何消息了
find /home -name .bashrc > list_right 2> list_error

一般在执行 shell脚本时 ,会将 错误信息输出到 /dev/null 中,这个文件就是 专门用来接收 各种 错误信息的

find /home -name .bashrc 2> /dev/null

我们有时还可以 将 正确和错误的数据,全部都放入同一个文件中(就类似日志文件那样)

# 错误写法: 会造成 数据交叉写入,造成 数据混乱
find /home -name .bashrc > list 2> list

# 推荐写法
find /home -name .bashrc >list 2>&1
# 同理的变形写法
find /home -name .bashrc &> list

2>&1 表明将 文件描述2(标准错误输出)的内容重定向到 文件描述符1(标准输出)
为什么1前面需要&?当没有&时,1会被认为是一个普通的文件,有&表示重定向的目标不是一个文件,而是一个文件描述符
在前面我们知道,>list又将 文件描述符1 的内容重定向到了文件 list 中,那么最终标准错误也会重定向到list中

为何 2>&1 要写在后面?
command > file 2>&1
首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。

command 2>&1 >file
2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

标准输出还有其他作用,如下:

  • 屏幕输出的信息很重要,需要保存时
  • 背景执行中的程序,不希望干扰 屏幕正常的输出结果时
  • 一些系统的例行命令的执行结果,需要保存起来
  • 一些执行命令 可能有已知 的错误信息,需要将其 丢弃 2>/dev/null
  • 错误信息与正确信息需要分别输出

标准输入

标准输入standard input:<<< , 表示 将原本需要 由键盘输入的数据,改由 文件内容来获取

如下可以使用 cat 命令建立一个 文件:

[root@AliComputer test]# cat > catfile
testing
cat file test[root@AliComputer test]# ll
total 4
-rw-r--r-- 1 root root 21 May 21 19:07 catfile
[root@AliComputer test]# cat catfile
testing
cat file test[root@AliComputer test]#

由于在 cat 命令之后增加了> 表示标准输入,catfile 文件就会被主动建立,内容就是 后面键入的内容

我们甚至可以 用某个文件的内容来取代 键盘的敲击:
image

下面再解释一下<<,这个的含义是:结束的输入字符,就是可以使用 它定义的字符来结束输入,使用如下:

# 只要在输入的内容中 含有 eof了,输入就会停止
[root@AliComputer test]# cat >catfile1 <<"eof"
> This is a test
> catfile1
> now Stop
> eof
[root@AliComputer test]# ll
total 8
-rw-r--r-- 1 root root 21 May 21 19:07 catfile
-rw-r--r-- 1 root root 33 May 21 19:14 catfile1
[root@AliComputer test]# cat catfile1
This is a test
catfile1
now Stop
[root@AliComputer test]#

使用 << 右侧的控制字符,就可以终止一次输入,不用使用 Ctrl+d 来结束了

双向重定向

上面的命令都是 单纯的 输入重定向 和 输出重定向,使用 tee 可以实现 同时将 数据流 分送到 文件与屏幕(就是输出)
image

tee [-a] file
-a 以累加的方式,将数据 放入 file文件中

使用如下:
image

命令执行的 判断依据

可以使用 ; 分隔开不同的命令,这样就会顺序执行 键入的命令
前一个指令执行成功与否 与 后一个指令 是否执行无关!

如果要 建立关联,就需要使用 逻辑运算符了 &&||

在 Linux中通过 $? 来获取 上一个 指令 执行的返回值,如果正确执行,一般返回 1(true),否则 返回 0(false), 逻辑运算符就是通过 命令的返回值来进行判断,然后确定 下一个指令是否要执行的:
image

可以有如下应用,我们可以实现 一个命令先创建目录,再在该目录下创建文件:
image

有 C语言的基础,还有 逻辑判断 和 短路 的基础,还是很好理解的

管道符、数据筛选命令

在 Linux-shell脚本编程中学习

uniq 命令从来 去重
image

字符转换命令

tr 命令可以实现 删除一段文本中的字符串,或者进行 文本 替换

tr [-ds] SET1
-d  删除数据中的 SET1 这个字符
-s  取代 重复的字符

使用如下:
image

这个命令也支持正规文法,用来 取代数据

col 命令:有很多其他用途,这里可以实现 将 tab 键 变为 空格键
image


join 命令 用于处理两个文件直接的数据,只要在两个文件之中,有 相同数据 的行,才会 加在一起,在处理 相关的文件数据时,特别有效

join [-til2] file1 file2
-t  join默认使用 空格符 作为分隔符,并且比对 第一个字段 的数据,如果两个文件相同,则将这两个数据连成一行,且	第一个字段放在第一个
-i  忽略大小写
-1  表示 第一个文件要用那个字段来分析
-2  表示 第二个文件要用那个字段来分析

使用如下:
image


paste 命令可以 将 两行 直接 拼接在一起,中间用 tab 键 分割

paste [-d] file1 file2
-d  后面接 分隔符,预设是 tab,可以修改为其他 分隔符
-	如果 file 部分写成 - ,表示是来自 标准输入standard input 的意思

使用如下:
image


expand 命令可以将 tab 键转换为 空格键

expand [-t] file
-t  后面可以接数字,一般来说,一个 tab 按键 可以用 8个空格(shell编程中可以这样认为)取代,可以自定义tab键表示多少个空格

使用如下:
image

分区命令

如果文件太大,导致 无法复制等问题,就可以使用 split命令来 将一个大文件,按照 文件大小 或 行数进行区分,就可以将 大文件 区分为小文件了
要恢复的话,再使用 重定向就可以了

split -[bl] file PREFIX
-b  指定要 分区成的文件大小,可以加单位,b,k,m等
-l  按照行数来区分
PREFIX  作为前导符,可作为分区文件的前导文字

使用如下:
image

按照行来划分:
image

参数代换

是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行

基本使用:

somecommand |xargs -item  command
-a file 从文件中读入作为 stdin
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
-p 当每次执行一个argument的时候询问一次用户。
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-t 表示先打印命令,然后再执行。
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num 从标准输入一次读取 num 行送给 command 命令。
-l 同 -L。
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-x exit的意思,主要是配合-s使用。。
-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧

范例:
image

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

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

相关文章

原来电商企业也能运用模型规划设计营销活动

营销推广是电商重要的运营组成。电商平台要发起一场综合性的推广活动&#xff0c;需要明确参与活动的商品范围、促销价格、推广渠道以及如何触达到消费者等。很多营销推广活动规则复杂且不断变化&#xff0c;就需要使用模型来设计&#xff0c;例如邀人砍一刀的“免费提现”、多…

[附源码]Python计算机毕业设计Django高校学生宿舍管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【人工智能】知识图谱

文章目录一、知识图谱的概况二、知识图谱的基本概念三、知识图谱构建技术四、知识图谱主要应用四、知识图谱主要应用一、知识图谱的概况 知识&#xff08;Knowledge&#xff09;&#xff1a;合理性&#xff08;Justified&#xff09;、真实性&#xff08;True&#xff09;、被…

B轮融资背后:未势能源在万亿“长坡”上,铺出三重“厚雪”

今年以来&#xff0c;氢能源行业爆发出强劲的资本热潮。 川财证券分析称&#xff0c;我国氢能领域已完成35起投融资事件&#xff0c;总金额超过63亿元。另外&#xff0c;在A股市场&#xff0c;今年以来就有东华能源、粤水电等上市公司宣布涉足氢能。11月30日&#xff0c;专注氢…

汇川伺服电机位置控制模式QT程序Demo实现

0.实现效果 1.工程文件 #------------------------------------------------- # # Project created by QtCreator 2022-11-30T09:37:26 # #-------------------------------------------------QT core gui QT serialportgreaterThan(QT_MAJOR_VERSION, 4): QT …

JAVA实现数组模拟队列

队列本身是有序列表&#xff0c;若使用数组的结构来存储队列的数据&#xff0c;则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理&#xff0c;因此需要两个变量 front及 rear分别记录队列前后端的下标&#xff0c;front 会…

RepVGG论文理解与代码分析

最近&#xff0c;看到很多轻量化工作是基于RepVGG改进而来&#xff0c;决定重新回顾一下RepVGG&#xff0c;并在此记录一些理解与心得。 论文地址&#xff1a;https://arxiv.org/abs/2101.03697 Introduction RepVGG通过结构重参数化思想&#xff0c;让训练网络的多路结构(多…

[附源码]JAVA毕业设计-高中辅助教学系统-(系统+LW)

[附源码]JAVA毕业设计-高中辅助教学系统-&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

[附源码]Python计算机毕业设计Django电商小程序

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

「湖仓一体」释放全量数据价值!巨杉数据库亮相2022沙丘大会

近日&#xff0c;由数字化研究与知识服务平台沙丘社区主办的2022沙丘大会成功举办&#xff0c;巨杉数据库受邀出席大会&#xff0c;并在湖仓一体专场进行《湖仓一体释放全量数据价值》的主题演讲。 近日&#xff0c;由数字化研究与知识服务平台沙丘社区主办的2022沙丘大会以线上…

低代码开发平台助力生产管理:采购成本管理的优化

采购是企业经营活动中的重要环节&#xff0c;它处于企业生产经营活动的最前端&#xff0c;同时也是成本费用中占较大比重的环节。采购成本主要是指企业在生产过程中用于采购产品及服务等交易活动所产生的一系列支出&#xff0c;包括物资的购买价格、税费、运输费等&#xff0c;…

X电容和Y电容

X电容和Y电容 1安规电容 安规电容之所以称之为安规&#xff0c;它是指用于这样的场合&#xff1a;即电容器失效后&#xff0c;不会导致电击&#xff0c;也不危及人身安全。安规电容包含X电容和Y电容两种&#xff0c;它普通电容不一样的是&#xff0c;普通电容即使在外部电源断…

从0到1 Webpack搭建Vue3开发、生产环境

起步 创建项目目录 mkdir webpack-vue3-demo初始化 package.json npm init -y参考文档 安装 webpack webpack-cli webpack-dev-server webpack-merge npm install webpack webpack-cli webpack-dev-server webpack-merge --save-dev创建配置文件 mkdir build cd build …

vscode配置git和c++

vscode配置git和cvscode配置c1.必要配置2.可选配置配置git1.命令行使用git2.IDE使用git3.一点补充过滤文件设置别名之前一直在用vscodepython做实验&#xff0c;现在想利用vscode复习下c和git顺便做做力扣。vscode配置c 1.必要配置 由于vscode只是个编辑器&#xff0c;所以首…

JVM之运行时数据区 面试相关

JVM创建对象的方式创建对象的步骤内存布局对象访问定位![请添加图片描述](https://img-blog.csdnimg.cn/fa106bd4936440b28e1c359d57ba4d25.png)直接内存创建对象的方式 new 常见方式 Xxx静态方法 XxxBuilder/XxxFactory的静态方法Class的newInstance() 反射&#xff0c;只能空…

魔兽世界开服架设服务器搭建教程

魔兽世界开服架设服务器搭建教程 准备工具&#xff1a; 1、装有windows98/2000/xp/2003系统、内存至少256M的电脑一台 2、魔兽服务器端一个 3、服务器一台&#xff08;魔兽世界对服务器的配置要求并不是很高&#xff0c;CPU 16核 、16线程 带宽最好是选择50M的&#xff0c;游戏…

美食杰项目 -- 发布菜谱(七)

目录前言&#xff1a;具体实现思路&#xff1a;步骤&#xff1a;1. 展示美食杰发布菜谱页效果2. 引入element-ui3. 代码总结&#xff1a;前言&#xff1a; 本文给大家讲解&#xff0c;美食杰项目中 实现发布菜谱页的效果&#xff0c;和具体代码。 具体实现思路&#xff1a; 按…

骑行运动耳机哪个好,列举五款适合在骑行过程中佩戴的耳机

谈起耳机&#xff0c;人们第一印象应该是传统的入耳式耳机&#xff0c;这种耳机在音质以及体积上确实占据了一定的优势&#xff0c;但还是存在着不少的缺点&#xff0c;特别是佩戴的过程中会让我们的耳道保持堵塞状态&#xff0c;导致中耳炎等疾病的频频发生&#xff0c;而这两…

ASEMI-KBL410是什么元器件,kbl410整流桥参数

编辑-Z 俗话说&#xff0c;时势造英雄&#xff0c;整流桥大军中有一款整流桥KBL410有哪些你所不知道的&#xff1f;KBL410是什么元器件&#xff1f;kbl410整流桥参数是多少&#xff1f; KBL410参数描述 型号&#xff1a;KBL410 封装&#xff1a;KBL-4 电性参数&#xff1a;…