linux 云课堂笔记day2

发布时间:2024年01月10日

创建连接

1.创建软连接

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

注意: **源文件路径必须写绝对路径**如果删除或者移动源文件,软连接会直接无效

ln -s? TARGET, LINK_NAME :创建软连接。 ln -s 后面先加上目标文件的绝对路径, 再加上你给这个软连接新取的名字。

举例:ln -s /root/f/t/u/geci.txt Love?

分析:? ln -s + /root/f/t/u/geci.txt (绝对路径) + (我给软连接取的名字 Love)

移动到f/t/y中:mv Love f/t/y? ? ?移动回去 mv f/t/y/Love ~

删除软连接的方法:?unlink link name

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? rm link name

2.创建硬连接

定义:硬连接是将源文件内容复制一份,不是储存源文件地址。源文件删除,硬连接仍然可用,源文件和硬连接有改动的话会同步改动。

ln 绝对路径 命名? : ln /root//f//t//u/geci.txt Hlove??

解释: ln + 目标的绝对路径(/root//f//t//u/geci.txt)+?Hlove (自己的命名)

日志管理

查看部分内容

1. cat shell编程.md? :直接打开shell编程这个文件内容

2.?cat shell编程.md -n : 打开文件内容时显示每一行的行号

3. head -6 shell编程.md : 展示文件前6行内容

4.?tail -6 shell编程.md : 展现文件尾部6行

5.?cat shell编程.md|head -6, cat shell编程.md|tail -30, ls -lt|head -6 :?

| 是管道符号,后面接head -6, tail -6?

分页显示

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

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

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

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

```
快捷键:

- 按 j 向下一行

- 按 k 向上一行

- 按 f 向下翻一页

- 按b 向上翻一页

- 按 g 到全文开头

- 按 G 到全文结尾

- 按 Q 退出?

结果的处理

a. 管道 - |

b.sort? 排序

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

举例:?cat 3.txt|sort :将3.txt 的内容按照字符串从小到大排序

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的文件内容按字符大小从大到小排序

cat 1.txt|sort -nk 1 (数字从小到大)
5 dog
12 apple
32 elegent
233 banana
4433 cat
555334 fat

cat 1.txt|sort -nk 2 (字符排序 首字母)

12 apple
233 banana
32 elegent
4433 cat
555334 fat
5 dog

uniq ? ?

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

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

uniq的参数
-c ? ? - 重复次数

举例:cat 1.txt|uniq? (直接使用只会去重相邻的行)

12 apple
233 banana
4433 cat
5 dog
5 dog? (会把这行去除)
32 elegent
555334 fat??

注意

如何去除不相邻的行呢?

先进行排序操作,再进行去重:?cat 1.txt|sort|uniq?

cat 1.txt|sort|uniq -c : -c 是count 计数 告诉我每个词出现的次数

awk ?- 获取列

ls -lh | awk '{print $4,$2}'? : 取第四列和第二列(取多列就加逗号隔开)

练习:统计目前为止使用频率最高的三个指令,及其使用的次数

history |awk '{print$3,$4}'|sort|uniq -c|sort -rnk 1|head -3

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

history |awk '{print $3,$4}' |sort|uniq -c|sort -r -nk1|head -n3 > b.txt? : 将指令结果放在b.txt 文件中?

history |awk '{print $3,$4}' |sort|uniq -c|sort -r -nk1|head -n3? >>?b.txt :

>> 和 > 的区别是 如果源文件有内容的话 , > 会删除源文件内容, 再加入新的数据

>> 则是 将新的数据直接放在源文件内容之后?

?

统计

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

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

wc - word count?

wc -c 1.txt :? 统计bytes 字节数

wc -w 1.txt? ?统计字数 words

wc -l 1.txt? 统计行数lines

ls -lh | wc -l : 也可以作为管道使用?

查找?

###### grep ? - 找内容

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

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

grep的参数:
-n ? ? ?- 显示结果的时候显示行号?
-i ? ? ?- 查找内容的时候忽略大小写? i for ignore case?
-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 ? ?文件名 ? ? - ?在指定文件夹下按文件名找指定文件

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

find dir1 -name '*c*.*'? ? ? ? ? #在文件夹dir1下找到文件名中带有c的文件

```

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

```shell
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文件
```
?

在指定文件夹中找出txt 文件的个数

find ~ -name '*.txt'|wc -l : 先找到根目录下所有txt文件,然后计算行数

严谨点可以去重:find ~ -name '*.txt'|sort|uniq|wc -l

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? find ~ -name '*.txt'|sort|uniq|cat -n? ?这样写可以在前面加上行号

? ? ? ? ? ? ? ? ? ? ? ? ? ? ls |grep .txt| wc -l? :也可以

文章来源:https://blog.csdn.net/weixin_46659095/article/details/135471837
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。