当前位置: 首页 > news >正文

【Linux】 shell 学习汇总[转载]

转载地址:https://blog.csdn.net/baidu_33718858/article/details/81453835

一些平时使用过程中的知识点积累,来源都附上了博客,添加了一些自己的总结。

感触:linux命令用熟了相当提高工作效率,有时候用Python写十几行代码,Linux一行命令搞定~

1.Linux下的date命令

Linux下date命令,格式化输出,时间设置_debian 设置date默认输出格式-CSDN博客

2.Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义

http://blog.51cto.com/dadekey/119938 

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$1 是传递给该shell脚本的第一个参数

$2 是传递给该shell脚本的第二个参数

$@ 是传给脚本的所有参数的列表

$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个

$$ 是脚本运行的当前进程ID号

$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

3.basename命令

http://man.linuxde.net/basename

basename只会显示文件名,不会带上目录。

4.ps -ef 和 ps aux的区别

Linux下ps -ef和ps aux的区别及格式详解 - 520_1351 - 博客园

输出格式不同,都是用来查看进程。

5.awk 命令详解

[转]linux awk命令详解 - 旭东的博客 - 博客园

Awk使用案例总结(运维必会)_51CTO博客_awk使用方法

$ awk '!a[$0]++' file  删除重复行

awk在文件中插入一列数据。

使用awk或者sed命令在文件中插入列_FlyintheWind_新浪博客

NR表示现在读的行数,NF表示列数

awk只输出偶数行 awk '!(NR%2)' file1 > file2

awk只输出奇数行 awk 'NR%2' file1 > file2

6.source 命令,以及与./, sh 的区别

linux里source、sh、bash、./有什么区别 - pcat - 博客园

7.if命令中-a到-z的意思

shell下if命令中-a~-z意思_shell -a -lt-CSDN博客

[-s FILE] 存在且大小不为0

[-f FILE] 存在且是一个普通文件

[-z STRING ] “STRING” 的长度为零则为真。

8.crontab定时任务

http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html

Linux crontab命令小结-CSDN博客

crontab -l 可以查看参数

linux之crontab定时执行命令走过的坑坑-CSDN博客 (总结了一些crontab下运行不正常的情况)

9.vim的一些命令

不显示行号: :set nonu

显示行号::set nu

粘贴不会乱格式::set paste, 然后按i进入编辑模式,再粘贴

vim中如何全选: ggVG 可以全部选中。 

来自 vim实现全选功能_gvim批量选中-CSDN博客 

gg 让光标移到首行,在vim才有效,vi中无效 
V   是进入Visual(可视)模式 
G  光标移到最后一行

中内容以后就可以其他的操作了,比如: 
d  删除中内容 
y  复制中内容到0号寄存器 
"+y  复制中内容到+寄存器,也就是系统的剪贴板,供其他程序用

10.wget命令和其一些参数

每天一个linux命令(61):wget命令 - peida - 博客园

wget ftp://xxx -O filename 表示将get下来的文件输出到filename中。

11.sleep 休眠

Linux sleep命令 | 菜鸟教程

12.vim 的一些快捷键,这些都要记住,真的是非常常用了!

Vim快捷键分类 - 豪情 - 博客园

    0: 跳转到行首。
    $: 跳转到行尾。

