Linux基础命令3

awk命令

awk是一种处理文本文件的语言,是一个强大的文本分析工具。
相比较屏幕处理的优点,awk在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息。 awk也是一个非常棒的数据处理工具!相较于sed常常作用于一整个行的处理, awk则比较倾向于一行当中分成数个字段来处理。
awk处理过程: 依次对每一行进行处理,然后输出。
命令的基本格式是:awk ‘{print($1)}’
案例:

cat 1.txt|awk '{print($2)}'                 #打印出文本中每行的第二个字段

image.png

cat /etc/passwd |awk -F ":" '{print($1)}'  #-F指定分隔符,以“:”为分隔符,打印出文本中每行第一个字段
cat /etc/passwd |awk -F ":" '{print($1,"+++",$3)}'   #打印出第一个字段与第三个字段,并在其中间添加+++内容
cat /etc/passwd |awk -F ":" '{print($1"+++"$3)}'     #对比差异

image.png
image.png

cat passwd | awk -F ":" '{print $NF}'       #打印出文本中每行的最后一个字段
cat passwd | awk -F ":" '{print $(NF-1)}'   #打印出文本中每行的倒数第二个字段。$(NF-1)为倒数第二,依此类推。

image.png
image.png

sed命令

sed 是stream editor(流编辑器)的简称,是一款强大的,并且有些复杂的程序。
sed 本身是一个管线命令,可以将数据进行替换、删除、新增、提取特定行等功能,主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。sed按行来执行命令。
接下来的实验,我们要以/etc/passwd文件内容为例子。
拷贝文件cat /etc/passwd > 1.txt
我们以一个例子来介绍sed命令,sed ‘s/:/+/g’
s代表搜索,g代表的则是全文。不加g的话则是替换每行第一个出现的。所以这条命令代表的将文件中所有的:替换为+
image.png
cat 1.txt |sed ‘s/:/+/3g’ #代表的则是从第三次匹配开始替换,依此类推。
image.png
sed -i ‘s/:/+/g’ 1.txt #参数-i,直接修改文件,并非打印出来。
image.png
以上这些命令中是以/做为该命令的定界符,如果需要修改或者匹配的字段带有/则不能再使用/做为该条命令的定界符,可以使用任意的定界符,不冲突就行。cat passwd |sed ‘s!:!/!g’ 以!号做为定界也是一样的。
此外,在此命令中,搜索位置使用^代表一行的开头,KaTeX parse error: Expected 'EOF', got '#' at position 52: … ip.txt |sed 's#̲^#http://#g'在每行…#:8080#g’在每行末尾加上“:8080”
cat ip.txt |sed 's#$#:8080#g’在每行末尾加上“:8080”
sed '/^s/'d 删除文件中所有开头是s的行。

grep命令

grep这个名字来自于短语“global regular expression print”,所以我们能看出 grep 程序和正则表达式有关联。
本质上,grep 程序会在文本文件中查找一个指定的正则表达式,并把匹配行输出到标准输出。
命令格式: grep [options] [pattern] [filename]
案例:

cat passwd |grep root                          # 只显示带有root关键字的行
grep -e root passwd                            # 匹配有root的行
grep -v root passwd                            # 忽略匹配到的行
cat passwd |grep -E "root|sshd"                # 包含多个可能性的行
cat passwd |grep -E '^r'                       # 以r开头的行
cat passwd |grep -E 'n$'                       # 以n结尾的行
grep “root” /etc/passwd /etc/shadow            # 查询多个文件
grep "passwd" /etc -rn                         # -r 为递归 -n 显示关键字出现在第几行   在多级目录中对文本进行递归查找

image.png
image.png
image.png

find命令

find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
这是一个超级复杂的命令,最简单的模式为:find 路径 -name [名字]。
案例:

find / -size 1000k                #从根目录查找大小为1000K的文件
find   -name '1*'                 #在当前目录下查找文件名以1开始的文件
find / -name '1*'                 #从根目录查找文件名以1开始的文件
find / -user farmsec1             #从根目录查找属主为farmsec1的文件
find / -group farmsec             #从根目录查找属组为farmsec的文件
find /etc -type f/d               #按sock类型查找,f代表文件,d代表目录
find . -type f -mtime -7          #搜索7天内当前目录下修改过的文件(-7代表7天内,7代表前7天那一天,+7代表7天前)
find . -type f -mmin -10          #搜索10分钟内当前目录下修改过的文件 
find . -atime -1 -type f          #搜索当前目录下一天内被访问的文件(-1代表1天内,1代表前1天那一天,+1代表1天前)
find . -amin -10 -type f          #搜索当前目录下10分钟内被访问的文件
find . -ctime -1 -type f          #搜索当前目录下一天内状态被改变(列如权限)的文件(-1代表1天内,1代表前1天那一天,+1代表1天前)
find . -cmin -10 -type f          #搜索当前目录下10分钟内状态被改变的文件
find . -perm 777                  #搜索处当前文件下符合777权限的文件
  • exec选项
