2023.5.25 Linux系统Bash初识
1.Linux系统终端概述
2.Linux系统Bash管理
2.1.Bash特性:命令补全
2.2.Bash特性:命令快捷键
2.3.Bash特性:命令别名
2.4.Bash特性:命令流程
2.5.Bash特性:路径展开
2.6.Bash特性:转义字符
2.7.Bash特性:获取帮助
vx: WingspanGo
1.Linux系统终端概述
服务器终端切换: Ctrl + Alt + F1 … F6
虚拟机终端切换: Ctrl +Shift +Alt +F1 … F6
虚拟终端由 mingetty 程序⽣成
2.Linux系统Bash管理

//物理机执⾏为本地终端
[root@wing ~]# tty
/dev/tty1
//通过⽹络使⽤模拟终端远程连接Linux, ⽇常运维中就是这种⽅式。
[root@wing ~]# tty
/dev/pts/1s
vx: WingspanGo
vx: WingspanGo
简单的说, Shell是系统的⽤户界⾯,提供了⽤户与内核进⾏交互操作的⼀种接⼝。它接收⽤户输⼊的命令并把它送
⼊内核去执⾏。

实际上Shell是⼀个命令解释器,它解释由⽤户输⼊的命令并且把它们送到内核。
Linux, Shell也有多种不同的版本。主要有下列版本的Shell:
BASH Shell: 是⼀个为GNU计划编写的Unix shell, 是许多Linux发⾏版的默认Shell
C Shell: 是SUN公司Shell的BSD版本。
Z Shell: 它集成了bash、ksh的重要特性,同时⼜增加了⾃⼰独有的特性。
还有许多传统UNIX上⽤的Shell,例如tcsh、csh、ash、bsh、ksh等, Shell Script⼤致都类同,当您学会⼀种
Shell以后,其它的Shell很快就上⼿, ⼤多数的时候, ⼀个Shell脚本 通常可以在很多种Shell上使⽤。
查看当前使⽤的 shell
查看 Linux 可⽤的 shell
[root@wing ~]# echo $SHELL
/bin/bash
vx: WingspanGo
vx: WingspanGo
Bash Shell 提示符
Shell 语法
命令⾏ bash shell , 为⽤户提供输⼊, 执⾏命令的界⾯
我们可以使⽤SHELL实现对Linux的⼤部分管理
[root@wing ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/bin/zsh
[root@wing ~]# echo $PS1
[\u@\h \W]\$
[root@wing ~]# date
Sat Jan 20 09:45:40 EST 2018
[root@wing ~]# whoami
//等待⽤户输⼊,执⾏命令, $ = 普通⽤户, # = root⽤户(超级管理员)
[student@desktop0 ~]$
//bash Shell 执⾏命令
//命令 选项 参数
command [-options] [arguments]
[root@wing ~]# ls #命令
[root@wing ~]# ls -a #命令+选项
[root@wing ~]# ls -a /tmp/ #命令+选项+参数
命令: 命令的主体
⼀个命令有多个选项, 多个选项可以合并在⼀起
选项: ⽤于调节命令的具体功能
以 “-”引导短格式选项(单个字符),例如“-l”
以“--”引导⻓格式选项(多个字符),例如“--color”
多个短格式选项可以写在⼀起,只⽤⼀个“-”引导,例如“-al”
参数: 命令操作的对象,如⽂件、⽬录名等
# 命令必须开头, 选项和参数位置可以发⽣变化
vx: WingspanGo
vx: WingspanGo
1.⽂件管理
2.权限管理
3.⽤户管理
4.磁盘管理
5.⽹络管理
6.软件管理
...
使⽤Shell的⽅式
输⼊命令 --> 效率低 -->适合少量的⼯作
Shell Script --> 效率⾼-->适合复杂重复性的⼯作
BASH所⽀持的功能
命令⾏编辑快捷键
内部命令与外部命令
命令补全与路径补全
命令别名与命令历史
转义字符与路径展开
通配符与特殊字符
重定向与管道技术
2.1.Bash特性:命令补全
通过上下⽅向键来调取过往执⾏过的Linux命令;
命令或参数仅需输⼊前⼏位就可以⽤Tab键补全;
tab 键可以实现命令补全, 路径补全和命令实现⽅式⼀致, ⼯作中我们经常⽤到 tab 补全, 减少执⾏命令以及路径出
错率。
1.命令补全
2.提示功能
3.减少出错
//查看ip时忘记具体了命令
[root@wing ~]# ifcon
//按下tab键会⾃动补全
[root@wing ~]# ifconfig
//按⼀下tab键没有反应, 按两下tab键列出所有if开头的命令
[root@wing ~]# if
if ifconfig ifenslave ifrename
ifcfg ifdown ifnames ifup
//linux路径较深, 经常使⽤tab键进⾏补全, 如果路径出错是没有办法补全
[root@wing ~]# ls /etc/sysconfig/network-scripts/
vx: WingspanGo
vx: WingspanGo
2.2.Bash特性:命令快捷键
终端快捷键的使⽤可以帮助我们⼤⼤提升效率
History 查看系统命令历史, 追溯之前发⽣情况
命令选项
-w 保存命令历史到历史⽂件
-c 清空命令历史记录, 不会情况⽂件
-d 删除命令历史的第 N 条⾏
history 命令历史相关快捷键
Ctrl + A //光标跳转⾄正在输⼊的命令⾏的⾸部
Ctrl + E //光标跳转⾄正在输⼊的命令⾏的尾部
Ctrl + C //终⽌前台运⾏的程序
Ctrl + D //在shell中,ctrl-d表示推出当前shell。
Ctrl + Z //将任务暂停,挂⾄后台
Ctrl + L //清屏,和clear命令等效。
Ctrl + K //删除从光标到⾏末的所有字符
Ctrl + U //删除从光标到⾏⾸的所有字符
Ctrl + R //搜索历史命令, 利⽤关键字
//在命令⾏前加⾯加 "#" 则该命令不会被执⾏
//使⽤双 !! 可执⾏上⼀条命令
[root@wing ~]# ls
Wing.com
[root@wing ~]# !!
ls
Wing.com
//输⼊!6, 执⾏history命令历史中第 6 ⾏命令
[root@wing ~]# !6
touch Wing.com
//使⽤!cat, 调⽤history命令历史最近⼀次执⾏过的cat命令
[root@wing ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@wing ~]# !cat
cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@wing ~]# ls /etc/passwd
//调⽤上⼀条命令的最后参数或选项, 按下ESC松开, 然后按下 "."
[root@wing ~]# cat
[root@wing ~]# cat /etc/passwd
//第⼆种⽅式, 输⼊!$
[root@wing ~]# ls !$
ls /etc/passwd
/etc/passwd
vx: WingspanGo
vx: WingspanGo
2.3.Bash特性:命令别名
命令别名将⽤户经常使⽤的复杂命令简单化, 可以⽤ "alias 别名名称=命令" 命令创建属于⾃⼰的命令别名, 若要取
消⼀个命令别名,则是⽤ unalias 别名名称 命令。
2.4.Bash特性:命令流程
当我们执⾏⼀个命令, 整个命令执⾏流程如下:
1.判断命令是否通过绝对路径执⾏
2.判断命令是否存在别名
3.判断⽤户输⼊的是内部命令还是外部命令
4.内部命令直接执⾏, 外部命令检测是否存在缓存
5.检测 PATH 路径, 有执⾏, ⽆报错
内部命令: shell程序⾃带的命令。
外部命令: 在系统PATH变量的某个路径下的可执⾏程序。
使⽤ type 命令检测⽤户输⼊的命令属于内部命令还是外部命令。
PATH 变量定义的路径, 作⽤是告诉 Bash 执⾏的外部命令存放的位置, Bash 会在这些路径中进⾏逐个扫描。
//1.定义临时别名, if1为查看eth0⽹卡别名
[root@wing ~]# alias if0='ifconfig eth0'
[root@wing ~]# if0
//如果定义命令本身, 会执⾏什么?
[root@wing ~]# alias ifconfig='ifconfig eth0'
//绝对路径执⾏, 调⽤命令本身
[root@wing ~]# /sbin/ifconfig
//通过\转义字符, 调⽤命令本身
[root@WebServer ~]# \ifconfig
//2.定义系统永久⽣效别名, 将命令别名添加⾄当前⽤户环境配置⽂件
[root@wing ~]# echo "alias ifconfig='ifconfig eth0'" >> ~/.bashrc
//如将别名命令添加⾄/etc/bashrc , 对所有⽤户⽣效
//3.取消临时别名
[root@wing ~]# unalias ifconfig
//cd命令属于shell内部命令
[root@linux-node1 ~]# type -a cd
cd is a shell builtin
cd is /usr/bin/cd
//ping属于外部命令, 同时会打印当前命令路径
[root@wing ~]# type -a ping
ping is /bin/ping
vx: WingspanGo
vx: WingspanGo
事实上执⾏过的外部命令都会保存在内存缓存中, 当再次执⾏相同的命令, 会通过缓存调取执⾏, 也就意味着不会搜
索 PATH 路径。
总结, 当我们执⾏了⼀个 ping 命令之后, 整个命令执⾏的流程步骤如下:
//echo所⻅即所得
[root@wing ~]# echo "123"
123
[root@wing ~]# echo -e "123 \n456"
123
456
//打印当前环境变量⽬录
[root@wing ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
//PATH由多个路径组成,每个路径值之间⽤冒号间隔,对这些路径的增加和删除操作都将影响到Bash解释器对Linux
命令的查找。
//修改PATH变量
[root@wing ~]# PATH=/soft/bin:$PATH
//写⼊/etc/profile配置⽂件永久⽣效
echo 'export PATH=/soft/bin:$PATH' >> /etc/profile
//表缓存命令所在位置
[root@wing ~]# hash
hits command
1 /usr/bin/tty
3 /sbin/ifconfig
//已缓存命令,如果移动位置会导致⽆法找到该命令
[root@wing ~]# mv /sbin/ifconfig /bin/
[root@wing ~]# ifconfig
-bash: /sbin/ifconfig: No such file or directory
//删除缓存过的ifconfig命令, 即可执⾏
[root@wing ~]# hash -d ifconfig
[root@wing ~]# ifconfig
//当然可以清空缓存表
[root@wing ~]# hash -r
//命令缓存hash需要注意如下情况:
1.如果执⾏外部命令1次就会对该命令进⾏缓存
2.如果将命令移动了位置
a.使⽤绝对路径执⾏
b.删除hash表的缓存指令
vx: WingspanGo
vx: WingspanGo
1.检查执⾏的是否是绝对路径执⾏
2.检查该ping命令是否存在别名
3.检查该ping命令是内部命令还是外部命令
4.如果是内部指令直接执⾏, 如果是外部命令
5.检测该命令是否有缓存,如果没有,查找PATH变量
6.检查PATH路径直到查找到该命令然后执⾏
7.如果没有找到该命令则返回错误。command not found
2.5.Bash特性:路径展开
Linux Shell 下路径展开⽤花括号包括, 逗号分隔, 这样花括号⾥的内容会被展开形成列表。
[root@wing ~]# mkdir /tmp/zz/a/b /tmp/yy/a/b -pv
mkdir: created directory `/tmp/zz'
mkdir: created directory `/tmp/zz/a'
mkdir: created directory `/tmp/zz/a/b'
mkdir: created directory `/tmp/yy'
mkdir: created directory `/tmp/yy/a'
mkdir: created directory `/tmp/yy/a/b'
//删除⽬录
[root@wing ~]# rm -rf /tmp/{zz,yy}
//通过路径展开⽅式创建⽬录
[root@wing ~]# mkdir /tmp/{zz,yy}/a/b -pv
mkdir: created directory `/tmp/zz'
mkdir: created directory `/tmp/zz/a'
mkdir: created directory `/tmp/zz/a/b'
mkdir: created directory `/tmp/yy'
mkdir: created directory `/tmp/yy/a'
mkdir: created directory `/tmp/yy/a/b'
思考:在/tmp 路径下创建以下⽬录
etc/init.d
etc/sysconfig
usr/lib
usr/bin
usr/include
var/spool
var/run
proc
sys
bin
vx: WingspanGo
vx: WingspanGo
2.6.Bash特性:转义字符
Shell解释器提供了⾮常丰富的转义字符, 来实现字符处理以及命令替换。
4类常⽤转义字符
反斜杠(\):使反斜杠后⾯的⼀个变量变为字符串。
单引号(''):转义其中所有的变量为单纯的字符串。
双引号(""):保留其中的变量属性,不进⾏转义处理。
反引号(``):把其中的命令执⾏后返回结果。
2.7.Bash特性:获取帮助
1.通过 man 命令获取帮助
//将特殊字符转换为正常字符
[root@wing ~]# echo "shoping is $500"
shoping is 00
[root@wing ~]# echo "shoping is \$500"
shoping is $500
//转义其中特殊字符为普通字符串
[root@wing ~]# echo 'shoping is $500'
shoping is $500
//使⽤$()实现命令替换
[root@wing ~]# echo "The Directory is $(pwd)"
The Directory is /root
//使⽤``实现命令替换
[root@wing ~]# echo "The Directory is `pwd`"
The Directory is /root
//转义其中所有的变量为单纯的字符串
[root@wing ~]# touch file-`date +%F-%H-%S`
[root@wing ~]# ls
file-2017-12-03-04-18
[root@wing ~]# touch 'file-`date +%F-%H-%S`'
[root@wing ~]# ls
file-2017-12-03-04-18 file-`date +%F-%H-%S`
vx: WingspanGo
vx: WingspanGo
2.通过 info 或 pinfo 获得帮助
⼿册的常⻅级别: 1(普通⽤户命令⼿册) , 5(配置⽂件⼿册), 8(管理员命令⼿册)
g : 回到⼿册的顶部
G : 去到⽂档的底部
/ : 输⼊要搜索的关键字,进⾏⽂档搜索
q: 退出⽂档
回⻋: 往下滚动⼀⾏
空格键: 往下翻⼀⻚
man -a passwd
man 5 passwd
man 1 passwd
man -k passw 找到所有的包含passwd关键字的⼿册并且列出来
⾸⻚寻找Textinfo⽂档,如果没有,强制打开对应的Man⽂档
与vi⻛格类似,快捷键:
空格:翻⻚
HOME: 返回⻚⾯顶部
END:返回⻚⾯底部
上箭头: 光标上移动⼀⾏
下箭头: 光标下移动以⾏
左箭头: 返回上⼀章节
右箭头: 浏览光标所在章节
d: 回到⼿册⾸⻚
q: 退出⼿册
强制打开指定级别的man⽂档
$ pinfo -m 5 passwd
2023.5.25 Linux系统Bash初识的更多相关文章
- Linux系统Bash的常用功能(9)
了解了基本的Linux文件文件系统的概念后,我们将更深入的了解一下Linux的其他方面的内容,那就是我们所使用的用户接口,也就是大家常听到的 『Shell』 ,『这个shell并不是黑客反弹的shel ...
- 2017.12.25 Linux系统的使用
Linux系统的使用 现在标配的系统是 Linux + Nginx + PHP + MySQL ,这样的配置越来越多的大公司在用的了说到配置不同的是一个公司的规约,比如说挂载一般分为2个盘, / 下面 ...
- Linux系统bash shell之历史命令
1.相关变量: HISTSIZE: 定义命令历史记录的条数 HISTFILE: 定义命令储存的文件,一般是 ~/.bash_history HISTFILESIZE: 定义了历史文件记录历史的条数 H ...
- Linux实战教学笔记06:Linux系统基础优化
第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...
- Linux系统入门-Bash初识
目录 Linux系统入门-Bash初识 Bash Shell介绍 Bash Shell的作用 Bash的两种使用方式 命令提示符 shell的基础语法 shell的基本特性 命令补全 linux快捷键 ...
- Linux编程 3 (初识bash shell与man查看手册)
一.初识bash shell 1.1 启动 shell GNU bash shell 能提供对Linux系统的交互式访问.通常是在用户登录终端时启动,登录时系统启动shell依赖于用户账户的配置. ...
- Linux系统编程(25)——终端
在Linux系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端.控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动 ...
- bash编程之 ~制作Mini Linux系统~
说明1:在一个Linux宿主机系统上,通过以上步骤,可以制作一个微小的Linux系统(可以放置在U盘中等),然后在其它的主机(虚拟机或者物理机)上运行,以实现最小化定制系统的目的. 说明2:上图中黑色 ...
- win10开启 linux Bash命令(win10内置了linux系统支持)
win10开启 Ubuntu linux Bash命令(win10内置了linux系统支持) 第一步: 先在设置→更新和安全→针对开发人员中选择"开发人员模式",点击后会下载&qu ...
- Linux 系统下安装 mysql5.7.25(glibc版)
前言:经过一天半的折腾,终于把 mysql 5.7.25 版本安装上了 Amazon Linux AMI release 2017.09 系统上,把能参考的博客几乎都看了一遍,终于发现这些细节问题,然 ...
随机推荐
- ngix安装与使用
主要是nginx的安装使用, 至于原理 1. 安装nginx(以及两个tomcat) 2. 使用nginx(测试负载均衡) 想要搭建的测试环境, 1.两个tomcat, 端口分别是80和8090(因为 ...
- 代码大全_V2(1,2章笔记)
译序 这本书讲什么 代码大全 原名叫 code complete,它是什么,又不是什么? 不是IDE中的代码自动补全功能 不是软件源代码 "大全" 是 "编码完成&quo ...
- requests发送post请求
post请求 语法结构 requests.post(url,data = None,json = None) 参数说明 url:需要爬取的网站的网址 data:请求数据 json:json格式的数据 ...
- Qt源码阅读(三) 对象树管理
对象树管理 个人经验总结,如有错误或遗漏,欢迎各位大佬指正 @ 目录 对象树管理 设置父对象的作用 设置父对象(setParent) 完整源码 片段分析 对象的删除 夹带私货时间 设置父对象的作用 众 ...
- 使用Kali复现永恒之蓝
使用Kali复现永恒之蓝 本次实验为离线靶机测试 实验步骤 确认测试环境:在开始测试之前,需要确认测试环境是否符合要求.我使用的是一台运行Kali的测试机和一台运行Windows 7 64位的靶机.确 ...
- 月光宝盒(vivo流量录制回放平台)正式对外开源
作者:vivo 互联网服务器团队- Liu Yanjiang 月光宝盒是一个基于流量录制回放的自动化测试平台,通过录制回放取代编写脚本进行自动化回归,提升测试效率和覆盖率.因为其解决方案具有很强的通用 ...
- python标准模块之subprocess
subprocess --- 子进程管理 源代码: Lib/subprocess.py 写在前面: 感觉也就这俩有用: subprocess.run() subprocess.Popen() w下 ...
- LLaMA:开放和高效的基础语言模型
LLaMA:开放和高效的基础语言模型 论文:https://arxiv.org/pdf/2302.13971.pdf 代码:https://github.com/facebookresearch/ll ...
- ES_ChatGPT问答
Q1:springboot项目,如何使用elasticsearch的api增删改查?查询中有哪些方式,如果模糊查询.排序查询.分页查询?分别阐述下这些查询方式的用法?最后举一个完整的例子 答: 在Sp ...
- 简单的cs修改器
目录 各个函数解析 main() GetPid() 无限子弹 无限血 无限金币 Patch() 无僵直 稳定射击 Depatch1 手枪连发 Depatch 源代码部分 各个函数解析 这是我根据b站上 ...