[TOC]
Bash Shell介绍
什么是Bash Shell
Bash Shell是一个命令解释器,它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,讲用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕。
当我们使用远程连接工具连接linux服务,系统则会打开一个默认的shell,我们可以在这个界面执行命令,比如:获取系统当前时间,创建一个用户等等…

bash shell的作用
使用Shell实现对Linux系统的大部分管理,例如:
- 文件管理
- 权限管理
- 用户管理
- 磁盘管理
- 网络管理
- 软件管理
- 应用管理
 …等等管理
bash shell的执行方式
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | useradd xxx(创建一个新用户)
 
 sh useradd.sh(使用脚本创建多个新用户)
 
 
 
 for n in `seq 100`;do
 useradd oldboy$n && \
 echo "用户 oldboy$n 已创建成功"
 done
 
 | 
bash基本结构
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 
 | 命令	  选项		参数
 command	[-options]	[arguments]
 
 
 
 
 
 
 
 
 
 
 PS:
 
 
 
 例:
 
 ls
 
 ls -a
 
 ls -a /etc
 
 | 
bash shell的特性
补全
| 12
 3
 4
 
 | 
 
 yum install -y bash-completion
 
 | 
命令快捷键
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | Ctrl + a    Ctrl + e
 Ctrl + w
 Ctrl + c
 Ctrl + d
 Ctrl + z
 Ctrl + l
 Ctrl + k
 Ctrl + u
 Ctrl + r
 Ctrl + s
 Ctrl + q
 Ctrl + 左右
 ESC  + .
 
 | 
shell命令提示符
命令提示符的结构
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | [root@xxx ~]
 []:无实际意义
 root:当前登录的用户
 @:分隔符 没有任何作用
 xxx:当前的主机名称
 ~:代表家目录
 - root的家目录:/root
 - xxxx的家目录:/home/xxx
 
 $ 代表普通用户
 
 | 
查看当前命令提示符
| 12
 3
 4
 5
 
 | [root@xxx ~][\u@\h \W]\$
 
 echo:打印内容
 $PS1:命令提示符
 
 | 
PS1的常用参数以及含义
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 
 | \d :代表日期,格式为weekday month date,例如:"Mon Aug 1"\H :完整的主机名称
 \h :仅取主机名中的第一个名字
 \t :显示时间为24小时格式,如:HH:MM:SS
 \T :显示时间为12小时格式
 \A :显示时间为24小时格式:HH:MM
 \u :当前用户的账号名称
 \v :BASH的版本信息
 \w :完整的工作目录名称
 \W :利用basename取得工作目录名称,只显示最后一个目录名
 \
 \$ :提示字符,如果是root用户,提示符为
 
 
 30  40 黑色
 31  41 红色
 32  42 绿色
 33  43 黄色
 34  44 蓝色
 35  45 紫红色
 36  46 青蓝色
 37  47 白色
 {1}
 
 | 
修改命令提示符
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | vi .bashrc:打开命令提示符文件i:进入编辑模式(进入成功后下方会提示INSERT)
 
 在fi的下面插入要修改的命令提示符
 PS1='[\u@\h \W]\$'
 
 
 PS1='\[\e[32;40m\] \[[\u@\h \w \t]\$ \[\e[0m\]'
 PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
 {1}
 PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\[\e[35;40m\]\h\[\e[0m\] \[\e[36;40m\]\w\[\e[0m\]]\\$ "
 
 ESC退出编辑模式
 :wq保存并退出(:w仅保存 :q!不保存退出)
 source .bashrc:(source:重载文件 使文件中的内容立即生效  .bashrc:被执行的文件)
 
 | 
命令
| 12
 3
 4
 5
 6
 7
 8
 
 | source:重载文件,作用是使文件中的内容得以立即生效PS1:命令提示符的变量,PS1中存的是变量的内容
 变量:程序运行过程中实时改变的量
 echo:打印内容
 更改系统时间:date -s "2022-10-28 23:47:21"
 cd:切换目录(Linux中一切从根开始)
 :wq:保存并退出(:w仅保存 :q!不保存退出)
 source .bashrc:(source:重载文件 使文件中的内容立即生效  .bashrc:被执行的文件)
 
 | 
查看历史命令
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | `追溯之前的发生情况,在企业中,十分重要,涉及到运维的责任,记录历史命令对于运维人员来说,也有一个专业名词:审计
 
 
 -w
 -c
 -d
 !!
 !命令
 !数字
 
 
 历史命令会进行修改的
 
 | 
alias别名
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 
 | `别名讲用户经常使用的复杂命令简单化,创建出属于自己的命令别名。`
 
 
 创建语法:alias 别名="命令"
 取消语法:unalias 别名
 
 例:
 
 [root@db04 ~]
 [root@db04 ~]
 total 28
 dr-xr-x---.  2 root root  135 Oct 31 11:56 .
 dr-xr-xr-x. 17 root root  224 Oct 28 12:35 ..
 -rw-------.  1 root root 1530 Oct 24 15:06 anaconda-ks.cfg
 -rw-------.  1 root root  553 Oct 29 17:58 .bash_history
 -rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
 -rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
 -rw-r--r--.  1 root root  280 Oct 29 11:33 .bashrc
 -rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
 -rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
 
 
 [root@db04 ~]
 alias cp='cp -i'
 alias egrep='egrep --color=auto'
 alias fgrep='fgrep --color=auto'
 alias grep='grep --color=auto'
 alias l.='ls -d .* --color=auto'
 alias la='ls -al'
 alias ll='ls -l --color=auto'
 alias ls='ls --color=auto'
 alias mv='mv -i'
 alias rm='rm -i'
 alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
 
 
 [root@db04 ~]
 [root@db04 ~]
 -bash: la: command not found
 
 
 [root@db04 ~]
 
 
 
 | 
ls命令
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | 
 
 ls 选项
 
 
 -a
 -l
 -h
 -d
 -t
 -i
 -r
 
 | 
获取命令帮助
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | man+命令命令+--help
 
 
 例1:
 [root@db04 ~]
 
 例2:
 [root@db04 ~]
 
 
 
 http://linux.51yip.com/
 http://man.linuxde.net/
 
 |