转自02 Linux基础和帮助_wx6716377953dc1的技术博客_51CTO博客


1 Linux基础

1.1 Linux的登陆方式

在Linux操作系统中有两种登陆方式:

  • 命令行界面登陆:通过ssh远程连接工具(XShell、MobaXterm、FinalShell、CRT等)进行登陆的方式都是命令行界面,是最常用的登陆方式。

2-linux基础入门_bash

  • 图形化界面登陆:通常安装Linux操作系统时,在安装的方式中选择带GUI(即图形)方式的安装就会带有图形化的工具,在生产环境中一般都不会安装图形化,因为比较占用资源。

2-linux基础入门_重启_02

范例:通过命令实现临时登陆Linux

ssh root@10.0.0.50

2-linux基础入门_bash_03

1.2 用户类型

在Linux中有两种用户类型:

  • root用户:也称超级管理员,对系统有着绝对的权限;root用户的用户id为0
  • 普通用户:普通用户的权限很小,但是如果将普通用户加入到root组当中,同样也拥有很大的权限;通常能登陆普通用户的用户id在1000以上,因为系统中有很多程序需要系统用户的身份去运行,所以用户id在1000以下的用户是系统在安装之前创建的一些系统用户。
1.3 终端类型

在Linux中有很多终端类型,但常见到的就只有两种:

  • 伪终端:也就是tty#,这个#是数字,表示第#的一个终端,通过Linux系统本身进行登陆的方式分配的终端就是伪终端。
  • 虚拟终端:通常表现形式为pts/#,通过ssh远程连接工具登陆到Linux的时候,所采用的都是伪终端。

范例:查看当前的终端类型

tty

2-linux基础入门_重启_04

2-linux基础入门_bash_05

终端接口相关概念:

  • GUI:图形化接口
  • CLI:命令行接口,也就是shell程序
1.4 什么是shell

shell是Linux系统用于和用户进行交互的一个程序,具体作用就是提供用户与内核进行交互操作的一种接口,它接收用户输入的指令,让后将指令送入到内核中去执行。

shell的功能:

  • 相当于解释器,将用户命令解释给内核,然后内核进行执行,最后将执行结果返还给用户。
  • shell也是一种高级程序设计语言,通常用于编写脚本以实现批量化的重复工作,提高工作的效率与稳定。

范例:查看系统所支持的shell

cat /etc/shells

2-linux基础入门_主机名_06

范例:查看当前所使用的shell

echo $SHELL

2-linux基础入门_重启_07

1.5 设置主机名

设置主机名的方式有两种:

  1. 设置临时生效的主机名,系统关机重启后不会生效
  2. 主机名持久生效,将主机名写入到配置文件中

范例:临时设置主机名

#hostname命令可以查看主机名,加上选项-I可以查看ip地址,后面跟一串字符串可临时更改主机名

2-linux基础入门_重启_08

范例:主机名持久生效

放法一:将主机名写入到/etc/hostname的文件中

2-linux基础入门_主机名_09

方法二:通过命令实现

hostnamectl set-hostname USERNAME

设置主机名的注意事项:

  • 修改hostname 需要root权限
  • 主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
1.6 命令提示符

查看当前的命令提示符格式:

echo $PS1

2-linux基础入门_bash_10

范例:临时修改主机名

