【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.xdnf.cn/news/16005.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

天云数据联手举办“科学传播沙龙”活动,探讨Sora是否会带来新的科学革命

4月18日&#xff0c;由北京市科协主办&#xff0c;北京科技记协承办&#xff0c;中关村创新研修学院、天云融创数据科技&#xff08;北京&#xff09;有限公司协办的“AIGC塑造数字内容生产新范式”科学传播沙龙在京举办&#xff0c;活动由北京市科协宣传文化部二级调研员、北京…

LlamaIndex+本地部署InternLM实践

1.环境配置 1.1 配置基础环境 这里以在 Intern Studio 服务器上部署 LlamaIndex 为例。 首先&#xff0c;打开 Intern Studio 界面&#xff0c;点击 创建开发机 配置开发机系统 填写 开发机名称 后&#xff0c;点击 选择镜像 使用 Cuda11.7-conda 镜像&#xff0c;然后在资源…

uni-segmented-control 分段器添加数量提示

1、 在 template 内写入 uni-segmented-control 基础写法 <uni-segmented-control :current"current" :values"items" :style-type"styleType" clickItem"onClickItem" activeColor"#81D8D0" />2、在 script 里面写…

Linux篇(用户管理命令)

目录 一、用户与用户组 1. 为什么要做用户与用户组管理 2. Linux的用户及用户组 2.1. Linux的多用户多任务 2.2. 什么是用户 2.3. 什么是用户组 2.4. 用户和用户组的关系 二、用户和用户组管理 1. 用户组管理 1.1. 用户组添加 /etc/group文件结构 1.2. 用户组修改 …

编程之路,从0开始:内存函数

Hello大家好&#xff01;很高兴我们又见面了。 给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 今天我们来讲C语言中的内存函数。 目录 1、memcpy内存复制 2、memmove可重叠内存拷贝 3、memset设置字符 4、memcmp比较 1、memcpy内存复制 memcpy就是内存复制…

PyCharm 中的【控制台】和【终端】的区别

pycharm专业版-使用 PyCharm 中的【控制台】和【终端】的区别如下&#xff1a; 1.环境&#xff1a;控制台是 PyCharm 的内部环境&#xff0c; 终端 是操作系统的命令行界面。 2.功能&#xff1a;控制台可以运行 Python 代码&#xff0c;并显示执行结果&#xff1b; 终端可以…

IDEA修改注释颜色—图文教程

老的注释颜色用习惯了&#xff0c;新电脑的灰色注释不习惯&#xff0c;还是喜欢黄色哈哈哈哈&#x1f923;&#x1f923;&#x1f923; Block comment &#xff1a; 多行注释 Doc comment&#xff1a;文档注释 Line comment&#xff1a;单行注释 小伙伴们可以改自己喜欢的颜色…

C++ String(2)

reserve 这个地方要和reverse区分清楚&#xff0c;reserve是保留的意思&#xff0c;而reverse是逆置的意思 reserve函数可以预先分配内存 reserve(n)代表至少保留可以容纳n个字符的空间&#xff08;具体多大和编译器有关&#xff09; 比如reserve(100)&#xff0c;代表开10…

网络基础Linux

目录 计算机网络背景 网络发展 认识 "协议" 网络协议初识 OSI七层模型 TCP/IP五层(或四层)模型 网络传输基本流程 网络传输流程图 ​编辑 数据包封装和分用 网络中的地址管理 认识IP地址 认识MAC地址 笔记&#xff08;画的图&#xff09; 协议&#x…

干货 | WiFi 7(802.11BE)技术规范详解

1 概述 1.1 简介 当前全球有近200亿的Wi-Fi设备正在使用&#xff0c;Wi-Fi已成为生活、工作中不可或缺的一部分。在实际应用中&#xff0c;Wi-Fi协议所传输无线流量&#xff0c;已占到无线总流量的90%。海量数据快速、安全传输受益于巨量Wi-Fi设备高效、安全、可靠地工作&a…

线程的状态

目录 一、线程的所有状态 二、状态转换 三、多线程初体验 一、线程的所有状态 状态是针对当前线程调度情况所描述的&#xff0c;又因为线程是调度的基本单位&#xff0c;所以我们所谈到的状态都是线程的属性。在java里对线程的状态&#xff0c;进行了一个更细的划分。 我们可…

基于SpringBoot网上超市的设计与实现录像

基于SpringBoot网上超市的设计与实现录像 SpringBoot网上超市的设计与实现录像

认证鉴权框架SpringSecurity-3--代码集成_认证篇1(重写UserDetailsService示例)

上一篇介绍了springSecurity中常用的组件和过滤器链&#xff0c;明白了springSecurity管理认证和授权的基本过程和所用到的组件。之后几篇我们通过在Java代码集成springSecurity&#xff0c;来学习下代码上认证是如何实现的。 代码上常用的认证方式有两种&#xff0c;一种是实现…

C语言操作符终极揭秘:表达式求值秘籍

C语言中操作符详解&#xff08;终结篇&#xff09; 放在最前面的表达式求值定义&#xff08;1&#xff09; 操作数的求值&#xff08;2&#xff09; 操作符的应用&#xff08;3&#xff09;类型转换&#xff08;3.1&#xff09;隐式类型转换&#xff08;Type Promotion&#xf…

[代码审计]宏*HCM最新文件上传漏洞分析复现

如果觉得该文章有帮助的&#xff0c;麻烦师傅们可以搜索下微信公众号&#xff1a;良月安全。点个关注&#xff0c;感谢师傅们的支持。 免责声明 本博客所发布的所有内容&#xff0c;包括但不限于信息、工具、项目以及文章&#xff0c;均旨在提供学习与研究之用。所有工具安全性…

谷歌Gemini发布iOS版App,live语音聊天免费用!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

MYSQL SQL优化总结【快速理解】

1、优化insert操作 批量插入&#xff0c;防止大量与数据库进行访问 手动控制事务&#xff0c;减少事务的频繁开启和提交。 主键顺序插入 2、优化主键 主键优化的点就是避免主键过长&#xff0c;因为如果有二级索引&#xff0c;叶子节点存储的数据时间上是主键&#xff0c;如果主…

【Hive】【HiveQL】【大数据技术基础】 实验四 HBase shell命令实验

实验四&#xff1a;熟悉常用的HBase操作 实验概览 在本次实验中&#xff0c;我们将深入探索HBase在Hadoop生态系统中的角色&#xff0c;并熟练掌握常用的HBase Shell命令和Java API操作。通过这些实践&#xff0c;我们能够更好地理解HBase的工作原理以及如何在实际项目中应用。…

解决渠道问题的高效控价方法

当品牌销售渠道增多、涉及销售店铺量上升且品牌期望持续稳定发展时&#xff0c;就应着手处理控价事宜。控价有助于稳定品牌价值、吸引经销商加入以及利于品牌口碑传播。 控价应包含的渠道 随着电商平台发展&#xff0c;品牌销售渠道日益丰富&#xff0c;除线下传播渠道外&…

随机数

目录 一、传统方式&#xff1a;std::rand 和 std::srand 使用方法&#xff1a; 优缺点&#xff1a; 二、现代方式&#xff1a; 库&#xff08;推荐&#xff09; 1. 随机整数 2. 随机浮点数 3. 布尔值 4. 字符 5. 正态分布&#xff08;高斯分布&#xff09; 6. 离散分…