?定义:给源文件在指定位置创建一个软连接(软连接本质就是用来保存源文件绝对地址的一个文件, 可以理解为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
定义:硬连接是将源文件内容复制一份,不是储存源文件地址。源文件删除,硬连接仍然可用,源文件和硬连接有改动的话会同步改动。
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 退出?
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
- 只能将紧挨着的相同行去掉重复的(如果需要去掉所有重复的行,先排序将相同的行放到一起)
```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 计数 告诉我每个词出现的次数
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 ?文件夹路径 ?-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? :也可以