centos系列:
PS1=\[\e[1;31m\][\u@\h \W]\$\[\e[0m\]

ubuntu系列:
PS1="\[\e[1;33m\][\u@\h \W]\\$\[\e[0m\]"
#说明:
	1表示高亮显示
  31表示红色,可以设置30-37

范例:修改命令提示符持久生效

echo "PS1=\[\e[1;31m\][\u@\h \W]\$\[\e[0m\]" > /etc/profile.d/env.sh
source /etc/profile.d/env.sh

.bashrc 仅对当前用户生效
/etc/bashrc 对所有用户生效
/etc/profile 对所有用户生效
/etc/profile.d/xxx.sh  对所有用户生效

2 常用命令

2.1 命令分类

在Linux中的命令可分为两类:

  • 内部命令:由shell自带的,用户登陆后自动加载并常驻内存中
  • 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才会从磁盘加载到内存中,执行完毕后有从内存中删除

区分命令类型的方式:

type

常用选项:
	-a  #列出所有,有可能是内部命令的同时,又是外部命令

说明:
	外部命令通过type进行判断时会给出该命令的程序文件的路径,反之就是内部命令。

范例:判断命令类型

2-linux基础入门_重启_11

管理内部命令:

enable

范例:

查看所有的内部命令
enable

禁用内部命令echo
enable -n echo

查看所有被禁用的内部命令
enable -

启用内部命令echo
enable echo
2.2 给命令设置别名

对于经常执行的比较长的命令,可以将其定义成较短的别名,以方便执行。

alias

作用:查看别名,定义别名

范例:将进入网卡文件目录的命令设置成cdnet

alias cdnet="cd /etc/sysconfig/network-scripts/"

2-linux基础入门_主机名_12

范例:设置扫描磁盘的命令别名****

alias scandisk="echo - - - > /sys/class/scsi_host/host0/scan;\
echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan"

2-linux基础入门_主机名_13

在命令行设置的别名都是临时生效的,下次关机重启后别名就没有了,要想别名永久生效需要将设置别名的命令写到配置文件中,然后重新加载配置文件。

.bashrc 仅对当前用户生效
/etc/bashrc 对所有用户生效
/etc/profile 对所有用户生效
/etc/profile.d/xxx.sh  对所有用户生效

重新加载配置文件:

方法一:
source 配置文件

方法二:
. 配置文件

范例:设置别名永久生效

echo 'alias cdnet="cd /etc/sysconfig/network-scripts/"' >> /etc/bashrc
source /etc/bashrc
2.3 hash缓存机制

由于外部命令在执行过程中每次都需要去PATH路径中找命令的程序文件,在工作中同样的命令需要执行多次,每次都去找,这样增加了磁盘的io性能。所以通过hash缓存将执行过的命令路径记录到缓存中以提升命令的执行效率。

管理hash缓存:

hash

常用选项:
	-r  #删除所有hash缓存
  -d CMD  #删除指定CMD的hash缓存

PATH变量:

用于存放命令的路径,查看PATH的值

echo $PATH
2.4 查看命令路径
which
作用:查找并显示给定命令的绝对路径

whereis
作用:查找二进制程序、代码等相关文件路径

范例:

2-linux基础入门_bash_14

2.5 查看硬件信息
  • 查看CPU信息:
方式一:
lscpu

方式二:
cat /etc/cpuinfo
  • 查看内存信息:
方式一:
free
常用选项:
	-h  #自动换算单位为kb M G
  
方式二:
cat /etc/meminfo

范例:

2-linux基础入门_主机名_15

内存信息说明:

total 			#系统总的可用物理内存大小
used 				#已被使用的物理内存大小
free 				#还有多少物理内存可用
shared 			#被共享使用的物理内存大小
buff/cache 	#被 buffer 和 cache 使用的物理内存大小
available 	#还可以被 应用程序 使用的物理内存大小
  • 查看硬盘和分区情况
lsblk
作用:查看硬盘分区情况

df
作用:查看硬盘使用情况
常用选项:
	-h  #自动换算单位为kb M G

范例:

2-linux基础入门_主机名_16

2.6 查看系统信息
  • 查看系统架构
方式一:
arch

方式二:
uname -

范例:

2-linux基础入门_主机名_17

  • 查看系统内核版本
uname -

范例:

2-linux基础入门_主机名_18

  • 查看操作系统发行版本
通用命令:
cat /etc/os-release

rocky/centos/redhat系列:
cat /etc/redhat-release

ubuntu系列:
cat /etc/lsb-release

国产麒麟:
cat /etc/.kyinfo

国产统信:
cat /etc/os-version
2.7 时间和日期

Linux的两种时钟:

  • 系统时钟:Linux内核通过CPU的工作频率进行
  • 硬件时钟:主板
date命令
作用:查看或设置时间
使用范例:
	date +%F_%T		#说明:+表示以特定格式显示时间,%F表示年-月-日,%T表示时:分:秒
  date +%Y-%m-%d_%H:%M:%S  #说明:%Y表示年,%m表示月,%d表示日,%H表示时,%M表示分,%S表示秒
  date -s "年-月-日 时:分:秒"   #设置系统时间
  
timedatectl命令
作用:查看或设置时区
使用范例:
	timedatectl list-timezones  #列出所有的时区
  timedatectl set-timezone Asia/Shanghai  #设置时区为Asia/Shanghai

范例:

2-linux基础入门_bash_19

2.8 关机和重启

关机:

方式一:
poweroff

方式二:
shutdown -h now  #不加now会在一分钟后关机
shutdown -c  #取消关机

重启:

方式一:
reboot

方式二:
shutdown -r now  #不加now会在一分钟后重启
shutdown -c  #取消重启
2.9 用户登陆信息
  • 用户id身份信息
id				#查看当前用户
id USER  	#查看指定的USER用户
  • 当前用户身份
whoami
  • 已经登陆的用户信息
who
  • 已经登陆的用户具体信息
2.10 文件目录相关
  • 列出目录内容
ls
常用选项:
	-a	#列出所有内容,包括隐藏文件(以点开头的文件)
  -l	#显示详细信息
  -h	#计算文件大小进行单位换算

范例:

2-linux基础入门_主机名_20

  • 进入目录
cd
常用范例:
cd ..	#回到上级目录
cd -  #回到上次工作目录
cd .  #当前目录(这个点表示当前目录,后面其它命令会常用到)
  • 查看当前工作目录
pwd
  • 查看文件内容
cat
常用选项:
	-n	#显示行号(包括空行)
  -b	#显示行号(不包括空行)
  -A	#显示结尾的标记$

范例:

2-linux基础入门_bash_21

  • 创建文件
touch
  • 创建目录
mkdir
常用选项:
	-p  #递归创建
2.11 命令行扩展
  • 命令太长使用 \ 进行分行
  • 执行多条命令使用 ; 将命令分隔

2-linux基础入门_重启_22

  • 生成数字或字母序列用 {}

2-linux基础入门_重启_23

2.12 历史命令

在Linux中,每个用户每次执行的命令都会记录到自己家目录中的~/.bash_history文件中,可以通过命令history进行管理

history命令常用选项:
	-c	#清空历史命令

调用历史命令
	!历史命令编号

范例:实现历史命令的定制化格式:

相关环境变量说明:
	HISTTIMEFORMAT="%F %T `whoami` " 	#显示时间和用户
  HISTCONTROL=ignoredups	#忽略重复的命令(连续且相同为重复)
  HISTCONTROL=ignorespace #忽略所有以空白开头的命令
  HISTCONTROL=ignoreboth	#相当于ignoredups与ignorespace的组合

实现:
echo -e 'export HISTTIMEFORMAT="%F %T `whoami` "\nexport HISTCONTROL=ignoreboth' >> ~/.profile

2-linux基础入门_主机名_24

2.13 命令行快捷键
ctrl+a	#光标跳转到命令行首
ctrl+e	#光标跳转到命令行尾
ctrl+c	#终止程序或命令
ctrl+u	#删除当前光标之前的内容
ctrl+k	#删除当前光标之后的内容

!$	#调用前一个命令的最后一个参数
!^	#调用前一个命令的第一个参数
!*	#调用前一个命令的所有参数
2.14 登陆提示

登陆前的提示:

登陆前提示的内容被编辑在文件:
	/etc/issue

登陆后的提示:

登陆后提示的内容被编辑在:
	/etc/motd

3 会话管理

会话管理最常用的一个功能就是将会话与程序进行绑定与解绑。通过ssh远程连接Linux后,Linux会生成一个ssh会话进程,我们所有的操作都是在该会话进程下进行的,如果将这个会话关闭(比如直接将xshell连接上的伪终端窗口关闭),就会导致所有在该会话进程下的其他所有进程停止工作。如果工作中需要执行某个重要的程序(例如数据库的备份操作),该程序又可能需要执行很久,那么就可以使用会话管理工具将会话与进程解绑。

3.1 pstree进程树

安装pstree命令:

ubuntu:
apt-get - install psmisc

rocky:
yum -y install psmisc

常用选项:

-p  #显示进程

范例:

2-linux基础入门_bash_25

3.2 screen

安装screen:

ubuntu:
apt update && apt install -y screen

centos:
yum install -y screen

screen常见用法:

screen -S SESSION		#创建新会话
screen -x SESSION 	#加入会话
screen -ls					#列出所有会话
Ctrl+a,d						#剥离当前会话
exit								#退出并关闭会话
3.3 tmux

安装tmux:

ubuntu:
apt update && apt install -y tmux

centos:
yum install -y tmux

tmux常见用法:

tmux new -s <session-name>						#创建新会话
tmux attach -t <session-name>					#加入会话
tmux ls																#列出所有会话
tmux detach														#剥离会话
tmux kill-session -t <session-name>		#退出并关闭会话

tmux的窗格管理:

首先输入tmux命令

上下分窗格
ctrl+b,"

左右分窗格
ctrl+b,%

窗格快捷键
ctrl+b,;	#光标切换到上一个窗格
ctrl+b,o  #光标切换到下一个窗格
ctrl+b,{	#光标切换到左一个窗格
ctrl+b,}	#光标切换到右一个窗格
ctrl+b,x  #关闭当前窗格
ctrl+b,z	#当前窗格全屏显示,再按一次会变回原来的模样

4 输出格式化

4.1 echo

功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后换行。

echo的常见选项:
	-n	#输出完成后不换行
  -e	#转义特定的字符

使用echo -e给字符串上色:

常用格式:
"\033[1;字体颜色;特效m字符串\033[0m"

#1表示加粗
#字体颜色范围: 30--37

范例:

echo -e "\e[1;31mhello linux\e[0m"

2-linux基础入门_重启_26

4.2 printf

后面结合awk学习

5 Linux帮助

5.1 命令帮助
  • 查看命令的基本作用
whatis
  • 内部命令详细帮助
help CMD
  • 外部命令详细帮助
CMD --help
  • 命令手册
man CMD
quit	#退出man手册
  • info手册(很少用)
info
5.2 软件帮助
  • 安装好的软件在系统中一般会提供帮助文档
软件常见帮助文档路径:
/usr/share/doc
/usr/share/man
  • 官方网站中提供的在线帮助文档
例如:
nginx的官方文档:
https://nginx.org/en/docs/

tomcat的官方文档:
https://tomcat.apache.org/tomcat-11.0-doc/index.html
  • 相关技术网站搜索帮助
5.3 TLDR(了解)

安装tldr(注意:由于TLDR项目需要从国外的GitHub网站上下载,所以没有vpn极大概率会失败)

apt install -y python3-pip
echo "185.199.109.133 raw.githubusercontent.com"  >> /etc/hosts
pip3 install tldr

2-linux基础入门_重启_27