find 搜索路径 [选项] 搜索内容 -exec 命令2{}\;
find . -type f -perm 644 -exec ls -l {} \;
find / -exec grep "Hello" {} \;

find / -name "*.tmp" -exec rm -f {} \;   (危险)
find / -name "*" -ctime +2 -exec rm -f {} \;(危险,别敲)

ag命令

ag类似grep和find,但是执行效率比后两者高。
最基本的用法为ag -g ,从当前目录寻找文件
案例:

ag -g <File Name>            # 类似于 find . -name <File Name>
ag -i PATTERN                # 忽略大小写搜索含PATTERN文本
ag -A [number] PATTERN       #搜索含PATTERN文本,并显示匹配内容之后的n行文本,例如:ag -A 5  abc会显示搜索到的包含abc的行以及它之后5行的文本信息。
ag -B [number] PATTERN       #搜索含PATTERN文本,并显示匹配内容之前的n行文本
ag -C [number] PATTERN       #搜索含PATTERN文本,并同时显示匹配内容以及它前后各n行文本的内容。
ag --ignore-dir <Dir Name>   #忽略某些文件目录进行搜索。
ag -w PATTERN                #全匹配搜索,只搜索与所搜内容完全匹配的文本。
ag --java PATTERN            #在java文件中搜索含PATTERN的文本。
ag --xml PATTERN             #在XML文件中搜索含PATTERN的

stat命令

用于显示文件信息:
用法:stat [文件或目录]

stat /etc/passwd

image.png

split命令

split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。
参数:

  • -b 按文件大小进行切割
  • -l 按行数来进行切割
  • -d 为使用数字为生成文件的后缀
  • -a 指定后缀的长度

案例:

split -b 30k messages    # 按照每个文件30K大小切割messages文件。
split -l 300 messages    # 将messages文件切割为每3行一份。

image.png

sort命令

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。

cat 1.txt|sort            #默认的排序方式,从首字母开始
cat 1.txt|sort -t         #按照字典进行排序
cat 1.txt|sort -n         #按照数字进行排序

image.png

uniq命令

uniq用于报告或忽略文件中的重复行,一般与sort命令结合使用。
要注意先排序,后去重。因为uniq命令只能消除相邻且相同的行。

cat 1.txt |sort -n |uniq              #排序去重
cat 1.txt|sort -n |uniq -c            #列出重复的次数
cat 1.txt |sort -n |uniq -d           #列出有哪些行是重复的

image.png
以上系列命令可以用于日志分析:
如统计IP地址的访问数量并按照数量进行排序: cat access_log |awk ‘{print($1)}’|sort|uniq -c |sort -nr |more
针对访问量最大的IP分析其访问内容: cat access_log |grep ‘IP地址’|head -n 100

nl命令

nl命令用于显示文件内容行号。
案例:

cat /etc/passwd |nl

image.png

远程链接命令

ssh命令

ssh命令是Linux的远程连接工具。
ssh命令:Linux的远程连接工具
例如ssh 192.168.0.149,以当前终端用户身份远程连接IP为192.168.0.149的计算机。

  • -l 为指定用户 如 ssh -l farmsec 192.168.0.149以farmsec用户远程登录,也可写成ssh farmsec@192.168.0.149
  • -p 为指定端口号

执行ssh的默认情况下,会使用本地的用户名连接对方的用户名,例如本地的root连接对面服务器的root,如果两端用户名不一样,则需要使用-l username指定用户名。
再确认密码后,方能登录成功,而同时变化的文件为:/root/.ssh/known_hosts 在第一次登录时,openssh将会提示不知道这台登录的主机,只要输入yes,就会把这台主机的“识别信息”添加到known_hosts文件中. 第二次登陆后,则无须此步骤,但是如果出现错误,例如主机产生变化,则需要删除/root/.ssh/known_hosts内容。

rdesktop 命令

rdesktop命令用于在linux下链接windows远程桌面。
用法:rdesktop 192.168.0.178
image.png

URL相关命令

URL,既是俗称的网址/网页链接。

curl命令

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
用法:curl [选项] [url]
参数:

  • -i 显示头部信息
  • -v 显示请求全过程解析
  • -O 下载

案例:

curl www.farmsec.com
curl www.farmsec.com -i
curl www.farmsec.com -v
curl -O https://bootstrap.pypa.io/get-pip.py

image.png
image.png
image.png
image.png

wget命令

wget命令:用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

wget https://bootstrap.pypa.io/get-pip.py

image.png
前面我们下载下的文件名都是乱码,所以我们需要给它自定义文件名 加入-O的参数即可指定文件名

wget  https://bootstrap.pypa.io/get-pip.py -O 123.py

image.png
如果文件比较大时,加入参数-b,进行后台下载,然后可使用使用tail -f wget-log查看进度。

-c:继续执行上次终端的任务;可以在下载中断后再次使用。

image.png

  • 28
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值