文章目录
bash介绍
Bash,[Unix shell](https://baike.baidu.com/item/Unix shell)的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。
Bash是[Bourne shell](https://baike.baidu.com/item/Bourne shell)的后继兼容版本与开放源代码版本,它的名称来自[Bourne shell](https://baike.baidu.com/item/Bourne shell)(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。
Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。和其他Unix shell 一样,它支持文件名替换(通配符匹配)、管道、here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。
bash介绍
[root@web01 ~]#
# root 表示当前登录系统的账号(可用whoami命令进行查询)
# @ 表示分隔符
# web01 表示主机名(可用hostname命令进行查询)
# ~ 表示当前所在位置(可用pwd命令进行查询,~表示家目录)
# # 表示账号权限(#:管理员权限;$:普通账号)
[root@web01 ~]# echo $PS1 #通过查看环境变量显示命令行提示符格式
[\u@\h \W]\$
超级管理员代表当前系统最高权限,其他用户权限由超级管理员指定,在Linux中一般root即代表超级管理员。
环境变量$PS1可通过编辑全局配置文件/etc/bashrc
或/etc/profile
设置和更改。
PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\]\w\[\e[0m\]]\\$" #给命令行提示符设置临时样式
PS1变量对应字典:
PS1变量 | 含义 |
---|---|
\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 | 显示当前用户所在目录的最后一级目录,其中家目录以~代替。 |
\# | 执行的第几个命令 |
\$ | 提示字符,如果是管理员账号提示符为#,普通用户提示符则是$。 |
在变量PS1中,设置字符颜色的格式为:[\e[F;Bm],其中”F”为字体颜色,编号为30-37,”B”为背景颜色,编号为40-47。颜色表如下:
F(前景) | B(背景) | 颜色说明 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 紫红色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
命令行快捷键:
快捷键 | 功能说明 |
---|---|
Tab | 命令或路径补全键* |
Ctrl+a | 光标回到命令行首* |
Ctrl+e | 光标回到命令行尾* |
Ctrl+f | 光标向右移动一个字符(相当于方向键右键) |
Ctrl+b | 光标向左移动一个字符(相当于方向键左键) |
Ctrl+Insert | 复制命令行内容* |
Shift+Insert | 粘贴命令行内容* |
Ctrl+k | 剪切(删除)光标处到行尾的字符* |
Ctrl+u | 剪切(删除)光标处到行首的字符* |
Ctrl+w | 剪切(删除)光标前的一个单词 |
Ctrl+y | 粘贴Ctrl+k、Ctrl+u、Ctrl+w删除的文本 |
Ctrl+c | 中断终端正在执行的任务或者删除整行命令* |
Ctrl+h | 删除光标所在位置的前一个字符(相当于退格键) |
Ctrl+d | 注销当前连接,在命令行有文本内容的时候为删除光标所在位置的字符。* |
Ctrl+r | 搜索命令行使用过的历史命令记录* |
Ctrl+g | 从执行Ctrl+r的搜索历史命令模式退出 |
ESC+. | 获取上一条命令的最后部分(空格分隔)* |
Ctrl+l | 清除屏幕所有内容,并在屏幕最上面开始新的一行,等同于clear命令* |
Ctrl+s | 锁定屏幕,使之无法显示输入内容,命令依然可以执行。 |
Ctrl+q | 解除Ctrl+s屏幕锁定 |
Ctrl+z | 暂停执行在终端运行的任务* |
!! | 执行上一条命令 |
!pw | 执行最近以pw开头的命令* |
!pw:p | 打印最近执行过的以pw开头的命令,但不执行。 |
!num | 执行第num条历史(命令:history)命令* |
!$ | 获取上一条命令的最后部分,相当于ESC+.。 |
date;sleep 40;date #显示当前时间;休眠40秒(其中 s 为秒、m 为 分钟、h 为小时、d 为日数,默认为秒);显示当前时间
bg #将命令隐藏到后台执行
jobs #查看后台执行的命令
命令行格式
命令 [参数选项] [文件或路劲]
中括号表示可有可无
查看帮助文档
普通命令是在系统中存在的文件,内置命令在系统中不存在文件,存在于bash解释器里。
which cp #查看命令所在目录
1)、man命令(普通命令)
查看帮助文档
man cp #查看cp命令的帮助文档
2)、help命令(内置命令)
查看简易版帮助文档
LANG="zh_CN.UTF-8" #设置临时系统字符集
help cd #查看cp命令的简易帮助文档,也可以用cp --help查看
内置命令包括:
alias, bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue, declare, dirs, disown, echo, enable, eval, exec, exit, export, false, fc, fg, getopts,hash, help, history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt, source, suspend, test, times, trap, true, type, typeset, ulimit,umask, unalias, unset, wait
3)、info命令(普通命令)
查看命令的详细介绍信息
info cp #查看cp命令的详细介绍信息
关机重启注销命令
1)、shutdown命令
shutdown是一个用来安全关闭或重启Linux系统的命令,系统在关闭之前会通知所有的登录用户,系统即将关闭,此时所有新登录的用户都不可以登录,与shutdown类似的命令还有halt、poweroff、reboot、init(关机:halt、poweroff;重启:reboot、init)。
ls -l `which shutdown` `which halt` `which poweroff` `which reboot`
lrwxrwxrwx. 1 root root 16 Mar 6 00:59 /usr/sbin/halt -> ../bin/systemctl
lrwxrwxrwx. 1 root root 16 Mar 6 00:59 /usr/sbin/poweroff -> ../bin/systemctl
lrwxrwxrwx. 1 root root 16 Mar 6 00:59 /usr/sbin/reboot -> ../bin/systemctl
lrwxrwxrwx. 1 root root 16 Mar 6 00:59 /usr/sbin/shutdown -> ../bin/systemctl
在C7中halt、poweroff、reboot这三个命令都对应的是同一个man帮助文档,而halt、poweroff、shutdown、reboot命令都是systemctl命令链接文件。
C7系统systemctl命令功能 | 功能 |
---|---|
systemctl reboot | 重启系统 |
systemctl poweroff | 关闭系统并切断电源 |
systemctl halt | 关闭系统CPU停止工作 |
systemctl suspend | 暂停系统 |
systemctl hibernate | 让系统进入冬眠状态 |
systemctl hybrid-sleep | 让系统进入交互式休眠状态 |
systemctl rescue | 启动进入救援状态(单用户状态) |
常用关机重启注销命令:
shutdown -r now #立刻重启
shutdown -r +1 #1分钟以后重启,1可以是别的数字或时间点。例如:11:00
shutdown -h now #立刻关机
shutdown -h +1 #1分钟以后关机,1可以是别的数字或时间点。例如:11:00
reboot #立刻重启
halt #立刻停止系统,需要人工关闭电源。(CPU断电)
init 0 #切换运行级别到0,0表示关机,因此此命令的作用就是关机。
init 6 #切换运行级别到6,0表示重启,因此此命令的作用就是重启。
poweroff #立刻停止系统,并且关闭电源。(设备断电)
logout #注销退出当前用户窗口
exit #注销退出当前用户窗口,快捷键Ctrl+d
Linux目录结构
一切从根(/)开始,呈现出以根为起点的树型结构。在Linux系统中一切皆文件(包括目录和文件)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XmkxEm5-1669972034173)(img/image-20200608213013224.png)]
生成序列号
{0…10}:表示生成1-10的序列,可生成数字序列、字母序列。
echo {1..10} #打印1-10的序列号
1 2 3 4 5 6 7 8 9 10
echo {a..f} #打印a-f的序列号
a b c d e f
创建文件
touch命令
1)、创建新的空文件
2)、改变已有文件的时间戳属性
touch test.txt #创建文件名为test.txt的文件
touch a.txt b.txt c.txt #批量创建文件名为a.txt、b.txt、c.txt的文件
touch x{1..100}.txt #批量创建文件名为x序号为1-100后缀名为.txt的文件
touch命令的参数选项及说明:
参数选项 | 解释说明 |
---|---|
-a | 只更改指定文件的最后访问时间 |
-d STRING | 使用字符串STRING代表的时间作为模板设置指定文件的时间属性 |
-m | 只更改指定文件的最后修改时间 |
-r file | 将指定文件的时间属性设置为与模板文件file的时间属性相同 |
-t STAMP | 使用[[CC]YY]MMDDhhmm[.ss]格式的时间设置文件的时间属性。格式含义从左到右:世纪、年、月、日、时、分、秒。 |
删除文件
rm命令
rm -f test.txt #删除文件名为test.txt文件
目录操作
相对路径是指从当前或指定路径出发所到达的路径(例如:x/xx/xxx;…/xxx/xx/x),而绝对路径是指从根路径出发所到达的路径(例如:/x/xx/xxx)
1)、pwd(print working directory)命令
打印当前用户所在目录的绝对路径
pwd #打印当前用户所在的绝对路径
2)、cd(change directory)命令
切换目录
cd /root #切换目录至/root
cd - #切换目录至上一次到达的目录
cd ~ #切换目录至当前用户的家目录也可以直接输入cd命令
cd . #切换目录至当前目录,相当于不改变目录。
cd .. #切换目录至当前目录的上一级目录
cd命令参数选项及说明:
参数选项 | 解释说明 |
---|---|
-P | 如果切换的目录是一个软链接,则会直接切换到软软链接指向的真正物理目标目录,和pwd命令的-P选项功能类似。 |
-L | 功能与-P相反,如果切换目录的目标是一个软链接,则直接切换到软链接所在目录,和pwd命令的-L选项功能类似。 |
- | 当使用"-"选项时,将会从当前目录切换到系统环境变量"OLDPWD"对应值的目录路径,即当前用户的上一次所在目录路径。 |
~ | 当使用"~"选项时,将会从当前目录切换到系统环境变量"HOME"对应值的目录路径,即当前用户的家目录所在路径。 |
… | 当使用"…"选项时,将会从当前目录切换到当前目录所在的上一级目录的路径。 |
3)tree命令
以树型结构显示当前或指定目录的结构
tree #显示当前目录下所有的文件和目录的树型结构
tree /root #显示/root目录下所有的文件和目录的树型结构
tree -L 1 / #显示/目录下的第1层文件和目录的树型结构
tree -d / #显示/目录下的所有目录不显示文件
tree -L 1 -d / #显示/目录下的第1层目录不显示文件
tree命令的参数选项及说明:
参数选项 | 解释说明 |
---|---|
-a | 显示所有文件包含隐藏文件(以"."开头的文件) |
-d | 只显示目录 |
-f | 显示每个文件的全路径 |
-i | 不显示树枝,常与-f参数配合使用。 |
-L level | 遍历目录的最大层,level为大于0的正整数。 |
-F | 在执行文件、目录、socket、符号连接、管道名称等不同类型文件结尾,各自加上"*“、”/“、”=“、”@“、”|"符号,类似ls命令的-F选项。 |
4)、mkdir(make directoryies)命令
在当前目录或指定目录下创建目录
mkdir x #在当前目录下创建名为x的目录
mkdir /root/x #在/root目录下创建名为x的目录
mkdir -p /root/x/xx #如果/x/xx不存在则在/root目录下创建名为x和xx的级联子目录,如果目录已存在则不会创建目录并保留目录里已存在的文件。
mkdir -m 333 /root/x #在/root目录下创建名为x的目录并设置其操作权限为333
mkdir a b c d #在当前目录下批量创建名为a、b、c、d的目录
mkdir x{1..10} #在当前目录下批量创建以x开序号为1-10的目录
mkdir命令的参数选项及说明:
参数选项 | 解释说明 |
---|---|
-p | 递归创建目录(递归:逐级遍历的意思);如果要创建的目录已存在,不提示错误且不创建目录。 |
-m | 设置新创建目录的默认目录对应的权限 |
-v | 显示创建目录的过程 |