目 录CONTENT

文章目录

Linux 笔记

lionkliu
2022-08-31 / 0 评论 / 1 点赞 / 82 阅读 / 9,954 字

1、 基本命令

1.1 帮助命令

xxx --help 命令
shutdown --help:
ifconfig  --help:查看网卡信息
  
man命令(命令说明书) 
man shutdown
#man shutdown打开命令说明书之后,使用按键q退出

1.2 查看历史记录history

参数:

  • -N: 显示历史记录中最近的N个记录;
  • -c:清空当前历史命令;
  • -a:将历史命令缓冲区中命令写入历史命令文件中;
  • -r:将历史命令文件中的命令读入当前历史命令缓冲区;
  • -w:将当前历史命令缓冲区命令写入历史命令文件中;
  • -d<offset>:删除历史记录中第offset个命令
  • -n<filename>:读取指定文件

1.3 显示当前目录pwd

[root@localhost ~]# cd /var/mail
[root@localhost mail]# pwd
/var/mail

1.4 重启、关机

shutdown -h now        #立刻关机
shutdown -h 5          #5分钟后关机
poweroff               #立刻关机

shutdown -r now        立刻重启
shutdown -r 5        5分钟后重启
reboot                立刻重启

2、 文件操作命令

2.1 文件的增,删,改,查

创建、复制文件touch

移动、重命名文件 mv

删除文件 rm

查看文件cat less tail more

查找文件、目录 find locate

过滤文本grep

创建链接ln

显示文件类型 file

分割文件 split

文本操作awk sed

3、目录操作命令

3.1 目录切换 cd

cd /        切换到根目录
cd /usr        切换到根目录下的usr目录
cd ../        切换到上一级目录 或者  cd ..
cd ~        切换到home目录
cd -        切换到上次访问的目录

3.2 目录查看 ls [-al]

参数:

  • -a:查看当前目录下的所有目录和文件(包括隐藏的文件)
  • -l:列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)
ls               #查看当前目录下的所有目录和文件
ls -a            #查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l 或 ll      #列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)
ls /dir          #查看指定目录下的所有目录和文件   如:ls /usr

3.3 查看目录树tree

3.4 目录的增,删,改,查

创建目录 mkdir

mkdir    aaa         #在当前目录下创建一个名为aaa的目录
mkdir    /usr/aaa    #在指定目录下创建一个名为aaa的目录

删除目录 rm [-rf]

option:

  • -r:递归删除
  • -f:强制删除
rm aaa       #删除当前目录下的文件
rm -f aaa    #删除当前目录的的文件(不询问)

rm -r aaa    #递归删除当前目录下的aaa目录
rm -rf aaa   #递归删除当前目录下的aaa目录(不询问)

