整理下常用于shell中的一些linux命令cuiyaonan2000@163.com
netstatnetstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
netstat [选项]
-a或--all:显示所有连线中的Socket;
-A或--:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-r或--route:显示Routing Table;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。
实例:
[root@xiesshavip002 ~]# netstat -antp #显示端口 tcp端口 ip地址 进程名称
[root@xiesshavip002 ~]# netstat -a # 列出所有端口
[root@xiesshavip002 ~]# netstat -at # 列出所有TCP端口
[root@xiesshavip002 ~]# netstat -au # 列出所有UDP端口
[root@xiesshavip002 ~]# netstat -l # 只显示监听端口
[root@xiesshavip002 ~]# netstat -lt # 显示监听TCP端口
[root@xiesshavip002 ~]# netstat -lu # 显示监听UDP端口
[root@xiesshavip002 ~]# netstat -lx # 显示监听UNIX端口
[root@xiesshavip002 ~]# netstat -s # 显示所有端口的统计信息
[root@xiesshavip002 ~]# netstat -st # 显示所有TCP的统计信息
[root@xiesshavip002 ~]# netstat -su # 显示所有UDP的统计信息
[root@xiesshavip002 ~]# netstat -p #显示 PID 和进程名称
NC
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。
安装该工具:
yum install nc -y
语法格式:
nc [选项] [主机名] [端口]
参数说明:
- -g 设置路由器跃程通信网关,最多可设置8个。
- -G 设置来源路由指向器,其数值为4的倍数。
- -h 在线帮助。
- -i 设置时间间隔,以便传送信息及扫描通信端口。
- -l 使用监听模式,管控传入的资料。
- -n 直接使用IP地址,而不通过域名服务器。
- -o 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
- -p 设置本地主机使用的通信端口。
- -r 乱数指定本地与远端主机的通信端口。
- -s 设置本地主机送出数据包的IP地址。
- -u 使用UDP传输协议。
- -v 显示指令执行过程。
- -w 设置等待连线的时间。
- -z 使用0输入/输出模式,只在扫描通信端口时使用。
常用形式:
#查看指定ip的端口是否打开
nc -zv 127.0.0.0 22
#监听本机66666端口作为服务器
nc -l 66666
#远程连接该ip的指定端口,可以给他发文本信息cuiyaonan2000@163.com
nc 192.168.11.1 666666
#扫描192.168.154.132 的TCP端口,范围是 1-1000
nc -v -z -w2 192.168.154.132 1-1000
#扫描192.168.154.132 的UDP端口,范围是 1-100 由此可见默认是tcp
nc -u -v -z -w2 192.168.154.132 1-1000
SED
sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。 sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。
字符串替换替换字符串用例(s/Search_String/Replacement_String/g 这一串是命令集合)
sed -i 's/Search_String/Replacement_String/g' Input_File
-
sed:这是一个 Linux 命令。
-
-i:这是 sed 命令的一个选项,它有什么作用?默认情况下,sed 打印结果到标准输出。当你使用 sed 添加这个选项时,那么它会在适当的位置修改文件。当你添加一个后缀(比如,-i.bak)时,就会创建原始文件的备份。
-
s:字母 s 是一个替换命令。
-
Search_String:搜索一个给定的字符串或正则表达式。
-
Replacement_String:替换的字符串。
-
g:全局替换标志。默认情况下,sed 命令替换每一行第一次出现的模式,它不会替换行中的其他的匹配结果。但是,提供了该替换标志时,所有匹配都将被替换。
-
/:分界符。
-
Input_File:要执行操作的文件名。
用例
//将unix 替换成linux 且只替换找到的第一个
# sed 's/unix/linux/' sed-test.txt
//将unix 替换成linux 且只替换找到的第二个 依次类推 /3 第三个 /4 第四个
# sed 's/unix/linux/2' sed-test.txt
//将unix 替换成linux 且全部替换
# sed 's/unix/linux/g' sed-test.txt
//也是全局替换,但是从第二个开始全局替换
# sed 's/unix/linux/2g' sed-test.txt
AWK
根据Linux awk 命令 | 菜鸟教程上的介绍使用方法有三种,这里直说一种.
awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将会使你的工作变的高大上。 awk 是三剑客的老大,利剑出鞘,必会不同凡响。(我TM觉得我白干了很多年)
方法一的格式:
awk '{pattern + action}' {filenames}
格式说明:
- 其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。
- 花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。
- pattern就是要表示的正则表达式,用斜杠括起来。
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。
通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
请看这个命令:[root@localhost cuiyaonan]# awk '{print $0}' /etc/profile .因为 awk是按照 一行作为处理单元的.所以以\n为分隔符作为 什么是一行. 同时一行中也有分段的功能.默认分段是:或者是空格 ,可以用-F 指定分段的标识符. 如下也可以看到 $0标识整段,$1标识段1,$2标识段2
用例:
#如下所示 awk 以" "即1个空格作为分隔符 打印第一列的数据
[root@localhost cuiyaonan]# awk -F" " '{print $1}' ./test2.sh
1
2
3
4
5
6
cui
yao
nan
jji7
GREP
格式如右所示: grep [options]
常用的options:(注意大小写,代表不同的功能)
- -A: 显示匹配这行之后的指定行数
- -B: 显示匹配这行之前的指定行数
- -C: 显示匹配这行前后指定的行数
- -c:只输出匹配行的计数。
- -I:不区分大 小写(只适用于单字符)。
- -h:查询多文件时不显示文件名。
- -l:查询多文件时只输出包含匹配字符的文件名。
- -n:显示匹配行及 行号。
- -s:不显示不存在或无匹配文本的错误信息。
- -v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
- \: 忽略正则表达式中特殊字符的原有含义。
- ^:匹配正则表达式的开始行。
- $: 匹配正则表达式的结束行。
- \:到匹配正则表达式的行结束。
- [ ]:单个字符,如[A]即A符合要求 。
- [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
- 。:所有的单个字符。
- * :有字符,长度可以为0。
用例:
#显示所有以d开头的文件中包含 test的行。
#主要是注意 被搜索的 是个正则表达式,这里的是文件表达式.同时也可以是文件夹的正则表达式
[root@localhost cuiyaonan]# grep ‘test’ d*
#显示 test2.sh 中所有不包含'c'的所有行
[root@localhost cuiyaonan]# grep -v 'c' test2.sh
EOF
EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。通常在文本的最后存在此字符表示资料结束。(EOF 相当于一个全局常量,当然也可以是 其它的字符 比如 BBB,该常量的作用主要是作为文件的结束)
[root@localhost ~]# cat jkd
> EOF
jj
jkd
#由此可见 结束标识必须单独一行
# > 后为输入的内容,没有>的为展示的行,由此可见最后的结束标识 BBB并不会存在.只是当做该命令的结束提示
[root@localhost ~]# cat i am second row
> iam third row and do finish; BBB
> BBB
i am first row
i am second row
iam third row and do finish; BBB
cut
cut命令可以从一个文本文件或者文本流中提取文本列。因此被分隔的必须是文件或者文本流.所以要配套echo $PATH | cut 参数来使用.传递要被切割的数据
使用方法比较多,cut常用的参数如下所示
- -d :后面接分隔字符.与 -f 一起使用.
- -f : 依据-d的分隔字符将一段信息分割成为数段,用-f取出第几段的意思
- -c : 以字符的单位取出固定字符区间
用例1使用-c 参数取出指定位置的数据
[root@localhost cuiyaonan]# echo $PATH
#显示内容如下
/home/cuiyaonan/apache-maven-3.6.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/cuiyaonan/jdk1.8.0_251/bin:/root/bin
[root@localhost cuiyaonan]# echo $PATH | cut -c 1-4
#显示 1到4的字符
/hom
[root@localhost cuiyaonan]# echo $PATH | cut -c 1-5
#显示1到5的字符
/home
用例二 使用 -d 指定":" 为分隔符 将文件里路拆分. 使用-f指定需要的第几段(选取第几段可以是范围也可以是指定的位置使用 如上的 - 来选择范围 比如1-3 选取的 第一段到第三段)
[root@localhost cuiyaonan]# echo $PATH
#显示内容如下
/home/cuiyaonan/apache-maven-3.6.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/cuiyaonan/jdk1.8.0_251/bin:/root/bin
[root@localhost cuiyaonan]# echo $PATH | cut -d ":" -f 3-
#显示从第三段开始到最后
/usr/local/bin:/usr/sbin:/usr/bin:/home/cuiyaonan/jdk1.8.0_251/bin:/root/bin
echo
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。
命令格式:echo string
exportLinux export命令用于设置或显示环境变量.export可新增,修改或删除环境变量,供后续执行的程序使用。
如果在shell中使用export 并且在所有环境中有效需要使用命令否则,只对该shell和其子shell有效.
使用如下的命令 source 使shell脚本里的设置对其它shell也有效。
source cuiyaonan2000.sh
语法
export [-fnp][变量名称]=[变量设置值]
参数说明:
- -f 代表[变量名称]中为函数名称。
- -n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
- -p 列出所有的shell赋予程序的环境变量。(这个可以显示所有的环境变量
在shell中的写法如下:
#! /bin/bash
#this my first shell script
#cuiyaonan2000@163.com
myname='cuiyaonan2000'
export myname
nohup(&标识后台与运行,nohup标识退出后程序仍继续运行)
语法:nohup Command [ Arg … ] [ & ]
nohup 是 no hang up 的缩写,就是不挂断的意思。
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。
该命令通常配合如下的内容 组装成一个比较复杂的命令.
- 0 代表STDIN_FILENO 标准输入(一般是键盘),
- 1 代表STDOUT_FILENO 标准输出(一般是显示屏,准确的说是用户终端控制台),
- 2 三代表STDERR_FILENO (标准错误(出错信息输出)。
- > 直接把内容生成到指定文件,会覆盖原来文件中的内容[ls > test.txt],
- >> 尾部追加,不会覆盖原有内容 [ls >> test.txt](cuiyaonan2000@163.com),
- 结合代表错误重定向,而1代表1个文件,这句话意思是错误输出重定向到一个文件1中,而不代表标准输出;换成2>&1,&与1就代表标准输出了。
-
test.sh >/dev/null 标识 test.sh的命令的标准输出写入/dev/null中,当然/dev/null是个空文件是个黑洞.
-
我们要把一个内容写入到一个文件中需要使用 echo命令,如echo "i am content" > /dev/null
管道
在 Linux 中,pipe
能让你将一个命令的输出发送给另一个命令。管道,如它的名称那样,能重定向一个进程的标准输出、输入和错误到另一个进程,以便于进一步处理。
“管道”(或称“未命名管道”)命令的语法是在两个命令之间加上 |
字符:
Command-1 | Command-2 | ...| Command-N
如上所示Command-1的标准输出是Command-2命令的 输入,(理解为Command-2 命令结尾的参数更准确cuiyaonan2000@163.com)
重定向(>,>>,> 尾部追加,不会覆盖原有内容 [ls >> test.txt](cuiyaonan2000@163.com),最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?