启动操作系统后,linux系统会默认提供5个操作终端(multics=》unix=》。。。=》linux),可以用Ctrl + Alt + Fn(n=1,2,3,4,5...)
快捷键切换,我们进入任意终端后输入账号密码登录用户后,就会执行该用户在/etc/passwd文件中指定的解释器程序,然后进入解释器的交互式环境
| [root@localhost ~] |
| root:x:0:0:root:/root:/bin/bash |
何为交互式环境???
| 1、我们为解释器输入指令,解释器解释执行(调用操作系统接口执行)然后后给我们返回结果,这就叫交互 |
| |
| 2、进入解释器交互式环境后普通用户的提示符是$,管理用户是 |
| |
| 3、shell命令的基本格式/语法格式:命令 选项 参数 |
| ==> alias |
| ==> Compound Commands |
| ==> function |
| ==> build_in |
| ==> hash |
| ==> $PATH |
| ==> error: command not found |
| |
| |
| 可以用alias查看 |
| 可以用命令来制作:alias 别名="命令 选项 参数" |
| |
| |
| 复合命令指的是能够将一组命令封装到一个代码块里的命令,例如if、for、while等 |
| |
| |
| |
| |
| 可以用type查看,或者用man builtin |
| [root@egon ~] |
| cd 是 shell 内嵌 |
| |
| |
| 当别名和内部命令都搜到不到命令时,会检索$PATH中的路径 |
| [root@egon ~] |
| /usr/local/sbin |
| /usr/local/bin |
| /usr/sbin |
| /usr/bin |
| /root/bin |
| |
| 但是$PATH中包含的路径太多了,而且每个路径中的可执行文件也很多 |
| 如果每次都要搜索每个路径下的所有可执行文件,显然是不明智的 |
| 为了减少$PATH的搜索,上一次搜索的内容能够被下一次执行重用 |
| bash对从$PATH中搜索得出的外部命令建立一个hash表,用于缓存 |
| 这个缓存是会话级别独立拥有的.不可以对其他终端共享,因为每个用户的$PATH可能不同 |
| [root@egon ~] |
| egon.xxx.com |
| [root@egon ~] |
| 命中 命令 |
| 2 /usr/bin/hostname |
| 1 /usr/bin/sed |
| 2 /usr/bin/man |
| 1 /usr/bin/ls |
| [root@egon ~] |
| [root@egon ~] |
| hash: 哈希表为空 |
| |
| |
| 略 |
| |
| ==========================优先级验证====================== |
| ===========alias > Compound Commands > function========= |
| |
| [root@egon ~] |
| [root@egon ~] |
| > echo "123" |
| > } |
| |
| |
| [root@egon ~] |
| 总用量 12 |
| -rw-r--r-x. 1 root root 44 8月 13 19:36 1.sh |
| -rw-r--r-x. 1 root root 44 8月 13 19:36 2.sh |
| -rw-r--r-x. 1 root root 44 8月 13 19:37 3.sh |
| |
| |
| [root@egon ~] |
| [root@egon ~] |
| > |
| |
| ===========function > buitin========= |
| |
| [root@egon ~] |
| > echo "自定义函数cd" |
| > } |
| [root@egon ~] |
| [root@egon ~] |
| cd 是函数 |
| cd () |
| { |
| echo "自定义函数cd" |
| } |
| |
| [root@egon ~] |
| 自定义函数cd |
| |
| ===========buitin > hash > $PATH========= |
| |
| [root@egon ~] |
| [root@egon ~] |
| cd 是 shell 内嵌 |
| [root@egon ~] |
| |
| echo "这是PATH内的一个cd脚本" |
| [root@egon ~] |
| [root@egon ~] |
| |
| [root@egon ~] |
| [root@egon ~] |
| 这是PATH内的一个cd脚本 |
| [root@egon ~] |
| |
| |
| |
| |
| [root@egon ~] |
| [root@egon ~] |
| egon.xxx.com |
| [root@egon ~] |
| 命中 命令 |
| 1 /usr/bin/hostname |
| [root@egon ~] |
| egon.xxx.com |
| [root@egon ~] |
| 命中 命令 |
| 2 /usr/bin/hostname |