linux 云课堂笔记day2

创建连接

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  :也可以

你可能感兴趣的:(python,数据分析,linux)