(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
posted @ 2021-04-03 17:41  空白的旋律  阅读(198)  评论(0编辑  收藏  举报