鸟哥的Linux私房菜读书笔记--bash shell的操作环境
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了鸟哥的Linux私房菜读书笔记--bash shell的操作环境,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7319字,纯文字阅读大概需要11分钟。
内容图文
![鸟哥的Linux私房菜读书笔记--bash shell的操作环境](/upload/InfoBanner/zyjiaocheng/982/c992f00951664f8aabaef919666feedd.jpg)
1、路径与指令搜寻顺序
<1> 以相对/绝对路径执行指令,例如『 /bin/ls 』或『 ./ls 』;
<2> 由 alias 找到该指令来执行;
<3>由 bash 内建的 (builtin) 指令来执行;
<4>透过 $PATH 这个变量的顺序搜寻到的第一个指令来执行。
通过命令:$ type -a 指令 可以查看指令的执行顺序
2、bash的进站与欢迎信息
[dmtsai@study ~]$ cat /etc/issue
\S
Kernel \r on an \m ##欢迎信息
issue 内的各代码意义:
\d 本地端时间的日期;
\l 显示第几个终端机接口;
\m 显示硬件的等级 (i386/i486/i586/i686...);
\n 显示主机的网络名称;
\O 显示 domain name;
\r 操作系统的版本 (相当于 uname -r)
\t 显示本地端时间的时间;
\S 操作系统的名称;
\v 操作系统的版本。
3、bash的环境配置文件
<1>login与non-login shell
login shell:取得bash是需要完整的登入流程。
non-login shell:取得bash接口的方法不需要重复登入。
login shell 读取的配置文件:/etc/profile :系统整体设定的文件,建议不要去修改
~/.bash_profile或~/.bash_login或~/.profile属于个人设定,当需要修改自己的数据时就在此修改
<2>/etc/profile(login shell 才会读)
该文件利用使用者的标识符来决定 很多重要的变量数据,每个使用者登入取得的bash时一定会读取的配置文件,如果需要使所有使用者设定整体的环境,可以通过更改这个文件来进行修改。
该文件主要的变量有:
· PATH:会依据 UID 决定 PATH 变量要不要含有 sbin 的系统指令目录;
· MAIL:依据账号设定好使用者的 mailbox 到 /var/spool/mail/账号名;
· USER:根据用户的账号设定此一变量内容;
· HOSTNAME:依据主机的 hostname 指令决定此一变量内容;
· HISTSIZE:历史命令记录笔数。CentOS 7.x 设定为 1000 ;
· umask:包括 root 默认为 022 而一般用户为 002 等!
该文件不仅可以进行如上的操作,其还可以呼叫一些外部设定数据,例如:
/etc/locale.conf:决定bash预设使用何种语系
/usr/share/bash-comppletion/completions/* : 命令 、档名、选项、参数等补齐功能的配置文件,实质是 由/etc/profile.d/bash.completion.sh
<3>~/.bash_profile(login shell 才读)
读取使用者的个人配置文件,读取的个人偏好配置文件主要有三个,依次分别是~/.bash_profile、~/.bash_login、~/.profile。bash的login shell只会读取其中之一,读取顺序按照以上顺序读取。
<4>source :读入环境配置文件的指令
由于 /etc/profile 与 ~/.bash_profile 都是在取得 login shell 的时候才会读取的配置文件,所以, 如果你将自己的偏好设定写入上述的文件后,通常都是得注销再登入后,该设定才会生效。但是可以通过source命令使得在不重新注销登入的情况下直接读取配置文件:命令:$ source 配置文件档名
<5>~/.bashrc(non-login shell 会读)
当取得non-login shell时,该bash配置文件仅会读取~/.bashrc。对于root和一般用户查看该配置文件时可能获取的内容不同。在root中已经规范了命令别名,但是centos依然会主动呼叫/etc/bashrc这个文件,该文件可以帮助bash定义出一下数据:
· 依据不同的 UID 规范出 umask 的值;
· 依据不同的 UID 规范出提示字符 (就是 PS1 变量);
· 呼叫 /etc/profile.d/*.sh 的设定
<5>其他配置文件
/etc/man_db.conf:规范使用man的时候,man page 的寻找路径
~/.bash_history:历史记录保存位置
~/.bash_logout:该文件记录在注销bash后,系统需要帮我做完什么动作后再离开。
4、终端机的环境设定
查看目前设定的按键内容:
命令:$ stty -a ##将目前所有的stty参数列出
列出内容代表意义:
· ^ 表示 [Ctrl]
· intr : 送出一个 interrupt (中断) 的讯号给目前正在 run 的程序 (就是终止啰!);
· quit : 送出一个 quit 的讯号给目前正在 run 的程序;
· erase : 向后删除字符,
· kill : 删除在目前指令列上的所有文字;
· eof : End of file 的意思,代表『结束输入』。
· start : 在某个程序停止后,重新启动他的 output
· stop : 停止目前屏幕的输出;
· susp : 送出一个 terminal stop 的讯号给正在 run 的程序。
更改键盘设定:命令:$ stty 需要更改按键的内容 新设定的按键
例:在windows系统中,习惯按键ctrl+s来进行保存,但是在linux系统中按ctrl+s(stop)是锁死画面的意思(ctrl+q恢复start模式),所以我们可以通过更改按键来达到目的。$ stty stop ^r 即按下Ctrl+s时将 不会锁死画面(stop)
除stty之外,也可以通过bash来设定一些终端设定值。
[dmtsai@study ~]$ set [-uvCHhmBx]
选项与参数:
-u :预设不启用。若启用后,当使用未设定变量时,会显示错误讯息;
-v :预设不启用。若启用后,在讯息被输出前,会先显示讯息的原始内容;
-x :预设不启用。若启用后,在指令被执行前,会显示指令内容(前面有 ++ 符号)
-h :预设启用。与历史命令有关;
-H :预设启用。与历史命令有关;
-m :预设启用。与工作管理有关;
-B :预设启用。与刮号 [] 的作用有关;
-C :预设不启用。若使用 > 等,则若文件存在时,该文件不会被覆盖。
范例一:显示目前所有的 set 设定值
[dmtsai@study ~]$ echo $-
himBH
# 那个 $- 变量内容就是 set 的所有设定啦! bash 预设是 himBH 喔!
范例二:设定 "若使用未定义变量时,则显示错误讯息"
[dmtsai@study ~]$ set -u
[dmtsai@study ~]$ echo $vbirding
-bash: vbirding: unbound variable
# 预设情况下,未设定/未宣告 的变量都会是『空的』,不过,若设定 -u 参数,
# 那么当使用未设定的变量时,就会有问题啦!很多的 shell 都预设启用 -u 参数。
# 若要取消这个参数,输入 set +u 即可!
范例三:执行前,显示该指令内容。
[dmtsai@study ~]$ set -x
++ printf '\033]0;%s@%s:%s\007' dmtsai study '~' # 这个是在列出提示字符的句柄!
[dmtsai@study ~]$ echo ${HOME}
+ echo /home/dmtsai
/home/dmtsai
++ printf '\033]0;%s@%s:%s\007' dmtsai study '~'
# 看见否?要输出的指令都会先被打印到屏幕上喔!前面会多出 + 的符号!
bash 默认的组合键:
组合按键 | 执行结果 |
---|---|
Ctrl + C | 终止目前的命令 |
Ctrl + D | 输入结束 (EOF),例如邮件结束的时候 |
Ctrl + M | 就是 Enter |
Ctrl + S | 暂停屏幕的输出 |
Ctrl + Q | 恢复屏幕的输出 |
ctrl + U | 在提示字符下将整行命令删除 |
ctrl + Z |
暂停目前的 命令 |
5、通配符与特殊符号
通配符:
符号 | 意义 |
---|---|
* | 代表『 0 个到无穷多个』任意字符 |
? | 代表『一定有一个』任意字符 |
[ ] | 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可是 a, b, c, d 这四个任何一个』 |
[ - ] | 若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的! |
[^ ] | 若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。 |
特殊符号:
符号 | 内容 |
---|---|
# | 批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不执行 |
\ | 跳脱符号:将『特殊字符或通配符』还原成一般字符 |
| | 管线 (pipe):分隔两个管线命令的界定; |
; | 连续指令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同) |
~ | 用户的家目录 |
$ | 取用变数前导符:亦即是变量之前需要加的变量取代值 |
& | 工作控制 (job control):将指令变成背景下工作 |
! | 逻辑运算意义上的『非』 not 的意思! |
/ | 目录符号:路径分隔的符号 |
>, >> | 数据流重导向:输出导向,分别是『取代』与『累加』 |
<, << | 数据流重导向:输入导向 |
' ' | 单引号,不具有变量置换的功能 ($ 变为纯文本) |
" " | 具有变量置换的功能! ($ 可保留相关功能) |
` ` | 两个『 ` 』中间为可以先执行的指令,亦可使用 $( ) |
( ) | 在中间为子 shell 的起始与结束 |
{ } | 在中间为命令区块的组合! |
内容总结
以上是互联网集市为您收集整理的鸟哥的Linux私房菜读书笔记--bash shell的操作环境全部内容,希望文章能够帮你解决鸟哥的Linux私房菜读书笔记--bash shell的操作环境所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。