终于搞懂了——BASH内核

本文深入探讨了Linux下的BASH命令,包括历史记录、自动补全、命令别名、数据流重定向、管线命令、cut和grep等功能,助力读者提升Linux操作技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BASH作为学习Linux进阶的必要之路,今天俺就带你们瞧瞧Linux的内核到底有啥?

不废话,先上图
BASH主要内容

命令编修命令 (history):

最大的好处就是可以『查询曾经做过的动作!』 如此可以知道你的执行步骤,那么就可以追踪你曾下达过的指令,以作为除错的工具!

命令与档案补全功能: ([tab] 按键的好处)

[Tab] 接在一串指令的第一个字的后面,则为命令补全;

[Tab] 接在一串指令的第二个字以后时,则为『档案补齐』!

命令别名设定功能: (alias)

lm 这个自定义癿命令指代ls –al

alias lm='ls -al' 

数据流重导向

数据流重导向透过 >, 2>, < 之类的符号将输出的信息转到其他档案或装置。

上图是数据的输入和输出,其中输出有两种情况,一种是标准输出(standard output),一种是错误输出(standard error output)。

standard output 与standard error output

简单的说,标准输出指的是『指令执行所回传的正确的讯息』,而标准错误输出可理解为『 指令执行失败后,所回传的错误讯息』。正确或错误的数据都是默认输出到屏幕上!那能与能将这两股数据分开呢? 当然可以啊!那就是数据流重导向的功能啊!数据流重导向可以将 standard output (简称 stdout) 与 standard error output (简称 stderr) 分别传送到其他的档案或装置去。

  1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << ;

  2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> ;

  3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ;

管线命令 (pipe)

管线命令使用的是『 | 』这个界定符号 !
假设我们想要知道 /etc/ 底下有多少档案,那么可以使用 ls /etc 来查阅,不过, 因为 /etc 底下的档案太多,导致一口气就将屏幕塞满了~不知道前面输出的内容是啥?此时,我们可以透过 less 指令:

Ls –al /etc | less

如此一来,使用 ls 指令输出后的内容,就能够被 less 读取,我们就能够前后翻动相关的信息了。

管线命令『 | 』仅能处理经由前面一个指令传来的正确信息,也就是 standard output 的信息,对于 stdandard error没有直接处理的能力。

在每个管线后面接的第一个数据必定是『指令』!而且这个指令必须要能够接受 standard input 的数据才行,这样的指令才可以是为『管线命令』,例如 less, more, head, tail 等都是可以接受 standard input 的管线命令啦。至于例如 ls, cp, mv 等就不是管线命令了!

管线命令主要有两个比较需要注意的地方:

  • 管线命令仅会处理 standard output,对于 standard error output 会予以忽略

  • 管线命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理才行。

切割命令cut 和grep:

cat

使用权限:所有使用者
使用方式:cat [-AbeEnstTuv] [–help] [–version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
范例:
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。

grep

功能说明:查找文件里符合条件的字符串。
语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][–help][范本样式][文件或目录…]

补充说明:grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
参 数: -a或–text 不要忽略二进制的数据。
-A<显示列数>或–after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。
-b或–byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
-B<显示列数>或–before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。
-c或–count 计算符合范本样式的列数。
-C<显示列数>或–context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作>或–directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-e<范本样式>或–regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。
-E或–extended-regexp 将范本样式为延伸的普通表示法来使用。
-f<范本文件>或–file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
-F或–fixed-regexp 将范本样式视为固定字符串的列表。
-G或–basic-regexp 将范本样式视为普通的表示法来使用。
-h或–no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。 -H或–with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。 -i或–ignore-case 忽略字符大小写的差别。

-l或–file-with-matches 列出文件内容符合指定的范本样式的文件名称。
-L或–files-without-match 列出文件内容不符合指定的范本样式的文件名称。
-n或–line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。
-q或–quiet或–silent 不显示任何信息。
-r或–recursive 此参数的效果和指定“-d recurse”参数相同。
-s或–no-messages 不显示错误信息。
-v或–revert-match 反转查找。
-V或–version 显示版本信息。
-w或–word-regexp 只显示全字符合的列。
-x或–line-regexp 只显示全列符合的列。
-y 此参数的效果和指定“-i”参数相同。
–help 在线帮助。

参数代换: xargs

使用 xargs 的原因是,很多指令其实不支持管线命令,因此我们可以透过 xargs 来让这个指令生效!

例如:

find /sbin -perm +7000 | ls -l 
find /sbin -perm +7000 | xargs  ls -l

第一个命令会报错不会输出,第二个命令就可以输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值