本文介绍: 管理整个计算机硬件其实操作系统核心kernel),我们一般使用者就只能通过 shell 来跟核心沟通,以让核心达到我们所想要达到的工作

管理整个计算硬件其实操作系统核心kernel),我们一般使用者就只能通过 shell 来跟核心沟通,以让核心达到我们所想要达到的工作

1、Bash shell功能

1)bash 主要的优点:

2)查询指令是否为 Bash shell内置命令type

格式type [-tpa] name

选项参数

        :不加任何选项与参数时,type显示name外部指令还是 bash 内置指令

        –t :当加入 -t 参数时,type 会将 name 以下面这些字眼显示出他的意义:         

                file表示为外部指令

                alias表示指令命令别名设置名称

                builtin表示该指令为 bash 内置的指令功能

        –p :如果后面接的 name 为外部指令时,才会显示完整文件名

        -a :会由 PATH 变量定义路径中,将所有含 name 的指令都列出来,包含 alias

2、Shell 的变量功能

1)”变量就是某个特定字符串代表固定内容

 变量名myname 的内容就带有 VBird个数据。在 bash 当中,当一个变量名称尚未被设置时,默认内容是“空”的。 另外,变量在设置时,还是需要符合某些规定的,否则会设置失败

 由于每个 distributions这个值都不相 同,但是我们可以利用 unamer 这个指令先取得版本信息。就可以通过上面指令 当中的内含指令 $(unamer) 先取得版本输出cd

 2)环境变量功能

关键变量的功能:

  1.  HOME 代表使用者的主文件夹
  2. SHELL 告知我们,目前这个环境使用的 SHELL 是哪支程序
  3. HISTSIZE 这个与“历史命令”有关,记录的“笔数”则是由这个值来设置的
  4. MAIL 当我们使用 mail 这个指令在收信时,系统会去读取邮件信箱文件mailbox)。
  5. PATH 就是可执行文件搜寻的路径
  6. LANG 就是系数
  7. RANDOM 这个玩意儿就是随机乱数”的变量

 上头那些变量当中,大概有这几个比较重要

PS1:(提示字符的设置)

$:(关于shell 的 PID)

?:(关于上个执行指令的回传值)

要让该变量 内容继续的在子程序使用

语系变量 :locale

 在 CentOS 7 当中,你要让 LC_ALL 生效时,得要使用 export 转成环境变量才行

read [-pt] variable

选项与参数:

p :后面可以接提示字符

-t :后面可以接等待的“秒数!

 3)文件系统程序限制关系ulimit

ulimit [-SHacdfltu] [配额]

选项与参数:

-H :hard limit严格的设置,必定不能超过这个设置的数值

-S :soft limit警告的设置,可以超过这个设置值,但是若超过则有警告讯息。 在设置上,通常 soft 会比 hard 小,举例来说,soft 可设置为 80 而 hard 设置为 100,那么你可以使用到 90 (因为没有超过 100),但介于 80~100 之间时, 系统会有警告讯息通知你!

-a :后面不接任何选项与参数,可列出所有的限制额度;

c :当某些程序发生错误时,系统可能会将该程序内存中的信息写成文件(除错用), 这种文件就被称为核心文件core file)。此为限制每个核心文件最大容量。

f :此 shell 可以创建最大文件大小(一般可能设置为 2GB)单位为 KBytes

d程序使用的最大断裂内存segment)容量;

-l :可用锁定lock) 的内存

-t :可使用的最大 CPU 时间单位为秒)

-u :单一使用者可以使用的最大程序process)数量。

eg1:列出你目前身份假设为一般帐号)的所有限制数据数值

3、对命令设置别名和历史命令

1)对命令设置别名alias, unalias

 删除 lm 命令别名

 2)查看历史纪录history

        history [n]

        history [-c]

        history [-raw] histfiles

选项与参数:

n :数字,意思是“要列出最近的 n 笔命令列表”的意思!

c :将目前的 shell 中的所有 history 内容全部消除

-a :将目前新增history 指令新增histfiles 中,若没有histfiles , 则默认写入 ~/.bash_history

-r :将 histfiles 的内容读到目前这个 shellhistory 记忆中;

w :将目前的 history 记忆内容写入 histfiles 中!

        !number

        !command

        !!

选项与参数:

number执行第几笔指令的意思;

command :由最近的指令向前搜寻“指令串开头command”的那个指令,并执行

