Administrator
发布于 2026-05-15 / 12 阅读
0
0

一、Linux基础知识

一、系统安装

1、创建虚拟机

2、安装Linux系统

设置网卡为eth0

 # 在安装界面按TAB键后,在quiet后面空格输入如下内容再按回车
 net.ifnames=0 biosdevname=0

按TAB键更换网卡为eth0

image-20241028220010098

选择语言

image-20241028220247825

设置网络

image-20241028220253934
image-20241028220317178
image-20241028220325402
image-20241028220329744

关闭KDUMP

image-20241028220345819
image-20241028220349360

软件选择

image-20241028220401944
image-20241028220405370

选择时区

image-20241028220417564

设置密码完成安装

image-20241028220431293

二、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..
 done

4、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-completion

2、例如

 # 查看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 exit

3、使用双 !! 可执行上一条执行过的命令

[root@web ~]# ls
file.txt
[root@web ~]# !!
1s
file.txt

4、输入!6,执行 history 命令历史中第6行命令

[root@web ~]# !6
touch file.txt

5、使用 !cat ,调用 history命令历史最近一次执行过的 cat 命令

[root@web ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@web ~]# !cat
cat /etc/sysconfig/network-scripts/ifcfg-eth0

9、alias别名

命令别名将用户经常使用的复杂命令简单化,可以用 alias 别名名称= 命令创建属于自己的命令别名,若要取消一个命令别名,则是用 unalias 别名名称;

1、定义临时别名,wk 为查看 eth0 网卡别名

[root@web ~l# alias wk='ifconfig
[root@web ~l# wk

2、如果定义命令本身,会执行什么?

[root@web ~]# alias ifconfig='ifconfig eth0'

# 绝对路径执行,调用命令本身
[root@web ~]# /sbin/ifconfig

# 通过\转义字符,调用命令本身
[root@web ~l# \ifconfig

3、取消别名

[root@web ~]# unalias ifconfig

4、永久生效,/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 echo

11.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.config

11.3、info

man常用于命令参考 ,GNU工具 info 适合通用文档参考

每一页分为“节点”

链接节点之前 *

[root@web01 ~]# info ls

# 导航info页
	方向键,PgUp,PgDn 导航
	Tab键 移动到下一个链接
	d 显示主题目录
	Home 显示主题首部
	Enter进入 选定链接
	n/p/u/l 进入下/前/上一层/最后一个链接
	s 文字 文本搜索
	q 退出 info

11.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 contents

11.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、相关网站和搜索

http://www.google.com

# 按如下方式搜索Openstack的pdf文档
Openstack filetype:pdf
rhca site:redhat.com/docs

http://bing.com http://www.baidu.com http://www.slideshare.net

2、查看当前的终端设备

[root@web ~]# tty

3、设置主机名

# 1、临时生效
[root@web ~]# hostname test01

# 2、持久生效,支持CentOS7和Ubuntu18.04以上版本
[root@web ~]# hostnamectl set-hostname test01

4、命令提示符 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\]'" >> ~/.bashrc

4.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.sh

2、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.sh

5、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/cpuinfo

6.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_64

2、查看内核信息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的两种时钟

  1. 系统时钟:由Linux内核通过CPU的工作频率进行的

  2. 硬件时钟:主板

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
1580572800

2、clock,hwclock: 显示硬件时钟

-s, --hctosys #以硬件时钟为准,校正系统时钟
-w, --systohc #以系统时钟为准,校正硬件时钟

[root@web ~]# ll /usr/sbin/clock
lrwxrwxrwx. 1 root root 7 Apr 24  2020 /usr/sbin/clock -> hwclock

3、时区

[root@web ~]# ll /etc/localtime
[root@web ~]# timedatectl set-timezone Asia/Shanghai
[root@web ~]# timedatectl status

[root@web ~]# cat /etc/timezone 
Asia/Shanghai

4、显示日历

[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 ~]# exit

mux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是 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 ascii

14.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.txt

16.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



评论