一、系统安装
1、创建虚拟机

2、安装Linux系统
设置网卡为eth0
# 在安装界面按TAB键后,在quiet后面空格输入如下内容再按回车
net.ifnames=0 biosdevname=0按TAB键更换网卡为eth0

选择语言

设置网络




关闭KDUMP


软件选择


选择时区

设置密码完成安装

二、Bash Shell快速入门
Linux 内核网:https://www.kernel.org/
Linux必备故障及原因50个文档地址:https://www.jianshu.com/p/99ec5bb4183f
1、什么是Bash shell
Bash she11 是一个命令解析器,可以通过 Bash shel1 命令让用户直接与内核进行交互。
1、用户通过 Bash 窗口输入 1s 命令;
2、1s 命令会通过 Bash 窗口传递给操作系统内核程序;
3、内核程序将命令翻译为计算机硬件能识别的语言,然后驱动硬件;。
4、硬件执行后将结果返回给内核,内核将结果转换后返回给 Bash;
我们如何打开 Bash shell呢?
当我们使用远程连接工具连接linux服务,系统则会给打开一个默认的shell
我们可在这个界面执行命令、比如:获取系统当前时间,创建一个用户等等...
2、Bash Shell能干什么
使用Shell实现对Linux系统的大部分管理,例如:
1、文件管理
2、权限管理
3、用户管理
4、磁盘管理
5、网络管理
6、软件管理
7、服务管理
8、等等上
3、如何使用Bash Shell
单条命令-->效率低 -->适合少量的工作
shell脚本 -->效率高-->适合重复性的工作
例如:创建100个用户,单纯输入命令需要执行100次,而如果使用Shell脚本则可以轻松解决;
示例
[root@web ~]# vim useradd.sh
#!/usr/bin/bash
for i in {1..100}
do
useradd alice-$i
echo "alice-$i" is create ok..
done4、Bash Shell提示符
当我们打开或者登陆到一个终端的时候都会显示一长串提示符[root@web ~]#提示符一般包含当前登陆的用户名,主机名,以及当前工作路径等;
[root@web ~]# echo $PS1
[\u@\h \W]\$
root # 当前登录系统的用户
web # 当前系统的主机名称
~ # 当前所在的工作目录
# # 通常情况下,是超级管理员的身份
$ # 只要是普通用户,则为$符号5、Bash Shell基础语法
bash she11 命令行,为用户提供命令输入,然后将执行结果返回给用户;
# 命令 选项 参数
command [-options] [arguments]
[root@web ~]# ls #命令
[root@web ~]# ls -a #命令+选项
[root@web ~]# ls -a /home/ #命令+选项+参数命令:整条
she11命令的主体功能选项:用于调节命令的具体功能
以
-引导短格式选项(单个字符),例如-a以
--引导长格式选项(多个字符),例如--a11
多个短格式选项可以写在一起,只用一个例如
-al参数:命令操作的对象,如文件、目录名等
注意:命令必须开头,选项和参数位置可以发生变化
6、Linux补全功能
1、命令补全:当忘记命令时可以使用
tab键进行补全2、目录补全:当需要查找文件目录层级比较多时,可以使用
tab键快速补全,减少出错
1、安装linux补全命令
# 1、对于基于Red Hat的系统(如Fedora或CentOS),你可以使用yum或dnf
[root@web ~]# yum install bash-completion
# 或者
[root@web ~]# dnf install bash-completion
# 2、于基于Debian的系统(如Ubuntu),你可以使用apt
[root@web ~]# apt-get update
[root@web ~]# apt-get install bash-completion2、例如
# 查看ip时忘记具体了命令
[root@web ~]# ifcon
# 按下tab键会自动补全
[root@web ~]# ifconfig
# 按-下tab键没有反应,按两下tab键列出所有if开头的命令
[root@web ~]# if
if ifcfg ifconfig ifdown ifenslave ifstat ifup
# linux目录较深,经常使用tab键进行补全,如果路径出错是没有办法补全
[root@web ~]# ls /etc/sysconfig/network-scripts/7、bash shell常用快捷键
ctrl +a # 跳转光标至本行的首部
ctrl +e # 跳转光标至本行的尾部
ctrl +u # 删除从光标到行首的所有字符
ctrl +k # 删除从光标到行末的所有字符
ctrl +l # 清屏,还可以使用clear命令
ctrl +c # 终止当前的任务
ctrl +d # 退出服务器, 还可以使用logout或exit
ctrl +w # 按空格删除光标之前的内容
ctrl +z # 将当前的任务挂起
ctrl +r # 搜索命令,
ctrl +s # 锁住屏幕,解锁ctrl+c [忽略]
Ctrl + q # 允许屏幕输出,解锁
Ctrl + o # 执行当前命令,并重新显示本命令
Ctrl + f # 光标向右移动一个字符
Ctrl + b # 光标向左移动一个字符
Alt + r # 删除当前整行
ctrl + 左右方向键 # 按照单词快速的跳转光标, Xshell工具提供的
# 号符: 注释(代表不执行)8、历史记录history
历史记录可用于追溯系统之前执行过什么命令,造成的故障;之前发生情况
1、选项
write # 写入到当前用户的家目录下.bash_history
-c # 清空命令历史记录, 不会情况文件 clear
-d # 删除命令历史的第 N 条行 delete
-d # offset: 删除历史中指定的第offset个命令
n # 显示最近的n条历史
-a # 追加本次会话新执行的命令历史列表至历史文件
-r # 读历史文件附加到历史列表
-w # 保存历史列表到指定的历史文件
-n # 读历史文件中未读过的行到历史列表
-p # 展开历史参数成多行,但不存在历史列表中
-s # 展开历史参数成一行,附加在历史列表后
Ecs + . # 获取上一个命令的参数2、history格式显示,放在/etc/profile或~/.bash_profile
[root@web ~]# vim ~/.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 HISTCONTROL=ignoreboth
export HISTTIMEFORMAT="%F %T `whoami` " # 显示时间和用户
[root@web ~]# history
1 2019-12-13 08:39:05 root ls /data
2 2019-12-13 08:39:05 root date
3 2019-12-13 08:39:05 root vie0
4 2019-12-13 08:39:05 root nano .bash_profile
5 2019-12-13 08:39:05 root exit3、使用双 !! 可执行上一条执行过的命令
[root@web ~]# ls
file.txt
[root@web ~]# !!
1s
file.txt4、输入!6,执行 history 命令历史中第6行命令
[root@web ~]# !6
touch file.txt5、使用 !cat ,调用 history命令历史最近一次执行过的 cat 命令
[root@web ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@web ~]# !cat
cat /etc/sysconfig/network-scripts/ifcfg-eth09、alias别名
命令别名将用户经常使用的复杂命令简单化,可以用 alias 别名名称= 命令创建属于自己的命令别名,若要取消一个命令别名,则是用 unalias 别名名称;
1、定义临时别名,wk 为查看 eth0 网卡别名
[root@web ~l# alias wk='ifconfig
[root@web ~l# wk2、如果定义命令本身,会执行什么?
[root@web ~]# alias ifconfig='ifconfig eth0'
# 绝对路径执行,调用命令本身
[root@web ~]# /sbin/ifconfig
# 通过\转义字符,调用命令本身
[root@web ~l# \ifconfig3、取消别名
[root@web ~]# unalias ifconfig4、永久生效,/etc/bashrc
[root@web ~]# echo "alias ifconfig='ifconfig eth0'" >> ~/.bashrc
[root@web ~]# echo "alias ifconfig='ifconfig eth0'" >> /etc/bashrc
~/.bashrc # 仅对当前用户
/etc/bashrc # 对所有用户有效10、扫描新加的磁盘
[root@web ~]# alias scandisk='echo - - - > /sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan'11、帮助
11.1、命令--help帮助
[root@web ~]# ls --help
用法: ls [选项]...[文件]...
# 内部命令help使用
[root@web ~]# help # 列出内部命令
[root@web ~]# type echo # 查看属于内部还是外部命令
[root@web ~]# help echo11.2、命令 man 手册
man 提供命令帮助的文件,手册页存放在/usr/share/man
几乎每个命令都有man的“页面”
中文man需安装包
man-pages
man-pages-zh-CN
[root@web ~]# man ls
[root@web ~]# man -f ls # 等价于whatis ls
[root@web ~]# man 5 passwd # 查看第5章passwd文档
[root@web ~]# man -a passwd # 查看passwd所有章节文档
[root@web ~]# man -k passwd # 查看所有有关passwd的帮助
[root@web ~]# man -w passwd # 打印man帮助文件的路径
# 不同类型的帮助称为不同的“章节”,统称为Linux手册,man 1 man
1:用户命令
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:配置文件格式
6:游戏
7:杂项
8:管理类的命令
9:Linux 内核API
# man命令的配置文件:
#CentOS 6 之前版 man 的配置文件
/etc/man.config
#CentOS 7 之后版 man 的配置文件
/etc/man_db.conf
#ubuntu man 的配置文件
/etc/manpath.config11.3、info
man常用于命令参考 ,GNU工具 info 适合通用文档参考
每一页分为“节点”
链接节点之前 *
[root@web01 ~]# info ls
# 导航info页
方向键,PgUp,PgDn 导航
Tab键 移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter进入 选定链接
n/p/u/l 进入下/前/上一层/最后一个链接
s 文字 文本搜索
q 退出 info11.4、whatis
whatis 使用数据库来显示命令的简短描述
此工具在系统刚安装后,不可立即使用,需要制作数据库后才可使用
执行下面命令生成数据库
#CentOS 7 版本以后
mandb
#CentOS 6 版本之前
makewhatis
# 示例
[root@centos8 ~]#whatis cal
cal (1) - display a calendar
cal (1p) - print a calendar
[root@centos8 ~]#man -f cal
cal (1) - display a calendar
cal (1p) - print a calendar
[root@centos8 ~]#whatis ls
ls: nothing appropriate.
#生成man相关数据库
[root@centos8 ~]#mandb
Processing manual pages under /usr/share/man...
Updating index cache for path `/usr/share/man/mann'. Wait...done.
Checking for stray cats under /usr/share/man...
...省略...
0 old database entries were purged.
[root@centos8 ~]#whatis ls
ls (1) - list directory contents11.5、命令自身提供的官方使用指南
命令自身提供的官方文档在这个目录
/usr/share/doc
linux命令手册:http://linux.51yip.com/
三、Linux常用命令和设置
1、系统及第三方应用官方文档
1.1、通过在线文档获取帮助
http://www.github.com https://www.kernel.org/doc/html/latest/ http://httpd.apache.org http://www.nginx.org https://mariadb.com/kb/en https://dev.mysql.com/doc/ http://tomcat.apache.org https://jenkins.io/zh/doc/ https://kubernetes.io/docs/home/ https://docs.openstack.org/train/ http://www.python.org http://php.net
linux命令手册 http://linux.51yip.com/
1.2、Linux官方在线文档和知识库
通过发行版官方的文档光盘或网站可以获得安装指南、部署指南、虚拟化指南等 http://kbase.redhat.com http://www.redhat.com/docs http://access.redhat.com https://help.ubuntu.com/lts/serverguide/index.html http://tldp.org
1.3、相关网站和搜索
# 按如下方式搜索Openstack的pdf文档
Openstack filetype:pdf
rhca site:redhat.com/docshttp://bing.com http://www.baidu.com http://www.slideshare.net
2、查看当前的终端设备
[root@web ~]# tty3、设置主机名
# 1、临时生效
[root@web ~]# hostname test01
# 2、持久生效,支持CentOS7和Ubuntu18.04以上版本
[root@web ~]# hostnamectl set-hostname test014、命令提示符 prompt(PS1)
登录Linux后,默认的系统命令提示符毫无没有个性,无法明显辨别生产和测试环境,而导致误操作。可以通过修改PS1变量实现个性的提示符格式,避免这种低级错误
其中字体颜色,编号30~37;背景色,编号40~47。 ● \033[30m -- \033[37m 设置前景色 ● \033[40m -- \033[47m 设置背景色 ● 可通过\e[0m关闭颜色输出; ● 特别的,当背景色为1时,将显示加亮加粗的文字。
详细请看下面的颜色表与代码表。
#字符背景颜色范围: 40--47
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白色
#字体颜色: 30--37
30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿
37: 白色4.1、修改命令提示符PS1当前用户生效
1、Centos
# 1、颜色不停的闪烁
[root@web ~]# echo "PS1='\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\] '" >> ~/.bashrc
# 2、显示蓝色
[root@web ~]# echo "PS1='\[\e[1;34m\][\u@\h \W]\\$\[\e[0m\] '" >> ~/.bashrc
# 3、有时间显示不同颜色
[root@web ~]# echo "PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$ '" >> ~/.bashrc
# 4、没时间显示不同颜色
[root@web ~]# echo "PS1='\[\e[1;32m\][\[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$ '" >> ~/.bashrc
# 5、正常显示
[root@web ~]# echo 'PS1="\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\] "' >> ~/.bashrc
# 提示符格式说明:
\e # 控制符\033
\u # 当前用户
\h # 主机名简称
\H # 主机名
\w # 当前工作目录
\W # 当前工作目录基名
\t # 24小时时间格式
\T # 12小时时间格式
! # 命令历史数
# # 开机后命令历史数2、Ubuntu
[root@ubuntu ~]# echo "PS1='\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]'" >> .bashrc
[root@ubuntu ~]# echo "PS1='\[\e[37;1m\][\[\e[31;1m\]\u\[\e[34;1m\]@\[\e[32;1m\]\h \[\e[31;1m\]\w \[\e[33;1m\]\t\[\e[37;1m\]]\[\e[32;1m\]\$\[\e[m\]'" >> ~/.bashrc4.2、修改命令提示符PS1所有用户生效
1、Centos
# 1、颜色不停的闪烁
[root@web ~]# echo "PS1='\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\] '" >> /etc/profile.d/env.sh
# 2、显示蓝色
[root@web ~]# echo "PS1='\[\e[1;34m\][\u@\h \W]\\$\[\e[0m\] '" >> /etc/profile.d/env.sh
# 3、有时间显示不同颜色
[root@web ~]# echo "PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$ '" >> /etc/profile.d/env.sh
# 4、没时间显示不同颜色
[root@web ~]# echo "PS1='\[\e[1;32m\][\[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$ '" >> /etc/profile.d/env.sh
# 5、正常显示
[root@web ~]# echo 'PS1="\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\] "' >> /etc/profile.d/env.sh2、Ubuntu
[root@ubuntu ~]# echo "PS1='\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\]'" >> /etc/profile.d/env.sh
[root@ubuntu ~]# echo "PS1='\[\e[37;1m\][\[\e[31;1m\]\u\[\e[34;1m\]@\[\e[32;1m\]\h \[\e[31;1m\]\w \[\e[33;1m\]\t\[\e[37;1m\]]\[\e[32;1m\]\$\[\e[m\]'" >> /etc/profile.d/env.sh5、type内部或外部命令
# 1、查看内部命令
[root@web ~]# type -a echo
echo is a shell builtin
echo is /usr/bin/echo
# 2、查看外部命令
[root@web ~]# which -a |--skip-alias
[root@web ~]# whereis
# 3、enable 管理内部命令
enable cmd # 启用内部命令
enable –n cmd # 禁用内部命令
enable –n # 查看所有禁用的内部命令6、查看硬件信息
6.1、查看 cpu
lscpu 命令可以查看cpu信息,或者 cat /proc/cpuinfo 也可看查看到
# 1、lscpu命令查看
[root@web ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 1 #每个core 有几个线程
Core(s) per socket: 4 #每个槽位有4个core
Socket(s): 2 #服务器面板上有2个cpu 槽位NUMA node(s): 2 #nodes的数量
Vendor ID: GenuineIntel
CPU family: 6
Model: 44
Stepping: 2
CPU MHz: 2128.025
BogoMIPS: 4256.03
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0,2,4,6 #对应的core
NUMA node1 CPU(s): 1,3,5,7
# 2、文件查看
[root@web ~]# cat /proc/cpuinfo6.2、查看内存
# 1、free命令查看
[root@web ~]# free -h
total used free shared buff/cache available
Mem: 3.5Gi 523Mi 2.9Gi 9.0Mi 357Mi 3.0Gi
Swap: 2.0Gi 0B 2.0Gi
# 2、free常用参数
-b # 设置显示单位为B
-m # 设置显示单位为MB
-g # 设置显示单位为GB
-o # 不显示缓冲区数据列
-h # 以易读的单位显示
-s # 持续显示内存数据
-k # 设置显示单位为KB
-t # 显示内存使用总和
-l # 显示低内存和高内存统计数据
-V # 显示版本信息
# 3、以易读的单位显示内存使用量信息,每隔10s刷新一次
[root@web ~]# free -hs 10
# 4、文件查看
[root@web ~]# cat /proc/meminfo 1、第一部分Mem行解释
total # 总共的物理内存(单位为 KB)
used # 已经被使用的内存(单位为 KB)
free # 空闲的内存(单位为 KB)
shared # 共享内存(单位为 KB)
buff/cache # 用于缓存的内存(包含内核缓冲区、页面缓存和 SLAB 缓存等,单位为 KB)
available # 表示可以被应用程序使用的可用内存量(单位为 KB)2、第二部分Swap行解释
total # 交换空间的总量(单位为 KB)
used # 已使用的交换空间量(单位为 KB)
free # 空闲的交换空间量(单位为 KB)7、查看系统版本信息
1、查看系统架构
[root@web ~]# arch
x86_64
[root@web ~]# uname -i
x86_642、查看内核信息uname
[root@web ~]# uname -r
3.10.0-1062.el7.x86_64
# 常用参数
-a # 显示系统所有相关信息
-r # 显示内核发行版本号
-i # 显示硬件平台
-s # 显示内核名称
-m # 显示计算机硬件架构
-v # 显示内核版本
-n # 显示主机名称
--help # 显示帮助信息
-o # 显示操作系统名称
--version # 显示版本信息
-p # 显示主机处理器类型3、查看操作系统发行版本
# 1、ceontos
[root@web ~]# cat /etc/redhat-release
# 2、通用
[root@web ~]# /etc/os-release 8、日期和时间
Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
1、date 显示和设置系统时间
# date 显示和设置系统时间
[root@web ~]# date +"%F %T" # 显示年月日时分秒
2023-02-25 14:19:20
[root@web ~]# date +"%F_%T" # 显示年月日时分秒
2023-02-25_14:20:01
[root@web ~]# date +%F-%H-%M # 显示年月日时分
2023-02-25-14-22
[root@web ~]# date -d '-1 day' +%F # 显示昨天的日期
2023-02-24
[root@web ~]# date -d '1 day' +%F # 显示明天的日期
2023-02-24
[root@web ~]# date +%s
1584689051
[root@web ~]# date -d @`date +%s`
Fri Mar 20 15:24:18 CST 2020
[root@web ~]# date -d @1584689051
Fri Mar 20 15:24:11 CST 2020
[root@web ~]# date -d @1584689051 +%F_%T
2020-03-20_15:24:11
[root@web ~]# date -d "2020-02-02" +%s
15805728002、clock,hwclock: 显示硬件时钟
-s, --hctosys #以硬件时钟为准,校正系统时钟
-w, --systohc #以系统时钟为准,校正硬件时钟
[root@web ~]# ll /usr/sbin/clock
lrwxrwxrwx. 1 root root 7 Apr 24 2020 /usr/sbin/clock -> hwclock3、时区
[root@web ~]# ll /etc/localtime
[root@web ~]# timedatectl set-timezone Asia/Shanghai
[root@web ~]# timedatectl status
[root@web ~]# cat /etc/timezone
Asia/Shanghai4、显示日历
[root@web ~]# cal –y 9、关机和重启
9.1、shutdown命令
# 1、命令格式
[root@web ~]# shutdown [选项] 时间 [警告信息]
-c:取消已经执行的 shutdown 命令;
-h:关机;
-r:重启;
now: 立刻;
# 2、重启与定时重启
[root@web ~]# shutdown -r now # 重启, now是现在重启的意思
[root@web ~]# shutdown -r 05:30 # 指定时间重启,但会占用前台终端
[root@web ~]# shutdown -r 05:30 & # 把定义重启命令放入后台,&是后台的意思
[root@web ~]# shutdown -c # 取消定时重启
[root@web ~]# shutdown -r +10 # 10分钟之后重启
# 关机和定时关机
[root@web ~]# shutdown -h now # 现在关机
[root@web ~]# shutdown -h 05:30 # 指定时间关机9.2、reboot命令
# 在现在的系统中,reboot 命令也是安全的,而且不需要加入过多的选项。
[root@web ~]# reboot # 重启9.3、halt和poweroff命令
# 这两个都是关机命令,直接执行即可。
[root@web ~]# halt # 关机
[root@web ~]# poweroff # 关机9.4、init命令
# init 是修改 Linux 运行级别的命令,也可以用于关机和重启。
[root@web ~]# init 0 # 关机,也就是调用系统的 0 级别
[root@web ~]# init 6 # 重启,也就是调用系统的 6 级别10、用户登录信息查看命令
[root@web ~]# whoami # 显示当前登录有效用户
[root@web ~]# who # 系统当前所有的登录会话
[root@web ~]# w # 系统当前所有的登录会话及所做的操作11、创建登录提示文件motd
参考网站: https://www.bootschool.net/ascii-art
[root@web ~]# cat /etc/motd
////////////////////////////////////////////////////////////////////
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕机 永无BUG //
////////////////////////////////////////////////////////////////////
[root@web ~]# cat /etc/motd
////////////////////////////////////////////////////////////////////
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕机 永无BUG //
////////////////////////////////////////////////////////////////////12、会话管理
12.1、screen会话管理
利用screen 可以实现会话管理,如:新建会话,共享会话等 注意:CentOS7 来自于base源,CentOS8 来自于epel源
# 安装
#CentOS7 安装screen
[root@web ~]# yum -y install screen
#CentOS8 安装screen
[root@web ~]# dnf -y install epel-release
[root@web ~]# dnf -y install screen
# screen命令常见用法
[root@web ~]# screen –S name # 创建新screen会话,name是名字可以随便起
[root@web ~]# screen –x name # 加入screen会话,name名字就是之前创建的
[root@web ~]# exit # 退出并关闭screen会话
Ctrl+a,d # 剥离当前screen会话
[root@web ~]# screen -ls # 显示所有已经打开的screen会话
[root@web ~]# screen -r # 恢复某screen会话12.2、 tmux会话管理
Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离,功能如下
它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。它可以让新窗口"接入"已经存在的会话。
它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
它还支持窗口任意的垂直和水平拆分
# Tmux 是一个终端复用器(terminal multiplexer),类似 screen,但是更易用,也更强大
# 1、安装
[root@web ~]# yum install tmux
# 2、启动与退出
[root@web ~]# tmux
[root@web ~]# exitmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是 Ctrl+b ,即先按下 Ctrl+b ,快捷键才会生效。帮助命令的快捷键是 Ctrl+b ? 然后,按下 q 键,就可以退出帮助
新建会话 第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。使用编号区分会话,不太直观,更好的方法是为会话起名。下面命令新建一个指定名称的会话。
# 新建会话
[root@web ~]# tmux new -s <session-name>
# tmux ls或Ctrl+b,s 可以查看当前所有的 Tmux 会话
[root@web ~]# tmux ls
[root@web ~]# tmux list-session
# 分离会话
在 Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。
[root@web ~]# tmux detach
# 接入会话
tmux attach 命令用于重新接入某个已存在的会话。
[root@web ~]# tmux attach -t <session-name>
[root@web ~]# tmux attach -t 0 # 例如
# 杀死会话
tmux kill-session命令用于杀死某个会话。
[root@web ~]# tmux kill-session -t <session-name>
# 切换会话
tmux switch命令用于切换会话
[root@web ~]# tmux switch -t <session-name>窗格快捷键
Ctrl+b %:划分左右两个窗格
Ctrl+b ":划分上下两个窗格
Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓
Ctrl+b ;:光标切换到上一个窗格
Ctrl+b o:光标切换到下一个窗格。
Ctrl+b {:当前窗格左移
Ctrl+b }:当前窗格右移
Ctrl+b Ctrl+o:当前窗格上移
Ctrl+b Alt+o:当前窗格下移
Ctrl+b x:关闭当前窗格
Ctrl+b !:将当前窗格拆分为一个独立窗口
Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小
Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小
Ctrl+b q:显示窗格编号13、输出信息 echo
13.1、echo 基本用法
echo 命令可以将后面跟的字符进行输出
功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号
echo [-neE][字符串]
# 选项:
-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能
# 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
[root@web01 ~]# echo -e "\a" # 例如
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
\xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
[root@web01 ~]# echo \$PATH
$PATH
[root@web01 ~]# echo \
[root@web01 ~]# echo \\
\
[root@web01 ~]# echo \\\
>
[root@web01 ~]# echo \\\\
\\13.2、echo 高级用法
在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码
具有颜色的字符,其格式如下:
"\033[字符背景颜色;字体颜色m字符串\033[0m"
\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: 白色
# 加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:
\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[?25l 隐藏光标
\033[?25h 显示光标
\033[2J\033[0;0H 清屏且将光标置顶14、字符集和编码
14.1、ASCII码
计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,即ASCII(American Standard Code for Information Interchange) 码
ASCII 码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为 0
# 查看 ascii 表
[root@centos8 ~]# dnf -y install man-pages
[root@centos8 ~]# man ascii14.2、 Unicode
编码转换和查询参考链接: https://home.unicode.org/ https://unicode.yunser.com/unicode http://www.chi2ko.com/tool/CJK.htm https://www.bejson.com/convert/unicode_chinese/ https://javawind.net/tools/native2ascii.jsp?action=transform http://tool.oschina.net/encode http://web.chacuo.net/charsetescape
# Unicode编码方案:
UTF-8:变长,1到4个字节
UTF-16:变长,2或4个字节
UTF-32:固定长度,4个字节14.3、修改LANG变量实现中文语言提示
[root@centos7 ~]# echo $LANG
en_US.UTF-8
[root@centos7 ~]# magedu
-bash: magedu: command not found
[root@centos7 ~]# LANG=zh_CN.UTF-8 # 临时转换中文
[root@centos7 ~]# echo $LANG
zh_CN.UTF-8
[root@centos7 ~]# LANG=en_US.UTF-8 # 临时转换英文
[root@centos7 ~]# echo $LANG
en_US.UTF-8
[root@centos7 ~]# magedu
-bash: magedu: 未找到命令14.4、浏览器不让复制文件的方法
http://www.chi2ko.com/tool/CJK.htm
# 例如用上面的网址测试
# 1、方法一
打开浏览器找到打印就可以复制了
# 2、方法二
打开浏览器设置,在设置里面找到javascript禁用就可以了15、bc计算器
[root@web01 ~]# yum -y install bc
[root@web01 ~]# bc # 进入bc计算器
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
obase=2 # 输入obase=2就是转换二进制
87
1010111 # 二进制
obase=8 # 输入obase=8就是转换八进制
87
127 # 八进制
# 加,减,乘,除
加
1+2 # 计算
3 # 结果
减
3-2 # 计算
1 # 结果
乘
3*2 # 计算
6 # 结果
除
4/2 # 计算
2 # 结果16、命令行扩展和被括起来的集合
16.1、命令行扩展:`` 和 $()
# 结论:
单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,"最傻"
双引号:弱引用,不能识别命令,可以识别变量,"半傻不精"
反向单引号:里面的内容必须是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续,"最聪明"
# 示例
[root@web01 ~]# echo "This system's name is $(hostname)"
This system's name is centos8.magedu.org
[root@web01 ~]# echo "I am `whoami`"
I am root
[root@web01 ~]# touch $(date +%F).log
[root@web01 ~]# ls
2019-12-13.log
[root@web01 ~]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 13 09:16 2019-12-13.log
[root@web01 ~]# touch `date +%F`.txt
[root@web01 ~]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 13 09:16 2019-12-13.log
-rw-r--r--. 1 root root 0 Dec 13 09:17 2019-12-13.txt
[root@web01 ~]# touch `hostname`-`date +%F`.log
[root@web01 ~]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 13 09:16 2019-12-13.log
-rw-r--r--. 1 root root 0 Dec 13 09:17 2019-12-13.txt
-rw-r--r--. 1 root root 0 Dec 13 09:18 centos8.magedu.org-2019-12-13.log
[root@web01 ~]# touch `date +%F_%H-%M-%S`.log
[root@web01 ~]# touch `date -d '-1 day' +%F`.log
# 范例:$( ) 和 ``
[root@web01 ~]# ll `echo `date +%F`.txt`
-bash: .txt: command not found
ls: cannot access 'date': No such file or directory
ls: cannot access '+%F': No such file or directory
[root@web01 ~]# ll $(echo $(date +%F).txt)
-rw-r--r-- 1 root root 0 Mar 20 09:55 2020-03-20.txt
[root@web01 ~]# ll `echo $(date +%F).txt`
-rw-r--r-- 1 root root 0 Mar 20 09:55 2020-03-20.txt
[root@web01 ~]# ll $(echo `date +%F`.txt)
-rw-r--r-- 1 root root 0 Mar 20 09:55 2020-03-20.txt16.2、括号扩展:{ }
{} 可以实现打印重复字符串的简化形式
{元素1,元素2,元素3}
{元素1..元素2}
# 范例:
echo file{1,3,5} 结果为:file1 file3 file5
rm -f file{1,3,5}
echo {1..10}
echo {a..z}
echo {1..10..2}
echo {000..20..2}
[root@web01 ~]# echo {000..20..2}
000 002 004 006 008 010 012 014 016 018 020
[root@web01 ~]# echo {a..z..2}
a c e g i k m o q s u w y
[root@web01 ~]# echo {A..z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z
# 范例: 关闭和启用{}的扩展功能
[root@web01 ~]# echo $-
himBHs
[root@web01 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@web01 ~]# set +B
[root@web01 ~]# echo $-
himHs
[root@web01 ~]# echo {1..10}
{1..10}
[root@web01 ~]# set -B
[root@web01 ~]# echo $-
himBHs
[root@web01 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10