!! :就是执行上一个指令(相当于按↑按键后,按 Enter

4、Bash Shell操作环境详解

1)一个指令被执行后搜寻顺序

1. 以相对/绝对路径执行指令,例如“ /bin/ls ”或“ ./ls ”;

2. 由 alias 找到该指令来执行;

3. 由 bash 内置的 (builtin) 指令来执行;

4. 通过 $PATH 这个变量的顺序搜寻到的第一个指令来执行。

alias 再 builtin 再由 $PATH 找到 /bin/echo

2) bash 的环境配置

1. /etc/profile:这是系统整体的设置,你最好不要修改这个文件

2. ~/.bash_profile 或 ~/.bash_login 或 ~/.profile属于使用者个人设置,你要改自己数据,就写入这里

bash 的 login shell 情况下所读取的整体环境配置文件其实只有 /etc/profile,但是 /etc/profile 还会调用出其他的配置文件.

bash 在读完了整体环境设置的 /etc/profile 并借此调用其他配置文件后,接下来则是会读取使 用者的个人配置文件。 在 login shell 的 bash 环境中,所读取个人偏好配置文件其实主要 有三个,依序分别是:

1. ~/.bash_profile

2. ~/.bash_login

3. ~/.profile

其实 bash 的 login shell 设置只会读取上面三个文件的其中一个, 而读取的顺序则是依照上 面的顺序。也就是说,如果 ~/.bash_profile 存在,那么其他两个文件不论有无存在,都不会 被读取。

 由于 PATH 在 /etc/profile 当中已经设置过,所以在这里就以累加的方式增加使用者文件夹下的 ~/bin/ 为额外可执行文件放置目录。这也就是说,你可以将自己创建可执行文件放置到你 自己文件夹下的 ~/bin/ 目录,那就可以直接执行该可执行文件而不需要使用绝对/相对路 径来执行该文件。

source小数点 (.) 都可以将配置文件的内容读进来目前的 shell 环境中,而不需要登入登出操作使设置生效

5、数据流重导向

当你执行一个指令操作后,会有三种执行结果标准输入标准输出标准错误输出

标准输出指的是“指令执行所回传正确的讯息”,而标准错误输出理解为“ 指令 执行失败后,所回传错误讯息”。

当有多个数输出屏幕上时,可以用数据流重定向分别传送到其他的文件或设备。而分别传送所用的特殊字符如下所示

如果我知道错误讯息会发生,所以要将错误讯息忽略掉而不显示或储,存这个 /dev/null 可以吃掉任何导向这个设备信息

 2)执行命令判断依据: ; , &&, ||

指令下 达情况 说明
cmd1 && cmd2 1. 若 cmd1 执行完毕且正确执行($?=0),则开始执行 cmd2。 2. 若 cmd1 执行完毕且为错误 ($?≠0),则 cmd2 不执行。
cmd1 || cmd2 1. 若 cmd1 执行完毕且正确执行($?=0),则 cmd2 不执行。 2. 若 cmd1 执 行完毕且为错误 ($?≠0),则开始执行 cmd2。

如果 /tmp/abc存在时,touch 就不会被执行,若 /tmp/abc 存在的话,那么 touch 就会开始执行.

 6、管线命令:pipe

1)、撷取命令: cut, grep

        cut -d’分隔字符‘ –f field用于有特定分隔字符

        cut -c 字符区间                 用于排列整齐的讯息

选项与参数:

-d :后面接分隔字符。与 –f 一起使用;

-f :依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思;

-c :以字符 (characters) 的单位取出固定字符区间

        grep [-acinv] [–color=auto] ‘搜寻字串’ filename

选项与参数:

-a :将 binary 文件以 text 文件的方式搜寻数据

-c :计算找到 ‘搜寻字串’ 的次数 -i :忽略大小写不同,所以大小写视为相同

-n :顺便输出行号

v反向选择,亦即显示没有 ‘搜寻字串’ 内容的那一行

color=auto :可以将找到关键字部分加上颜色显示喔!

 

 1)排序命令: sort, wc, uniq

        sort [-fbMnrtuk] [file or stdin]

选项与参数:

-f :忽略大小写的差异,例如 A 与 a 视为编码相同

-b :忽略前面空白字符部分

-M :以月份名字排序例如 JAN, DEC 等等的排序方法