rm -rf *     #将当前目录下的所有目录和文件全部删除
rm -rf /*    #将根目录下的所有文件全部删除(删库跑路做局子必备!)

修改目录 mv 和 cp

查找目录 find

4、解压缩文件操作

打包和压缩区别?

归档,也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和。

压缩是指利用算法将文件进行处理,已达到保留最大文件信息,而让文件体积变小的目的。其基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。

4.1 tar

打包

选项 含义
-c 将多个文件或目录进行打包。
-A 追加 tar 文件到归档文件。
-f 包名 指定包的文件名。包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
-v 显示打包文件过程

解打包

选项 含义
-x 对 tar 包做解打包操作。
-f 指定要解压的 tar 包的包名。
-t 只查看 tar 包中有哪些文件或目录,不对 tar 包做解打包操作。
-C 目录 指定解打包位置。
-v 显示解打包的具体过程。
tar [选项] 源文件或目录

tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg
#把anacondehks.cfg打包为 anacondehks.cfg.tar文件
tar -xvf anaconda-ks.cfg. tar
#解打包到当前目录下

4.2 zip/unzip

zip [选项] 压缩包名 源文件或源目录列表
#压缩文件
zip test.zip install.log install.log.syslog
#压缩目录
zip -r dir1.zip dir1
选项 含义
-r 递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩。
-m 将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。
-v 显示详细的压缩过程信息。
-q 在压缩的时候不显示命令的执行过程。
-压缩级别 压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
-u 更新压缩文件,即往压缩文件中添加新文件。
# unzip [选项] 压缩包名
# unzip dir1.zip
# -d 选项手动指定解压缩位置
 unzip -d /tmp/ ana.zip
选项 含义
-d 目录名 将压缩文件解压到指定目录下。
-n 解压时并不覆盖已经存在的文件。
-o 解压时覆盖已经存在的文件,并且无需用户确认。
-v 查看压缩文件的详细信息,包括压缩文件中包含的文件大小、文件名以及压缩比等,但并不做解压操作。
-t 测试压缩文件有无损坏,但并不解压。
-x 文件列表 解压文件,但不包含文件列表中指定的文件。

4.3 gzip/gunzip

gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为“.gz”。gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。

[root@localhost ~]# gzip [选项] 源文件
#保留源文件压缩。
gzip install.log
gzip -c anaconda-ks.cfg >anaconda-ks.cfg.gz
#使用-c选项,但是不让压缩数据输出到屏幕上,而是重定向到压缩文件中,这样可以缩文件的同时不删除源文件

[root@localhost ~]# mkdir test
[root@localhost ~]# touch test/test1
[root@localhost ~]# touch test/test2
[root@localhost ~]# touch test/test3 #建立测试目录,并在里面建立几个测试文件
[root@localhost ~]# gzip -r test/
#压缩目录,并没有报错
[root@localhost ~]# ls
[root@localhost ~]# test
#但是查看发现test目录依然存在,并没有变为压缩文件
[root@localhost ~]# ls test/
testl.gz test2.gz test3.gz
#原来gzip命令不会打包目录,而是把目录下所有的子文件分别压缩
选项 含义
-c 将压缩数据输出到标准输出中,并保留源文件。
-d 对压缩文件进行解压缩。
-r 递归压缩指定目录下以及子目录下的所有文件。
-v 对于每个压缩和解压缩的文件,显示相应的文件名和压缩比。
-l 对每一个压缩文件,显示以下字段:压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名称。
-数字 用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高。默认压缩比是 -6。

gunzip 是一个使用广泛的解压缩命令,它用于解压被 gzip 压缩过的文件(扩展名为 .gz)。

[root@localhost ~]# gunzip [选项] 文件

[root@localhost ~]# gunzip install.log.gz

#解压缩目录下的内容
[root@localhost ~]# gunzip -r test/

选项 含义
-r 递归处理,解压缩指定目录下以及子目录下的所有文件。
-c 把解压缩后的文件输出到标准输出设备。
-f 强制解压缩文件,不理会文件是否已存在等情况。
-l 列出压缩文件内容。
-v 显示命令执行过程。
-t 测试压缩文件是否正常,但不对其做解压缩操作

4.4 bzip2/bunzip2

bzip2 命令同 gzip 命令类似,只能对文件进行压缩(或解压缩),对于目录只能压缩(或解压缩)该目录及子目录下的所有文件。当执行压缩任务完成后,会生成一个以.bz2为后缀的压缩包。

.bz2格式是 Linux 的另一种压缩格式,从理论上来讲,.bz2格式的算法更先进、压缩比更好;而 ".gz"格式相对来讲的时间更快。

gzip 只是不会打包目录,但是如果使用“-r”选项,则可以分别压缩目录下的每个文件;而 bzip2 命令则根本不支持压缩目录,也没有“-r”选项。gzip 只是不会打包目录,但是如果使用“-r”选项,则可以分别压缩目录下的每个文件;而 bzip2 命令则根本不支持压缩目录,也没有“-r”选项。

[root@localhost ~]# bzip2 [选项] 源文件

#压缩成".bz2"格式, 压缩的同时删除源文件
[root@localhost ~]# bzip2 anaconda-ks.cfg
#压缩的同时保留源文件。
[root@localhost ~]# bzip2 -k install.log.syslog

选项 含义
-d 执行解压缩,此时该选项后的源文件应为标记有 .bz2 后缀的压缩包文件。
-k bzip2 在压缩或解压缩任务完成后,会删除原始文件,若要保留原始文件,可使用此选项。
-f bzip2 在压缩或解压缩时,若输出文件与现有文件同名,默认不会覆盖现有文件,若使用此选项,则会强制覆盖现有文件。
-t 测试压缩包文件的完整性。
-v 压缩或解压缩文件时,显示详细信息。
-数字 这个参数和 gzip 命令的作用一样,用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高

要解压.bz2格式的压缩包文件,除了使用bzip2 -d压缩包名”命令外,还可以使用 bunzip2 命令。

[root@localhost ~]# bunzip2 [选项] 源文件


选项 含义
-k 解压缩后,默认会删除原来的压缩文件。若要保留压缩文件,需使用此参数。
-f 解压缩时,若输出的文件与现有文件同名时,默认不会覆盖现有的文件。若要覆盖,可使用此选项。
-v 显示命令执行过程。
-L 列出压缩文件内容。

5、查找命令

5.1 grep

grep命令是一种强大的文本搜索工具

[root@localhost ~]# ps -ef | grep sshd  查找指定ssh服务进程 
[root@localhost ~]# ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除gerp身 
[root@localhost ~]# ps -ef | grep sshd -c 查找指定进程个数 

5.2 find

find命令在目录结构中搜索文件,并对搜索结果执行指定的操作。

find 默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

find . -name "*.log" -ls  在当前目录查找以.log结尾的文件,并显示详细信息。 
find /root/ -perm 600     查找/root/目录下权限为600的文件 
find . -type f -name "*.log"  查找当目录,以.log结尾的普通文件 
find . -type d | sort   查找当前所有目录并排序 
find . -size +100M    查找当前目录大于100M的文件

5.3 locate

locate 让使用者可以很快速的搜寻某个路径。默认每天自动更新一次,所以使用locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。如果数据库中没有查询的数据,则会报出locate: can not stat () /var/lib/mlocate/mlocate.db’: No such file or directory该错误!updatedb即可!

updatedb
locate /etc/sh 搜索etc目录下所有以sh开头的文件 
locate pwd 查找和pwd相关的所有文件

5.4 whereis

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。

whereis ls    将和ls文件相关的文件都查找出来

5.5 which

which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

which pwd  查找pwd命令所在路径 
which java  查找path中java的路径 

6、系统管理命令

6.1 date 查看日期

date	
# Tue Oct 11 10:49:11 CST 2022

date "+%F %T" 
# 2022-10-11 10:51:11

date -d "+1 year" "+%F %T"
# 2023-10-11 10:52:01

# options:     
	-d "+1 year" #-d:间隔

6.2 cal 操作日历

操作日历

[root@lionkliu ~]# cal
    October 2022    
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

6.3 top 状态监视

top命令提供了实时的对系统处理器的状态监视

image-20221011102905280

  • 第1行是任务队列信息
内容 含义
10:28:15 表示当前时间
up 4:52 系统运行时间 格式为时:分
2 users 当前登录用户数
load average: 0.58, 0.41, 0.30 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

load average: 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

  • 第2行进程数分别表示:进程总数,正在运行的进程数,睡眠的进程数,停止的进程数,僵尸进程数

  • 第3行cpu使用情况分别表示:用户空间占用CPU百分比,内核空间占用CPU百分比,用户进程空间内改变过优先级的进程占用CPU百分比,空闲CPU百分比,等待输入输出的CPU时间百分比,硬件中断占cpu比例,软件中断占cpu比例,虚拟系统等待得到真正的cpu资源时间比例(如果这个值为50,表明你vm需要cpu时有一半时间在等待)。

什么是僵尸进程:简单来说就是完成了生命周期但却依然留在进程表中的那些进程,称之为 “僵尸进程”。

  • 第4行分别表示:物理内存总量,空闲内存总量,使用的物理内存总量,用作内核缓存的内存量。

  • 第5行分别表示:交换区总量,空闲交换区总量,使用的交换区总量,缓冲的交换区总量(内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入)。

什么是交换区:交换区是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是我们常说的swap out和swap in

6.4 uptime 查看系统负载

查看系统负载,和top相似,但比top更简洁

image-20221011103652274

6.5 free 查看系统内存状态

查看系统内存状态

free
free -m
free -g

6.6 wc 统计文本消息

wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

wc -l -w -c [文件名]

-c选项统计字节数,-w选项统计单词数,-l选项统计行数。

6.7 df 查看磁盘空间

查看磁盘空间,显示结果以数据块为单位

6.8 ps ⭐

ps -ef

ps -ef|grep 进程名称

6.9 service⭐

service 服务名称 start/stop/restart

service mysqld start
service mysqld stop

systemctl

6.10 id

id 用户名

useradd -m stu1 
# 创建用户

passwd stu1
# 设置密码

6.10 dd

用于复制文件并对原文件的内容进行转换和格式化处理

6.11 du

du -sh

6.12

6.13 kill

杀掉进程

查看网卡状态ifconfig

7、管道符、重定向

7.1 重定向

Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向;从字面上理解,输入输出重定向就是改变输入与输出的方向的意思。

  • 输入方向就是数据从哪里流向程序。数据默认从键盘流向程序,如果改变了它的方向,数据就从其它地方流入,这就是输入重定向。
  • 输出方向就是数据从程序流向哪里。数据默认从程序流向显示器,如果改变了它的方向,数据就流向其它地方,这就是输出重定向。

输出重定向

输出重定向是指命令的结果不再输出到显示器上,而是输出到其它地方,一般是文件中。这样做的最大好处就是把命令的结果保存起来,当我们需要的时候可以随时查询

image-20221018142622494

> file #标准输出重定向到文件—覆盖

>>file #标准输出重定向到文件—追加

2>file #标准错误重定向到文件—覆盖

2>>file #标准错误重定向到文件—追加

2>/dev/null #标准错误重定向到回收站

&>file #标准输出和标准错误重定向到文件—覆盖

>>file 2>&1 #标准输出和标准错误重定向到文件—追加

[root@lionkliu home]# date > guandao_date
[root@lionkliu home]# cat guandao_date 
Tue Oct 18 14:22:35 CST 2022
[root@lionkliu home]# date > guandao_date
[root@lionkliu home]# cat guandao_date 
Tue Oct 18 14:22:43 CST 2022
[root@lionkliu home]# date >> guandao_date
[root@lionkliu home]# cat guandao_date 
Tue Oct 18 14:22:43 CST 2022
Tue Oct 18 14:22:50 CST 2022

输入重定向

输入重定向就是改变输入的方向,不再使用键盘作为命令输入的来源,而是使用文件作为命令的输入。

符号 说明
command <file 将 file 文件中的内容作为 command 的输入。
command <<END 从标准输入(键盘)中读取数据,直到遇见分界符 END 才停止(分界符可以是任意的字符串,用户自己定义)。
command <file1 >file2 将 file1 作为 command 的输入,并将 command 的处理结果输出到 file2。
#统计文档中有多少行文字
wc -l <guandao_date

7.2 管道符

管道命令符|的作用是将左边命令的输出就变成了右边命令的输入,格式为命令A|命令B

ls | grep log.txt	#查看文件 log.txt 是否存在于当前目录下
who | wc -l 		#统计系统中当前登录的用户数。

重定向和管道的区别?

重定向操作符>命令与文件连接起来,用文件来接收命令的输出;而管道符|命令与命令连接起来,用第二个命令来接收第一个命令的输出。

8、环境变量

8.1 读取环境变量

读取环境变量的方法:

  • export命令显示当前系统定义的所有环境变量
  • echo $PATH命令输出当前的PATH环境变量的值

8.2 配置环境变量

export PATH

export PATH=/home/uusama/mysql/bin:$PATH

# 或者把PATH放在前面
export PATH=$PATH:/home/liu/mysql/bin
  • 生效时间:立即生效
  • 生效期限:当前终端有效,窗口关闭后无效
  • 生效范围:仅对当前用户有效
  • 配置的环境变量中不要忘了加上原来的配置,即$PATH部分,避免覆盖原来配置

vim ~/.bashrc

vim ~/.bashrc

# 在最后一行加上
export PATH=$PATH:/home/liu/mysql/bin
  • 生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效
  • 生效期限:永久有效
  • 生效范围:仅对当前用户有效
  • 如果有后续的环境变量加载文件覆盖了PATH定义,则可能不生效

vim ~/.bash_profile

vim ~/.bash_profile

# 在最后一行加上
export PATH=$PATH:/home/liu/mysql/bin
  • 生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bash_profile生效
  • 生效期限:永久有效
  • 生效范围:仅对当前用户有效
  • 如果没有~/.bash_profile文件,则可以编辑~/.profile文件或者新建一个

vim /etc/bashrc

该方法是修改系统配置,需要管理员权限(如root)或者对该文件的写入权限

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/bashrc

vim /etc/bashrc

# 在最后一行加上
export PATH=$PATH:/home/liu/mysql/bin
  • 生效时间:新开终端生效,或者手动source /etc/bashrc生效
  • 生效期限:永久有效
  • 生效范围:对所有用户有效

vim /etc/profile

该方法修改系统配置,需要管理员权限或者对该文件的写入权限,和vim /etc/bashrc类似:

# 如果/etc/profile文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/profile

vim /etc/profile

# 在最后一行加上
export PATH=$PATH:/home/liu/mysql/bin
  • 生效时间:新开终端生效,或者手动source /etc/profile生效
  • 生效期限:永久有效
  • 生效范围:对所有用户有效

vim /etc/environment

该方法是修改系统环境配置文件,需要管理员权限或者对该文件的写入权限

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/environment

vim /etc/environment

# 在最后一行加上
export PATH=$PATH:/home/liu/mysql/bin
  • 生效时间:新开终端生效,或者手动source /etc/environment生效
  • 生效期限:永久有效
  • 生效范围:对所有用户有效

9、vim编辑器

(1)命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。

(2)末行模式:可以保存或退出文档,以及设置编辑环境。

(3)编辑模式:可进行正常的文本录入。

9.1 启动vim

vim -c cmd file: 在打开文件前,先执行指定的命令;
vim -r file: 恢复上次异常退出的文件;
vim -R file: 以只读的方式打开文件,但可以强制保存;
vim -M file: 以只读的方式打开文件,不可以强制保存;
vim -y num file: 将编辑窗口的大小设为num行;
vim + file: 从文件的末尾开始;
vim +num file: 从第num行开始;
vim +/string file: 打开file,并将光标停留在第一个找到的string上。
vim --remote file: 用已有的vim进程打开指定的文件。 如果你不想启用多个vim会话,这个很有用。但要注意, 如果你用vim,会寻找名叫VIM的服务器;如果你已经有一个gvim在运行了, 你可以用gvim --remote file在已有的gvim中打开文件

启动vim后默认会进入命令模式,命令模式可以移动光标,删除文本等等操作。在命令模式中按 i 后进入编辑模式,在这个模式中,大多数按键都会向文本缓冲中插入文本,按ESC可以退回命令模式。在命令模式中按:(英文冒号)会进入末行模式,进行保存、退出等操作;

9.2 命令模式

操作说明 快捷键
光标移到行首 shift+6
光标移到行尾 shift+4
光标移到文件开头 gg
光标移到文件结尾 G
上一页 ctrl+b
下一页 ctrl+f
复制 yy
粘贴 p
撤销 u

9.3 编辑模式

9.4 末行模式

:w 将缓冲区写入文件,即保存修改
:q 退出
:q! 强制退出(放弃对文档的修改)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行
😒/one/two 将当前光标所在行的第一个one替换成two
😒/one/two/g 将当前光标所在行的所有one替换成two
1

评论区

// // // //