管理整个计算机硬件的其实是操作系统的核心 (kernel),我们一般使用者就只能通过 shell 来跟核心沟通,以让核心达到我们所想要达到的工作。
1、Bash shell的功能
1)bash 主要的优点:
2)查询指令是否为 Bash shell 的内置命令: type
:不加任何选项与参数时,type 会显示出 name 是外部指令还是 bash 内置指令
–t :当加入 -t 参数时,type 会将 name 以下面这些字眼显示出他的意义:
–p :如果后面接的 name 为外部指令时,才会显示完整文件名;
-a :会由 PATH 变量定义的路径中,将所有含 name 的指令都列出来,包含 alias
2、Shell 的变量功能
1)”变量“就是让某个特定字符串代表不固定的内容。
变量名称 myname 的内容就带有 VBird 这个数据。在 bash 当中,当一个变量名称尚未被设置时,默认的内容是“空”的。 另外,变量在设置时,还是需要符合某些规定的,否则会设置失败。
由于每个 distributions 的这个值都不相 同,但是我们却可以利用 uname –r 这个指令先取得版本信息。就可以通过上面指令 当中的内含指令 $(uname –r) 先取得版本输出到 cd。
2)环境变量功能
关键变量的功能:
- HOME 代表使用者的主文件夹。
- SHELL 告知我们,目前这个环境使用的 SHELL 是哪支程序。
- HISTSIZE 这个与“历史命令”有关,记录的“笔数”则是由这个值来设置的
- MAIL 当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱文件 (mailbox)。
- PATH 就是可执行文件搜寻的路径
- LANG 就是语系数据
- RANDOM 这个玩意儿就是“随机乱数”的变量
语系变量 :locale
在 CentOS 7 当中,你要让 LC_ALL 生效时,得要使用 export 转成环境变量才行
选项与参数:
-t :后面可以接等待的“秒数!
3)文件系统及程序的限制关系: ulimit
选项与参数:
-H :hard limit ,严格的设置,必定不能超过这个设置的数值;
-S :soft limit ,警告的设置,可以超过这个设置值,但是若超过则有警告讯息。 在设置上,通常 soft 会比 hard 小,举例来说,soft 可设置为 80 而 hard 设置为 100,那么你可以使用到 90 (因为没有超过 100),但介于 80~100 之间时, 系统会有警告讯息通知你!
–c :当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件(除错用), 这种文件就被称为核心文件(core file)。此为限制每个核心文件的最大容量。
–f :此 shell 可以创建的最大文件大小(一般可能设置为 2GB)单位为 KBytes
-u :单一使用者可以使用的最大程序(process)数量。
3、对命令设置别名和历史命令
1)对命令设置别名: alias, unalias
2)查看历史纪录:history
history [n]
选项与参数:
–c :将目前的 shell 中的所有 history 内容全部消除
-a :将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles , 则默认写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
–w :将目前的 history 记忆内容写入 histfiles 中!
- 执行历史命令
!!
选项与参数:
command :由最近的指令向前搜寻“指令串开头为 command”的那个指令,并执行;
!! :就是执行上一个指令(相当于按↑按键后,按 Enter
4、Bash Shell 的操作环境详解
1)一个指令被执行后搜寻顺序
1. 以相对/绝对路径执行指令,例如“ /bin/ls ”或“ ./ls ”;
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 环境中,所读取的个人偏好配置文件其实主要 有三个,依序分别是:
3. ~/.profile
其实 bash 的 login shell 设置只会读取上面三个文件的其中一个, 而读取的顺序则是依照上 面的顺序。也就是说,如果 ~/.bash_profile 存在,那么其他两个文件不论有无存在,都不会 被读取。
由于 PATH 在 /etc/profile 当中已经设置过,所以在这里就以累加的方式增加使用者主文件夹下的 ~/bin/ 为额外的可执行文件放置目录。这也就是说,你可以将自己创建的可执行文件放置到你 自己主文件夹下的 ~/bin/ 目录,那就可以直接执行该可执行文件而不需要使用绝对/相对路 径来执行该文件。
source 或小数点 (.) 都可以将配置文件的内容读进来目前的 shell 环境中,而不需要登入登出操作使设置生效。
5、数据流重导向
当你执行一个指令操作后,会有三种执行结果:标准输入、标准输出、标准错误输出。
标准输出指的是“指令执行所回传的正确的讯息”,而标准错误输出可理解为“ 指令 执行失败后,所回传的错误讯息”。
当有多个数据输出到屏幕上时,可以用数据流重定向分别传送到其他的文件或设备。而分别传送所用的特殊字符则如下所示:
- 1. 标准输入 (standard input) :代码为 0 ,使用 <(取代键盘的输入) 或 <<(结束的输入字符) ;
- 2. 标准输出 (standard output):代码为 1 ,使用 > (覆盖)或 >>(累加) ;
- 3. 标准错误输出(standard error output):代码为 2 ,使用 2> (覆盖)或 2>>(累加) ;
如果我知道错误讯息会发生,所以要将错误讯息忽略掉而不显示或储,存这个 /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
- 管线命令仅会处理 standard output,对于 standard error output 会予以忽略
- 管线命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理才行。
1)、撷取命令: cut, grep
cut -d’分隔字符‘ –f fields 用于有特定分隔字符
选项与参数:
-f :依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;
grep [-acinv] [–color=auto] ‘搜寻字串’ filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 ‘搜寻字串’ 的次数 -i :忽略大小写的不同,所以大小写视为相同
–v :反向选择,亦即显示出没有 ‘搜寻字串’ 内容的那一行!
—color=auto :可以将找到的关键字部分加上颜色的显示喔!
1)排序命令: sort, wc, uniq
sort [-fbMnrtuk] [file or stdin]
选项与参数:
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用“纯数字”进行排序(默认是以文字体态来排序的);
eg:个人帐号都记录在 /etc/passwd 下,请将帐号进行排序。
eg :/etc/passwd 内容是以 : 来分隔的,我想以第三栏按数字类型来排序,
选项与参数:
-c :进行计数
eg:使用 last 将帐号列出,仅取出帐号栏,进行排序后仅取出一位,并且要知道每个人的登陆总次数。
选项与参数:
-l :仅列出行;
-m :多少字符;
ge:那个 /etc/man_db.conf 里面到底有多少相关字、行、字符数?
3)双向重导向: tee
选项与参数:
-a :以累加 (append) 的方式,将数据加入 file 当中
ge:这个范例可以让我们将 last 的输出存一份到 last.list 文件中;
4)字符转换指令:tr, col, join, paste, expand
tr 可以用来删除一段讯息当中的文字,或者是进行文字讯息的替换。
选项与参数:
-s :取代掉重复的字符!
eg1:将 last 输出的讯息中,所有的小写变成大写字符:
eg2 :将 /etc/passwd 输出的讯息中,将冒号 (:) 删除
选项与参数:
在处理两个文件之间的数据, 而且, 主要是在处理“两个文件当中,有 “相同数据” 的那一行,才将他加在一起”的意思。
选项与参数:
-t :join 默认以空白字符分隔数据,并且比对“第一个字段”的数据, 如果两个文件相同,则将两笔数据联成一行,且第一个字段放在第一个!
-i :忽略大小写的差异;
-1 :这个是数字的 1 ,代表“第一个文件要用那个字段来分析”的意思;
paste [-d] file1 file2
选项与参数:
-d :后面可以接分隔字符。默认是以 [tab] 来分隔的!
– :如果 file 部分写成 – ,表示来自 standard input 的数据的意思。
选项与参数:
-t :后面可以接数字。一般来说,一个 tab 按键可以用 8 个空白键取代。 我们也可以自行定义一个 [tab] 按键代表多少个字符呢!
5)分区命令: split
如果你有文件太大,导致一些携带式设备无法复制的问题。split可以帮 你将一个大文件,依据文件大小或行数来分区,就可以将大文件分区成为小文件了。
split [-bl] file PREFIX
选项与参数:
-b :后面可接欲分区成的文件大小,可加单位,例如 b, k, m 等;
PREFIX :代表前置字符的意思,可作为分区文件的前导文字。
eg1:我的 /etc/services 有六百多K,若想要分成 300K 一个文件
6)参数代换指令:xargs在产生某个指令的参数的
选项与参数:
-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进行投诉反馈,一经查实,立即删除!