[TOC]

Bash Shell介绍

什么是Bash Shell

Bash Shell是一个命令解释器,它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,讲用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕。

当我们使用远程连接工具连接linux服务,系统则会打开一个默认的shell,我们可以在这个界面执行命令,比如:获取系统当前时间,创建一个用户等等…

image-20230328205330954

bash shell的作用

使用Shell实现对Linux系统的大部分管理,例如:

  1. 文件管理
  2. 权限管理
  3. 用户管理
  4. 磁盘管理
  5. 网络管理
  6. 软件管理
  7. 应用管理
    …等等管理

bash shell的执行方式

1
2
3
4
5
6
7
8
9
10
11
# 输入命令方式 ===> 效率低 ===>适合少量工作
useradd xxx(创建一个新用户)
# shell script ===> 效率高 ===>适合复杂的工作
sh useradd.sh(使用脚本创建多个新用户)

# 多用户创建脚本

for n in `seq 100`;do
useradd oldboy$n && \
echo "用户 oldboy$n 已创建成功"
done

bash基本结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# bash命令的结构
命令 选项 参数
command [-options] [arguments]

# 命令:整条shell命令的主体

# 选项:用于调节命令的具体功能
#短格式,以'-'引导单个字符,例如'-a'
#长格式,以'--'引导多个字符,例如'--all'
#多个短格式可以写在一起,只用一个'-'引导,例如'-la'

# 参数:命令与选项的对象,如文件、目录名等

PS:
# 两两之间至少要有一个空格
# 命令必须开头,选项和参数位置可以发生变化

例:
# 仅命令(无选项无参数)
ls
# 有命令 有选项 无参数
ls -a
# 有命令 有选项 有参数
ls -a /etc

bash shell的特性

补全

1
2
3
4
# 使用tab键可以对bash`命令`或`参数`进行补全

# 无法补全时需安装:
yum install -y bash-completion

命令快捷键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Ctrl + a    #光标跳转至正在输入的命令行的首部
Ctrl + e #光标跳转至正在输入的命令行的尾部
Ctrl + w #按照空格来删除bash内容
Ctrl + c #终止前台运行的程序
Ctrl + d #在shell中,ctrl-d表示退出当前shell。(logout、exit)
Ctrl + z #将任务暂停,挂至后台
Ctrl + l #清屏,和clear命令等效。
Ctrl + k #删除从光标到行末的所有字符
Ctrl + u #删除从光标到行首的所有字符
Ctrl + r #搜索历史命令, 利用关键字
Ctrl + s #锁屏
Ctrl + q #解锁
Ctrl + 左右 #按照单词快速跳转光标(Xshell提供的)
ESC + . #获取最后的指令

shell命令提示符

命令提示符的结构

1
2
3
4
5
6
7
8
9
10
11
[root@xxx ~]#

[]:无实际意义
root:当前登录的用户
@:分隔符 没有任何作用
xxx:当前的主机名称
~:代表家目录
- root的家目录:/root
- xxxx的家目录:/home/xxx
# 代表超级管理员
$ 代表普通用户

查看当前命令提示符

1
2
3
4
5
[root@xxx ~]# echo $PS1
[\u@\h \W]\$

echo:打印内容
$PS1:命令提示符

PS1的常用参数以及含义

1
2
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}

修改命令提示符

1
2
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:被执行的文件)

命令

1
2
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:被执行的文件)

查看历史命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# 历史命令的作用:
`追溯之前的发生情况,在企业中,十分重要,涉及到运维的责任,记录历史命令对于运维人员来说,也有一个专业名词:审计

# 选项:
-w # 保存命令历史到文件 write
-c # 清空命令历史记录,不会清空文件 clear
-d # 删除命令历史的第N行 delete
!! # 执行上一条命令
!命令 # 执行上一条'输入命令'相关命令
!数字 # 执行历史命令中的第'输入数字'条命令

# PS:
历史命令会进行修改的

alias别名

1
2
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的作用:
`别名讲用户经常使用的复杂命令简单化,创建出属于自己的命令别名。`

# 基本语法:
创建语法:alias 别名="命令"
取消语法:unalias 别名

例:
#定义临时别名,查看当前目录下所有文件,包括隐藏文件,只对当前shell生效
[root@db04 ~]# alias la="ls -la"
[root@db04 ~]# la
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
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 ~]# unalias la
[root@db04 ~]# la
-bash: la: command not found

#永久生效
[root@db04 ~]# vim .bashrc
# alias la='ls -al'
# source .bashrc

ls命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# ls命令用来显示目标列表

# 语法结构
ls 选项

# 选项
-a # 查看目录下的所有文件,包括隐藏文件
-l # 以长格式的方式显示文件的详细内容
-h # 以人性化的方式显示内容,配合-l使用
-d # 只列出目录名,不列出目录以下的内容
-t # 按修改时间进行排序
-i # 显示文件的inode(该文件在该分区的一个编号)
-r # 倒叙

获取命令帮助

1
2
3
4
5
6
7
8
9
10
11
12
13
14
man+命令
命令+--help

# 获取ls命令的帮助
例1:
[root@db04 ~]# ls --help

例2:
[root@db04 ~]# man ls

# PS:
## 查看Linux命令的站点:
http://linux.51yip.com/
http://man.linuxde.net/