:g/\[/s// 全局替换

13.shell中循环遍历字符串数组,感觉shell的语法确实很奇特呀

shell script循环遍历字符串数组_shell 遍历字符串-CSDN博客 (试了第一种方法,有效,感觉比较方便)

数组中的值不可以用逗号分隔!!!

自己的代码,需要判断指定文件中是否包含要检测的字符串:

14. shell中的引号,尤其注意双引号和反引号。

Linux Shell之echo,变量_shell echo 变量-CSDN博客

15.sed从某行开始读到文件尾。

sed -n '674393, $p' file1 > file2

$p 表示到文件尾。

16.tail命令,

从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 

每天一个linux命令(15):tail 命令 - peida - 博客园 (这个博客蛮好的,每天都会推送一个linux命令)

17.查找某个文件夹下包含给定字符串的某一文件,一般用来扫代码。

find . | xargs grep -ri "给定字符串" -l

-l 表示只打印出文件名

linux查找目录下的所有文件中是否含有某个字符串_linux查询不包含数字-CSDN博客 (这个博客里面讲了正则、find、xargs、以及grep的一些知识点)

xargs主要是为了防止参数过长溢出。

find . -name '*.py' | xargs grep 'xxx' -l  

查询此目录下的所有.py文件中包含'xxx'的文件名。

find的各种参数:

xargs的作用和一些参数:

Linux基础:xargs命令 - 程序猿小卡 - 博客园 (xargs的命令详解)

在linux上批量删除空文件

http://www.111cn.net/sys/linux/46433.htm (这篇博客讲了删除文件的很多情景下的命令)

find -type f -size 0c | xargs -t rm -f

-t是为了将命令打印出来看

find -type f -size 0c | xargs -t -n2 rm -f

可以用-nx(x为参数的最大数量)对参数进行分组,比如上述例子最大参数为2,防止查找出来的文件数量太多,导致的错误。

不加-n默认参数为传进来的所有文件。

18.查看某文件的修改时间

在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间_文件访问时间和修改时间是一样的吗-CSDN博客 (此博客讲了好几个查看的方法,亲测有效)

通过stat filename.txt来查

19.linux下执行某个脚本,希望打印异常信息在屏幕上,而不是log中。可以使用 sh -x filename。

执行命令的一些参数:

-n 只读取shell脚本,但不实际执行
-x 进入跟踪方式,显示所执行的每一条命令
-c "string" 从strings中读取命令

“-n”可用于测试shell脚本是否存在语法错误,但不会实际执行命令。在shell脚本编写完成之后,实际执行之前,首先使用“-n”选项来测试脚本是否存在语法错误是一个很好的习惯。因为某些shell脚本在执行时会对系统环境产生影响,比如生成或移动文件等,如果在实际执行才发现语法错误,您不得不手工做一些系统环境的恢复工作才能继续测试这个脚本。

“-c”选项使shell解释器从一个字符串中而不是从一个文件中读取并执行shell命令。当需要临时测试一小段脚本的执行结果时,可以使用这个选项,如下所示:
sh -c 'a=1;b=2;let c=$a+$b;echo "c=$c"'

"-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。

来自 IBM Developer (讲得蛮好的)

20.touch命令可以创建新文件

touch fileA,如果fileA存在,使用touch命令可更改这个文件或目录的日期时间,包括存取时间和更改时间;如果fileA不存在,touch命令会在当前目录下新建一个空白文件fileA。

学习Linux二(创建、删除文件和文件夹命令) - 飝兒 - 博客园 (这个博客记录了一下linux的常用命令以及参数解析)

21.查看一个文件的前15行的第一列

head -15 文件名 | awk '{print$1}'

head命令可以打印出了最后M行以外的所有的行

head -n -5 file 打印出了最后5行以外的所有行。

head -n 5 file 打印第1-5行。

awk,sed,grep 常记心中。

复制中file1的1-50行放到file2中。

sed -n '1,50 p' file1 > file2

将文本中的两行变成一行。用sed和awk实现将文本中的上下两行合并为一行_sed 多个空行合并成一个-CSDN博客

22. wc 命令详解

每天一个linux命令(40):wc命令 - peida - 博客园

非常常用的命令啦~ 意思是word count

23.grep命令详解

这个也是很基本的一个命令了,要对grep非常敏感,了解他的各项参数,可以完成各种针对文件内容的查询。

配合find使用,可以批量对文件进行grep操作,扫代码的时候非常管用。

每天一个linux命令(39):grep 命令 - peida - 博客园

我认为比较常用的一些参数:(来自《linux shell 脚本攻略》这本书)

grep word filename --color=auto (可以高亮找到的内容)

egrep "[a-z]+" filename 等价于 grep -E "[a-z]+" filename (正则匹配)

grep -v match_pattern file (打印除包含match pattern 之外的所有行, -v可以将匹配到的结果进行反转)

grep -c word file (打印出来匹配行的数量)

grep -n word file (显示行号)

-A<显示行数>   --after-context=<显示行数>   #除了显示符合范本样式的那一列之外,并显示该行之后的内容。

-B<显示行数>   --before-context=<显示行数>   #除了显示符合样式的那一行之外,并显示该行之前的内容。 

还有查找进程的时候,也常用grep

24. seq命令用于产生从某个数到另外一个数之间的所有整数。

http://man.linuxde.net/seq

25. iconv 用来转换文件的编码方式

iconv命令详解 - leezhxing - 博客园

26. linux中的&,&&,|,||, >, &>介绍

&  表示任务在后台执行,如要在后台运行redis-server,则有  redis-server & (后台执行,常用哦,代码后台跑着,就可以收拾书包回家了,之后可以用ps -ef|grep xx 查询进程)

&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2'   (常用哦,在写脚本,或者添加到crontab中时常用)

| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l (常用哦)

|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail" (暂时还没用到)

>只能将正常信息重定向(非常常用)

&>可以将错误信息或者普通信息都重定向输出。(没有用过)

27. sort 命令,可针对文本文件的内容,以行为单位来排序。

linux sort 命令详解(看完你就会sort用法了)_Lisp的运维之路的技术博客_51CTO博客

sort的-u, 在输出行中去除重复行。

sort提供了-t选项,后面可以设定间隔符。-k来指定列数。

sort -r 降序排列

sort -o 输出到指定文件

由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。

但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。使用-o完美解决。

sort -n 按照数值来排序

sort -bd txt  -b 可以忽略文件中的前导空白行,-d用于指明以字典序进行排序。

如果要使用uniq,必须先对文件进行sort排序。

uniq -u sorted.txt 只显示在文件中唯一的行。

uniq -c 统计各行在文件中出现的次数。

uniq -d 找出文件中重复的行。

28.linux 下如何将个服务器上的文件或者文件夹复制到另一台服务器上

scp命令  scp 文件名 用户名@计算机IP或者计算机名称:远程路径

linux 将一个服务器上的文件或者文件夹复制到另一台服务器上_linux从一个服务器复制文件到另一个服务器显示无路由-CSDN博客

29.在awk中,比较数字的大小时,其实是拿字符串在比较,解决方法如下:

awk '{if($3+0>0.5+0||$4+0>0.5+0) printf $1"\t"$3"\t"$4"\n"}' result.txt 记得要在0.5后面也加上0。

统一某一列出现某个值的个数。

awk ‘BEGIN{num_1=0}{if($2==1) num_1 +=1}END{print “the num of flag1=”, num_1}’ result.txt

30.看到的一个删除大文件前n行的命令

tail -n +3 old_file > new_file

来源在这里:linux删除大文件的前n行_linux大文件 去掉前两行-CSDN博客

tail 命令打印除前M行之外所有的行

tail -n +(M+1) file

31.求文本文件的交集和差集,使用comm命令。

comm必须使用排过序的文件作为输入。记得排序!!!

comm A B 不加任何参数输出的第一列为只在A中出现的行,第二列为只在B中出现的行,第三列为A和B中相同的行,\t为定界符。

只打印两个文件的交集,删除第一列和第二列,comm A B -12

打印出两个文件中不同的行,并删除输出的空白, comm A B -3 | sed 's/^\t//'

想得到在A中有,B中没有的行,comm A B -23

想得到在B中有,A中没有的行,comm A B -13

32.最常用的ls命令

每天一个linux命令(1):ls命令 - peida - 博客园 (每天一个linux命令,这个博主好厉害,坚持~)

ls不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等。

常用参数,可以配合使用:

33. cut命令将文件进行切分。

linux之cut用法 - 东方雨中漫步者 - 博客园 (蛮详细的)

-f 表示是按照字段(files),也就是列进行切分。

cut -f 2,3 filename 显示文件的2,3列

cut -f3 --complement filename 显示文件除第3列以外的所有列。

cut -f3-5 -d ";" filename 显示文件第三至五列,-d用来指定分隔符。

还可以选择下面两个参数。

字节(bytes),用选项-b

字符(characters),用选项-c

34、光标移动行头行尾

      CTL+A 移动行头   CTR+E行尾

35、查看进程侦听的端口和PID 名称

查看进程和侦听端口
netstat -tunlp
 

36、http访问命令

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

curl -I https://xxx.com  

curl https://xxx.com    -k 忽略证书问题

wget http://www.xxx.com 访问这个地址

37. sed替换文本

   sed 's/10.99.204.138/47.109.77.22:444\/base/g' dashboardv2.7.0.yaml  > dashboardv2.7.0- new.yaml

  把dashboardv2.7.0.yaml 文件中的10.99.204.138 全部替换 47.109.77.22:444/base 生成一个新文件dashboardv2.7.0- new.yaml

38. 查看容器里面的iptables信息

nsenter --target <container_pid> --net -- iptables -L -v -n


http://www.mrgr.cn/news/74893.html

相关文章:

  • STM32F1学习——PWM波(OC输出比较)
  • python文件命名,不注意容易出错
  • SpringCloud篇(微服务)
  • HTML之表单学习记录
  • 【JAVA】正则表达式中的中括弧
  • Vue 学习随笔系列十四 -- JavaScript巧妙用法
  • Spark读MySQL数据rdd分区数受什么影响,读parquet、hdfs、hive、Doris、Kafka呢?
  • 接口自动化环境搭建
  • 连接数据库导出数据库信息支持excel pdf html markdown
  • 03 P1314 [NOIP2011 提高组] 聪明的质监员
  • 群控系统服务端开发模式-应用开发-前端角色功能开发
  • AI界盛会来袭!高录用EI会议(IS-AII 2025)你绝不能错过!
  • 【B+树特点】
  • Aippyy如何写论文?ai人工智能写作哪家好?
  • java项目-jenkins任务的创建和执行
  • DasViewer可以批量加载osgb格式文件吗?
  • C++初阶:类和对象(上)
  • Fiddler安装配置+抓包手机
  • Javascript 判断数据类型
  • IDEA中创建多模块项目步骤
  • 【2025国考|考公资料】轻松备考:你的公职考试全攻略,快速提升通过率!
  • 【实战场景】企业敏感词拦截如何实现?怎么避免员工发送违规词?这个方法大可一试!
  • 原型设计救星降临:深度解析5款超燃原型工具
  • 高端定制网站是什么样的?推荐几家优质网站建设公司!
  • [【comfyui教程】ComfyUI]Flux:非常好用的自定义多区域提示插件,精确绘图,多风格融合出图!
  • qt QCamera详解