(SRE)新基础知识一
显示当前使用的shell
[14:46:50 root@sz-kx-centos8 ~]# echo $SHELL
显示当前系统使用的所有shell
[14:47:00 root@sz-kx-centos8 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
设置主机名
临时生效
[14:47:35 root@sz-kx-centos8 ~]# hostname centos8.long.net
持久生效,支持CentOS7和Ubuntu18.04以上版本
[14:49:37 root@sz-kx-centos8 ~]# hostnamectl set-hostname centos8.long.net
注意:
1,主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
2,有些软件对主机名有特殊要求
命令提示符
# 管理员
$ 普通用户
显示提示符格式
[14:52:18 root@sz-kx-centos8 ~]# echo $PS1
\[\e[1;32m\][\[\e[0m\]\[\e[1;32m\]\t \[\e[1;33m\]\u\[\e[34m\]@\h\[\e[1;31m\] \w\[\e[1;32m\]]\[\e[0m\]\#
提示符 | 格式说明 |
---|---|
\e | 控制符\033 |
\u | 当前用户 |
\h | 主机名简称 |
\H | 主机名 |
\w | 当前工作目录 |
\W | 当前工作目录基名 |
\t | 24小时时间格式 |
\T | 12小时时间格式 |
! | 命令历史数 |
| 开机后命令历史数
范例:实现系统持久保存提示符格式
[14:52:23 root@sz-kx-centos8 ~]# echo "PS1='\[\e[1;32m\][\[\e[0m\]\[\e[1;32m\]\t \[\e[1;33m\]\u\[\e[34m\]@\h\[\e[1;31m\] \w\[\e[1;32m\]]\[\e[0m\]# '" >> .bashrc
内部命令
[14:57:06 root@sz-kx-centos8 ~]# type echo
echo is a shell builtin
外部命令
[14:57:11 root@sz-kx-centos8 ~]# type wget
wget is /usr/bin/wget
内部命令相关
help 内部命令列表
enable 管理内部命令
enable cmd 启用内部命令
enable -n cmd 禁用内部命令
enable -n 查看所有禁用的内部命令
查看外部命令:
[15:01:42 root@sz-kx-centos8 ~]# whereis wget
wget: /usr/bin/wget /usr/share/man/man1/wget.1.gz /usr/share/info/wget.info.gz
Hash缓存表
hash 命令常见用法
hash 显示hash缓存
hash -l 显示hash缓存,可作为输入使用
hash -p path name 将命令全路径path起别名为name
hash -t name 打印缓存中name的路径
hash -d name 清除 name 缓存
hash -r 清除缓存
命令别名
alias
范例:定义别名
[15:07:00 root@sz-kx-centos8 ~]# alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"
[15:07:00 root@sz-kx-centos8 ~]# vim .bashrc
撤销别名:unalias
unalias [-a] name [name ...]
取消所有别名
unalias -a
注意:
在命令行中定义的别名,仅对当前shell进程有效
如果想要永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件
source /path/config_file
. /path/config_file
如果别名同原命令同名,如果要执行原命令,可使用
\ALIASNAME
"ALIASNAME"
'ALIASNAME'
command ALIASNAME
只适用于外部命令
/path/command
命令格式
COMMAND [OPTIONS...] [ARGUMENTS...]
COMMAND [COMMAND] [COMMAND] ...
选项 | 用于启用或关闭命令的某个或某些功能 |
---|---|
短选项: | UNIX 风格选项,-c 例如:-l ,-h,-a |
长选项: | GNU 风格选项,--word 例如:--all,--human |
BSD风格选项: | 一个字母,例如:a,使用相对较少 |
参数: | 命令的作用对象,比如:文件名,用户名等 |
范例:
[15:20:48 root@sz-kx-centos8 ~]# id -u long
1000
[15:20:53 root@sz-kx-centos8 ~]# ls -a
[15:20:58 root@sz-kx-centos8 ~]# ls --all
[15:21:08 root@sz-kx-centos8 ~]# free -h
[15:21:18 root@sz-kx-centos8 ~]# free --human
[15:21:27 root@sz-kx-centos8 ~]# ps a
注意:
1,多个选项以及多个参数和命令之间使用空白字符分隔开
2,取消和结束命令执行:Ctrl+c,Ctrl+d
3,多个命令可以使用 “;” 符号分开
4,一个命令可以用 \ 分成多行
常见命令
查看硬件信息
查看CPU
lscpu 命令可以查看cpu信息
[15:21:31 root@sz-kx-centos8 ~]# cat /proc/cpuinfo
查看内存大小
[15:21:08 root@sz-kx-centos8 ~]# free
查看硬盘和分区情况
[15:26:16 root@sz-kx-centos8 ~]# lsblk
[15:27:19 root@sz-kx-centos8 ~]# cat /proc/partitions
查看系统架构
[15:27:39 root@sz-kx-centos8 ~]# arch
查看内核版本
[15:28:02 root@sz-kx-centos8 ~]# uname -r
查看操作系统发行版本
[15:28:27 root@sz-kx-centos8 ~]# cat /etc/os-release
[15:28:56 root@sz-kx-centos8 ~]# cat /etc/redhat-release
日期和时间
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
相关命令:
date 显示和设置系统时间
范例:
[15:29:43 root@sz-kx-centos8 ~]# date
查看date 命令帮助
[15:31:22 root@sz-kx-centos8 ~]# date --help
clock,hwclock:显示硬件时钟
以硬件时钟为准,显示系统时钟
-s,--hctosys
以系统时钟为准,校正硬件时钟
-w,--systohc
查看当前时区:
[15:31:47 root@sz-kx-centos8 ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Jun 13 2020 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
显示一年日历
[15:35:20 root@sz-kx-centos8 ~]# cal -y
关机和重启
关机:
halt
poweroff
重启
reboot
-f :强制,不调用shutdown
-p:切断电源
关机或重启:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
-r:rboot
-h:halt
-c:cancel
TIME:无指定,默认相当于+1 (CentOS7)
now:立即,相当于+0
+#:相对时间表示法,几分钟之后;例如+3
hh:mm:绝对时间表示,指明具体时间
用户登录信息查看命令
显示当前登录有效用户
whoami
系统当前所有的登录会话
who
系统当前所有的登录会话及所做的操作
w
会话管理软件 screen
注意:CentOS7 来自于base源,CentOS8来自于epel源
CentOS7安装
[03:46:57 root@sz-centos7 ~]# yum install -y screen
CentOS8安装
[15:35:29 root@sz-kx-centos8 ~]# yum -y install epel-release
[15:35:29 root@sz-kx-centos8 ~]# yum install -y screen
screen命令常见用法:
创建新screen会话
screen -S [SESSION]
加入screen会话
screen -x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION]
会话管理软件 tmux
安装
[15:48:09 root@sz-kx-centos8 ~]# yum install tmux
启动
[15:48:09 root@sz-kx-centos8 ~]# tmux
退出
[15:48:09 root@sz-kx-centos8 ~]# exit
列出所有快捷键,及其对应的 tmux 命令
tmux list-keys
列出所有 tmux 命令及参数
tmux list-commands
输出信息 echo
echo 基本用法
语法:
echo [-neE] [字符串]
选项 | 说明 |
---|---|
-E | (默认)不支持 \ 解释功能 |
-n | 不自动换行 |
-e | 启用 \ 字符的解释功能 |
显示变量
用变量值替换,弱引用
echo "$VAR_NAME"
变量不会替换,强引用
echo '$VAR_NAME'
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
选项 | 说明 |
---|---|
\a | 发出警告声 |
\b | 退格键 |
\c | 最后不加上换行符号 |
\e | escape,相当于\033 |
\n | 换行且光标移至行首 |
\r | 回车,即光标移至行首,但不换行 |
\t | 插入tab |
\ | 插入 \字符 |
\0nnn | 插入nnn(八进制)所代表的ASCII字符 |
\xHH | 插入HH(十六进制)所代表的ASCII数字(man 7 ascii) |
echo 高级用法
参数 | 说明 |
---|---|
\033[30m | \033[37m 设置前景色 |
\033[40m | \033[47m 设置背景色 |
字符背景颜色范围:40-47
数字 | 颜色 |
---|---|
40: | 黑 |
41: | 红 |
42: | 绿 |
43: | 黄 |
44: | 蓝 |
45: | 紫 |
46: | 深绿 |
47: | 白色 |
字体颜色:30-37
数字 | 颜色 |
---|---|
30: | 黑 |
31: | 红 |
32: | 绿 |
33: | 黄 |
34: | 蓝 |
35: | 紫 |
36: | 深绿 |
37: | 白色 |
参数 | 功能 |
---|---|
\033[0m | 关闭所有属性 |
\033[1m | 设置高亮度 |
\033[4m | 下划线 |
\033[5m | 闪烁 |
\033[7m | 反显 |
\033[8m | 消隐 |
\033[nA | 光标上移n行 |
\033[nB | 光标下移n行 |
\033[nC | 光标右移n列 |
\033[nD | 光标左移n列 |
\033[x;yH | 设置光标位置x行y列 |
\033[2J | 清屏 |
\033[k | 清除从光标到行尾的内容 |
\033[s | 保存光标位置 |
\033[u | 恢复光标位置 |
\033[?25 | 隐藏光标 |
\033[?25h | 显示光标 |
\033[2J\033[0;0H | 清屏且将光标置顶 |
字符集 ascii
查看ascii 表
[16:21:22 root@sz-kx-centos8 ~]# yum -y install man-pages
[16:21:43 root@sz-kx-centos8 ~]# man ascii
范例:修改LANG 变量实现中文语言提示
[16:21:43 root@sz-kx-centos8 ~]# echo $LANG
[16:21:43 root@sz-kx-centos8 ~]# xxx
-bash: xxx: command not found
[16:21:43 root@sz-kx-centos8 ~]# LANG=zh_CN.UTF-8
[16:21:43 root@sz-kx-centos8 ~]# echo $LANG
[16:21:43 root@sz-kx-centos8 ~]# xxx
-bash: xxx: 未找到命令
命令行扩展:
范例:比较 “ ”,‘ ’, `` 三者区别
[16:21:55 root@sz-kx-centos8 ~]# echo "echo $HOSTNAME"
echo sz-kx-centos8.com
[16:26:50 root@sz-kx-centos8 ~]# echo 'echo $HOSTNAME'
echo $HOSTNAME
[16:26:58 root@sz-kx-centos8 ~]# echo `echo $HOSTNAME`
sz-kx-centos8.com
结论:
引号 | 说明 |
---|---|
单引号: | 强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,“最傻” |
双引号: | 弱引用,不能识别命令,可以识别变量,“半傻不精” |
反向单引号: | 里面的内容必须是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续,“最聪明” |
范例:$()和
[16:32:47 root@sz-kx-centos8 ~]# touch `date +%F`.log
[16:33:22 root@sz-kx-centos8 ~]# ll `echo `date +%F`.log`
-bash: .log: command not found
ls: cannot access 'date': No such file or directory
ls: cannot access '+%F': No such file or directory
[16:33:29 root@sz-kx-centos8 ~]# ll $(echo $(date +%F).log)
-rw-r--r-- 1 root root 0 Apr 3 16:33 2021-04-03.log
括号扩展:
{}:可以实现打印重复字符串的简化形式
{元素1,元素2,元素3}
{元素1..元素2}
范例:
echo file{1,3,5} 结果为:file1 file3 file5
[16:33:33 root@sz-kx-centos8 ~]# echo {000..20..2}
000 002 004 006 008 010 012 014 016 018 020
查看历史命令:history
常用选项:
参数 | 说明 |
---|---|
-c: | 清空命令历史 |
-d: | 删除历史中指定的第offset个命令 |
n: | 显示最近的n条历史 |
-a: | 追加本次会话新执行的命令历史列表至历史文件 |
-r: | 读历史文件附加到历史列表 |
-w: | 保存历史列表到指定的历史文件 |
-n: | 读历史文件中未读过的行到历史列表 |
-p: | 展开历史参数成多行,但不存在历史列表中 |
-s: | 展开历史参数成一行,附加在历史列表后 |
命令历史相关环境变量
变量参数 | 说明 |
---|---|
HISTSIZE: | 命令历史记录的条数 |
HISTFILE: | 指定历史文件,默认为~/.bash_history |
HISTFLESIZE: | 命令历史文件记录历史的条数 |
HISTTIMEFORMAT="%F %T `whoami` " | 显示时间和用户 |
持久保存变量
[16:55:52 root@sz-kx-centos8 ~]# cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export HISTTIMEFORMAT="%F %T "
调用命令行历史
重复前一个命令
使用上方向键,并回车
参数 | 说明 |
---|---|
按!! | 并回车执行 |
!:0 | 执行前一条命令(去除参数) |
!n | 执行history命令输出对应序号n的命令 |
!-n | 执行history历史中倒数第n个命令 |
!$ | 上一条命令的最后一个参数的内容 |
!* | 上一条命令的所有参数的内容 |
bash 快捷键
按键组合 | 说明 |
---|---|
Ctrl + l | 清屏 |
Ctrl + o | 执行当前命令,并重新显示本命令 |
Ctrl + s | 阻止屏幕输出,锁定 |
Ctrl + q | 允许屏幕输出,解锁 |
Ctrl + c | 终止命令 |
Ctrl + z | 挂起命令 |
Ctrl + a | 光标移到命令行首,相当于 Home |
Ctrl + e | 光标移到命令行尾,相当于 End |
Ctrl + f | 光标向右移动一个字符 |
Ctrl + b | 光标向左移动一个字符 |
Ctrl + xx | 光标在命令行首和光标之间移动 |
Ctrl + u | 从光标处删除至命令行首 |
Ctrl + k | 从光标处删除至命令行尾 |
Ctrl + w | 从光标处向左删除至单词首 |
Ctrl + d | 删除光标处的一个字符 |
Ctrl + h | 删除光标前的一个字符 |
Ctrl + y | 将删除的字符粘贴至光标后 |
Ctrl + t | 交换光标处和之前的字符位置 |
Alt + f | 光标向右移动一个单词尾 |
Alt + b | 光标向左移动一个单词首 |
Alt + r | 删除当前整行 |
Alt + d | 从光标处向右删除至单词尾 |
Alt + Backspace | 删除左边单词 |
Alt + c | 从光标处开始向右更改为首字母大写的单词 |
Alt + u | 从光标处开始,将右边一个单词更改为大写 |
Alt + l | 从光标处开始,将右边一个单词更改为小写 |
Alt + t | 交换光标处和之前的单词位置 |
Alt + # | 提示输入指定字符后,重复显示该字符#次 |
获得帮助
whatis
CentOS7 版本以后
mandb
CentOS6 版本之前
makewhatis
范例:
[16:56:06 root@sz-kx-centos8 ~]# whatis ls
ls (1) - list directory contents
ls (1p) - list directory contents
如果没有,执行如下
[17:23:06 root@sz-kx-centos8 ~]# mandb
查看命令的帮助
内部命令帮助
[17:24:21 root@sz-kx-centos8 ~]# type history
history is a shell builtin
[17:24:56 root@sz-kx-centos8 ~]# help history
外部命令帮助
[17:25:07 root@sz-kx-centos8 ~]# type date
date is hashed (/usr/bin/date)
[17:25:36 root@sz-kx-centos8 ~]# date --help
格式说明:
[ ] | 表示可选项 |
---|---|
CAPS或<> | 表示变化的数据 |
... | 表示一个列表 |
x|y|z | 的意思是“x或y 或z” |
-abc | 的意思是 -a -b -c |
表示分组 |
man命令章节
章节 | 功能 |
---|---|
1, | 用户命令 |
2, | 系统调用 |
3, | c库调用 |
4, | 设备文件及特殊文件 |
5, | 配置文件格式 |
6, | 游戏 |
7, | 杂项 |
8, | 管理类的命令 |
9, | Linux内核API |
查看man手册页
man [章节] keyword
常用选项
列出所有帮助
man -a keyword
搜索man 手册
man -k keyword
相当于 whatis
man -f keyword
打印man 帮助文件的路径
man -w [章节] keyword