day17 linux 2

day17 linux 2

1.history指令 - 获取历史记录(指令的历史记录)

如果想要显示历史记录的时候显示出执行的时间

则需要

1.修改:~/.bashrc 文件:

export HISTTIMEFORMAT="[%y-%m-%d_%T]”

2.修改完成之后执行指令:

source ~/.bashrc

历史记录的时间才会生效。

如果今天才配置的话那么今天之前的时间记录是没有的。

2.创建连接

1)创建软连接

ln -s 源文件路径 软连接文件地址 - 给源文件在指定位置创建一个软连接(软连接本质就是用来保存源文件绝对地址的一个文件,可以理解为Windows中的快捷方式)

注意:源文件路径必须要写绝对路径

如果删除或者移动源文件,那么软连接就会直接无效

请添加图片描述

2)创建硬连接

ln 源文件路径 硬连接文件地址 - 给源文件在指定位置创建一个硬连接

硬连接的本质就是源文件内容的另一个引用,所以删除或者移动源文件硬连接仍然有效,只是删除,硬连接会变成普通文件

对文件进行硬连接之后,对其中任何一个文件进行修改内容,那么硬连接中的各个文件内容都会进行修改。

3.日志管理

1)显示文件内容

  1. cat指令 - 直接显示文件中的所有内容

cat 文件 - 直接查看文件所有内容

在查看文件内容的时候可以加上参数 -n ,让内容在显示的时候显示出行号。

b. 查看部分内容

head -n 行数 - 显示文件的前n行

head -n - 显示文件的前n行

c. 分页显示

less 文件 - 按页显示文件内容(通过快捷键控制内容显示过程;文件内容不会打印到shell/终端里)

less -N 文件 - 按页显示文件内容,每次翻页的时候翻N行

more 文件 - 按页显示文件内容(通过快捷键控制内容显示过程;文件内容会打印到shell/终端里)

more -N 文件 - 按页显示文件内容,每次翻页的时候翻N行。

快捷键:

按 j 向下一行

按 K 向上一行

按 f 向下翻一页

按 b 向上翻一页

按 g 到全文开头

按 G 到全文结尾

按 Q 退出

2)结果的处理

凡是有打印结果的指令,我们都可以通过相关指令对应结果进行处理。

有结果的指令 | 处理方式

a. 管道

如果需要对某一个指令的结果使用另外的指令进行二次处理,则需要用到管道。

例如:

cat a.txt | sort # 对a.txt的文件内容从小到大排序显示。

b. sort

从小到大排序将一行内容作为一个字符串,按字符串大小对应内容进行排序,默认不区分大小写)

参数:

-r - 逆序

-nk 1 - 数值大小排序

-nk 2 - 字符大小排序(默认)

cat a.txt | sort -nk 1 # 对a.txt文件内容按数字大小从小到大排序。

cat a.txt | sort -rnk 1 # 对a.txt文件内容按数字大小从大到小排序。

cat a.txt | sort -nk 2 # 对a.txt的文件内容按字符大小从小到大排序(默认)

cat a.txt | sort -rnk 2 # 对a.txt的文件内容按字符大小从大到小排序(默认)

字符串比较大小的规则:比较第一段不相等字符的大小
字符比较大小的规则:比较的是字符的编码值的大小
编码值:
计算机只能保存数字(数字在计算机中的存储方式:二进制补码)
为了能够让计算机存储文字符号,给每个符号绑定了一个固定的数字每次需要符号的时候,就存储这个符号对应的那个数字。(符号对应的数字就是这个符号的编码值)
编码表 (保存和记录了符号和数字之间的对应的关系):
ASCII码表
Unicode码表

c. uniq

去重

uniq - 只能将紧挨着的相同行去掉重复(如果想要去掉所有的重复的行,则需要先排序将相同的行放到一起)

请添加图片描述

cat a.txt | uniq # 去掉a.txt文件内容中相邻重复的行

cat a.txt | sort | uniq # 去掉a.txt文件内容中所有重复的行

uniq的参数:

c - 重复次数

d. awk

获取列

awk ‘{print $N}’ - 获取内容中第N列的数据 N为列号

history | awk '{print $2}' # 获取历史记录第2列的内容

history | awk '{print $2,$3}' # 获取历史记录第2列和第3列的内容

练习:

history |awk '{print $3}' |sort |uniq ‐c | sort ‐rnk 1 | head ‐n 3    # 统计最常用的3个指令及其使用次数

3) 输出重定向 - > / >> (将指令的打印结果保存到文件中)

(执行有打印结果的指令 > 文件地址 ) - 将指定指令执行的结果保存到指定文件中(先清除原文件内容再添加)

(执行有打印结果的指令 >> 文件地址) - 将指定指令执行的结果保存到指定文件中(直接将结果追加到原文件中)