-n :使用“纯数字”进行排序默认是以文字体态来排序的);

-r :反向排序

-u :就是 uniq ,相同的数据中,仅出现一行代表

-t :分隔符号默认是用 [tab] 键来分隔

-k :以那个区间field) 来进行排序的意思

eg:个人帐号记录在 /etc/passwd 下,请将帐号进行排序

eg :/etc/passwd 内容是以 : 来分隔的,我想以第三栏按数字类型排序

        uniq [-ic]

选项与参数:

-i :忽略大小写字符的不同

-c :进行计数

eg:使用 last帐号列出,仅取出帐号栏,进行排序后仅取出一位,并且要知道每个人的登陆总次数。

        wc [-lwm]

选项与参数:

-l :仅列出行;

w :仅列出多少字(英文单字);

-m :多少字符;

ge:那个 /etc/man_db.conf 里面到底有多少相关字、行、字符数?

 3)双向重导向: tee

tee 会同时将数据流分送到文件去与屏幕:

        tee [-a] file

选项与参数:

-a :以累加 (append) 的方式,将数据加入 file 当中

ge:这个范例可以让我们将 last 的输出存一份到 last.list 文件中;

 4)字符转换指令:tr, col, join, paste, expand

tr 可以用来删除一段讯息当中文字,或者是进行文字讯息的替换

        tr [-ds] SET1 …

选项与参数:

-d :删除讯息当中的 SET1 这个字串;

-s :取代掉重复的字符!

eg1:将 last 输出的讯息中,所有的小写变成大写字符:

eg2 :将 /etc/passwd 输出的讯息中,将冒号 (:) 删除

将 [tab] 按键取代成为空 白键

        col [-xb]

选项与参数:

x :将 tab转换成对等的空白

处理两个文件之间的数据, 而且, 主要是在处理两个文件当中,有 “相同数据” 的那一行,才将他加在一起”的意思。

        join [-ti12] file1 file2

选项与参数:

-t :join 默认空白字符分隔数据,并且比对“第一个字段”的数据, 如果两个文件相同,则将两笔数据联成一行,且第一个字段放在第一个

-i :忽略大小写的差异;

-1 :这个是数字的 1 ,代表“第一个文件要用那个字段分析”的意思;

-2 :代表“第二个文件要用那个字段分析”的意思。

直接“将两行贴在一起,且中间以 [tab] 键隔开”。

        paste [-d] file1 file2

选项与参数:

-d :后面可以接分隔字符。默认是以 [tab] 来分隔的!

– :如果 file 部分写成 – ,表示来自 standard input 的数据的意思。

这玩意儿就是在将 [tab] 按键转成空白键

        expand [-t] file

选项与参数:         

-t :后面可以接数字。一般来说,一个 tab 按键可以用 8 个空白键取代。 我们也可以自行定义一个 [tab] 按键代表多少个字符呢!        

5)分区命令: split

如果你有文件太大,导致一些携带式设备无法复制问题。split可以帮 你将一个大文件,依据文件大小行数分区,就可以将大文件分区成为小文件了。

        split [-bl] file PREFIX

选项与参数:

-b :后面可接欲分区成的文件大小,可加单位例如 b, k, m 等;

-l :以行数来进行分区

PREFIX :代表前置字符的意思,可作为分区文件的前导文字

eg1:我的 /etc/services 有六百多K,若想要分成 300K 一个文件

6)参数代换指令:xargs在产生某个指令的参数的

        xargs [-0epn] command

选项与参数:

-0 :如果输入的 stdin 含有特殊字符,例如 `, , 空白键等等字符时,这个 -0 参数 可以将他还原成一般字符。这个参数可以用于特殊状态

-e :这个是 EOF (end of file) 的意思。后面可以接一个字串,当 xargs 分析到这个字串时, 就会停止继续工作

p :在执行每个指令的 argument 时,都会询问使用者的意思;

-n :后面接次数,每次 command 指令执行时,要使用几个参数的意思。

xargs 后面没有接任何的指令时,默认是以 echo 来进行输出

eg1:将 /etc/passwd 内的第一栏取出,仅取三行,使用 id 这个指令将每个帐号内容秀出来

管线命令的重点是:“管线命令仅会处理 standard output,对于 standard error output 会 予以忽略” “管线命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理 才行。

原文地址:https://blog.csdn.net/2301_77673652/article/details/132063914

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44614.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注