掘金 后端 ( ) • 2021-11-30 22:11

theme: v-green

这是我参与11月更文挑战的第30天,活动详情查看:2021最后一次更文挑战

bash shell是什么

bash shell就相当于一个应用程序,我们输入命令给bash shell,bash shell翻译成二进制后将命令传输给linux系统,系统调用内核,内核操作硬盘,执行操作。

bash shell就是让我们可以和计算机进行交互,将人类执行翻译成计算机能够理解的二进制指令,操作硬盘。

bash shell的作用

各种管理的增删改查

文件管理

对于文件的增删改查

# 创建文件
touch xx.txt

# 修改文件
vim 文件
echo xxx > 文件

# 查看文件
cat less head grep awk

权限管理

用户管理

磁盘管理

软件管理

网络管理

...

bash shell使用的两种方式

  • 命令行
  • shell脚本语言

shell提示符

[root@zhuang ~]# 

root:当前登录的用户
@:没有任何意义,就是分隔符
zhuang:默认现实主机名中以点为分隔符中的第一部分
~:当前所在路径,默认只显示当前路径的最后一个文件夹名称,~表示root用户家目录

# :表示超级用户的命令提示符
$ :表示普通用户的命令提示符

shell提示符修改

在bash shell中命令中$表示变量,需要和提示符中的进行区分

# 查看命默认的令提示符
echo $PS1
[\u@\h \W]\$

# 修改命令提示符:
vim /root/.bashrc
# 添加内容

\u:当前登录的用户
\h:当前主机名,如果主机名中有点,则以点为分隔符显示第一部分
\H:完整主机名
\W:当前路径的最后一个目录
\w:当前路径的完整目录,绝对路径
\d:现实当前日期
\t:24h格式显示时分秒
\T:12h格式显示时分秒
\A :显示时间为24小时格式:HH:MM
\v:bash版本信息
\#:显示当前下达的命令个数
\$:当前用户的命令提示符,如果是超级用户就显示# 普通用户就显示$

bash shell基本语法

# 基本语法,命令 选项 参数,选项和参数都可以有多个
command option arguments 

# 举例
ls
ls -a
ls -l -a /usr/local/
ls -la /usr/local/ /tmp/

bash shell基本特性

命令补全-tab键

可以补全命令

可以补全路径

命令的选项如果想要补全需要安装包,一般不需要

yum install -y bash-completion

命令的选项

选项有长格式和长格式两种

ls -a  # 默认使用短格式
ls --all

命令快捷键

ctrl+a:将光标跳转到当前命令的行首
ctrl+e:将光标跳转到当前命令的行尾
ctrl+w:按照空格删除光标之前的内容
ctrl+c:终止当前命令
ctrl+l:清屏
ctrl+r:查找执行的最近的一条包含输入字母的命令
ctrl+d:退出当前bash,只退出一个,类似于退出当前登录的用户,开多个bash类似于开多个bash进程
ctrl+z:把进程放在后台运行
ctrl+k:删除从光标开始到行尾的所有内容
ctrl+u:删除从光标开始到行首的所有内容
ctrl+左右键:快速移动光标
esc+.:快速获取上一条命令最后一个空格之后的内容
!+字母:找到历史记录中时间最近的带指定字母的命令执行
!!:执行上一条命令
!+数字:执行历史记录中指定数字编号的历史命令

# 不常用
ctrl+s:锁屏
ctrl+q:解锁后会将把锁屏期间输入的所有内容输出

history-历史命令

历史命令主要用于审计

# 删除历史命令
history -c

# 指定删除某一条历史记录
histoty -d 4  # 删除第四条历史记录

# 保存历史记录到/root/.bash_history
history -w

# 修改历史记录的显示
vim /etc/profile

# shift + g到最后一行
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F | %T | 用户IP: $USER_IP | 操作用户: `whoami` |操作命令: "
shopt -s histappend
export PROMPT_COMMAND="history -a"

# 生效
source /etc/profile

命令别名alias

把复杂的命令简化,但是如果使用命令的绝对路径就不使用别名了比如/bin/cp

alias wk='vim /etc/systemconfig/network-scripts/ifcfg-etho'

# 用法,临时设置
alias # 查看当前系统有哪些别名
alias grep="grep --color=auto"  # 创建别名,如果名字已经存在就是修改,不存在就是创建别名
unalias wk  # 删除别名

# root用户下永久生效
vim /root/.bashrc

alias wk='vim /etc/systemconfig/network-scripts/ifcfg-etho'

source /root/.bashrc

命令获取帮助

命令 --help
或者
man 命令

结语

文章首发于微信公众号程序媛小庄,同步于掘金

码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)