history > a.txt     #将当前历史记录直接保存到a.txt文件中

# 练习:将最常用的3个指令及其使用次数保存到a.txt文件中
history |awk '{print $3}' |sort |uniq ‐c | sort ‐rnk 1 | head ‐n 3 > a.txt  

请添加图片描述

4)统计

wc -c/-w/-l 文件地址 - 统计指定文件中字符/单词/行的数量 (注意:统计字符数量的数,会比实际的字符数多1,多的\0这个字符串结束标志)

有打印结果的指令 | wc -c/-w/-l

5)查找

grep - 找内容

a. grep 内容 文件地址 - 在指定文件中查找指定内容(返回文件中所有包含指定内容的行)

grep you a.txt    # 获取a.txt中包含you的所有的行

grep的参数:
-n      - 显示结果的时候显示行号
-i      - 查找内容的时候忽略大小写
-E      - 按正则表达式进行匹配   
		  使用方法: grep -E '正则表达式' 文件
		  注意: Linux操作系统中正则表达式不支持:\d,\D,\w,\W,\s,\S,\b,\B; 其他语法都支持
-v      - 忽略字段
		  grep you a.txt  -v  # 获取a.txt中不包含you的所有的行

b. 执行有打印结果的指令 |grep 内容 - 在指令执行结果中查找指定内容

c. grep -r 内容 文件夹地址 -在指定文件夹中所有的文件中查找指定内容

find - 找文件

find 文件夹路径 -name 文件名 - 在指定文件夹下按文件名找指定文件

# 找指定文件名
find dir1 -name 'test1.py'      # 在文件夹dir1找名字是test1.py的文件
find dir1 -name '*.txt'         # 在文件夹dir1找后缀是txt的所有文件
find dir1 -name 'test*.txt'
find dir1 -name 'test*'
find dir1 -name '*c.txt'

find 文件夹路径 -size +/-文件大小 - 在指定文件夹下找文件大小满足条件的所有的内容(包含文件和文件夹)

find dir1 -size +4k       # 查找在文件夹dir1中所有大于4k的文件
find dir1 -size -4k       # 查找在文件夹dir1中所有小于4k的文件
find dir1 -size +5k -size -10k  # 查找在文件夹dir1中所有大于5k并且小于10k的文件(文件大小如果是小数,算的时候向上取整)
find dir1 -size +4k -name '*.txt'   # 查找在文件夹dir1中所有大于4k的txt文件
压缩和归档

压缩可以让文件变小,一般在需要传输前都会先对文件进行压缩。注意,压缩指令只针对文件有效,并且一次只能压缩一个文件。

归档可以将一个文件夹变成一个文件(tar文件)

1)归档和解归档 - tar

tar -cvf 归档文件地址 需要归档的原文件夹地址 - 将文件进行归档操作(既可以对文件进行归档也可以对文件夹 归档)

tar -xvf 需要解归档文件地址 - 将指定的归档文件解归档

2)压缩和解压: gzip,gunzip,xz
a.gzip

gzip 文件地址 - 压缩指定文件(压缩后会生成一个gz文件,并且会删除原文件)

gzip -c 文件地址 > 压缩文件地址 - 将指定文件压缩指定位置,并且保留原文件

gzip -d 压缩文件地址 - 解压指定文件(解压完成后会删除原压缩文件,解压后的文件直接放在被解压的压缩文件所在的位置)

gzip -l 压缩文件地址 - 列出压缩文件中的内容

b.gunzip(解压tgz文件)

gunzip 压缩文件地址 - 解压指定文件(解压完成后会删除原压缩文件)

c.xz

xz 文件地址 - 压缩指定文件(压缩文件后缀是xz)

xz -d 压缩文件地址 - 解压指定文件

1.源代码构建python3.x
[root ~]# rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps (移除旧版本Python)
[root ~]# whereis python3 |xargs rm -frv		(删除所有剩余文件)
[root ~]# yum install gcc     (安装编译环境)
[root ~]# wget https://www.python.org/ftp/python/3.9.13/Python-3.9.13.tgz   (下载安装包)
[root ~]# gunzip Python-3.9.13.tgz     (解压)
[root ~]# tar -xvf Python-3.9.13.tar    (解归档)
[root ~]# cd Python-3.9.13            (进入安装包)
[root ~]# ./configure --prefix=/usr/local/python39  (设置安装路径)
[root ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel    (安装相关依赖库)
[root ~]# make && make install       (编译执行安装文件)
...
[root ~]# ln -s /usr/local/python39/bin/python3.9 /usr/bin/python3      (给python指令文件创建快捷方式python3)
[root ~]# python3 --version
Python 3.9.16
[root ~]# ln -s /usr/local/python39/bin/pip3 /usr/bin/pip3      (给pip指令创建快捷方式pip3)
[root ~]# pip3 --version
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值