文章目录

  • 一、文件内容
    • 1. head:查看文档的前几行内容
    • 2. tail:查看文档(日志)的后几行内容
    • 3. grep:搜索存在关键字的行
    • 4. cut:以某种方式按照文件的行进行分割
    • 5. sort:将文件的每一行作为一个单位相互比较,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
    • 6.wc:可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
    • 7.uniq:用于检查及制除文本文件中重复出现的行,一般与sort命令结合使用。
    • 8. tree:tee和>类似,重定向的同时还在屏幕输出
    • 9. tr:用于转换或删除文件中的字符。
    • 10.split:该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件
    • 11.文件所属
  • 二、搜索命令
  • 三、系统信息
  • 四、awk
    • 1.默认分段
    • 2.连接符OFS
    • 3.分隔符
    • 4.内容匹配
    • 5.段内容判断
  • 五、其他
    • 1. 管道
    • 2. echo
    • 3. &&和||
    • 4. 软链接
    • 5. 历史命令:history
    • 6. 定时服务
  • 六、Shell
    • 1. 基础脚本
    • 2. 变量
      • 2.1 系统变量
      • 2.2 用户变量
      • 2.3 特殊变量
    • 3. 运算符
    • 4.条件判断
    • 5. 流程控制
      • 5.1 if判断
      • 5.2 case语句
      • 5.3 for循环
      • 5.4 while循环

一、文件内容

1. head:查看文档的前几行内容

语法:head -n 数字文件(-n表示显示前几行内容)

  • 查看文件的前5行:head -5 /etc/passwd

2. tail:查看文档(日志)的后几行内容

  • 通过tail命令查看文档(日志)的后几行内容

    • 语法:tail -n 数字文件 (-n表示显示前几行内容)

      • 查看文件的前5行tail -5 /etc/passwd
  • tail动态显示文档的最后内容,一般用来查看日志
    • 语法:tail -f 文件

      • 实时监控文件web.log:tail -f web.log
        测试,向web.log文件追加内容echo "hello briup" >>web.log
      • 显示最后10行内容同时对文件进行监控tail -10f web.1og

3. grep:搜索存在关键字的行

语法:grep [选项] [关键字|正则] 文件名

  • 搜索/etc/passwd文件中出现bash的行grep bash /etc/passwd
  • 搜索/etc/passwd文件中出现bash的行,并显示行号grep -n bash /etc/passwd
  • 搜索/etc/passwd文件中出现bash的行,忽略大小写grep -i BASH /etc/passwd
  • 搜索/etc/passwd文件中出现没有bash的行grep -v bash /etc/passwd
  • 搜索以/etc/passwd中每行基于sys开头的行的内容:grep ^sys /etc/passwd

4. cut:以某种方式按照文件的行进行分割

  • 参数列表

    • -b按字节选取忽略多字节字符边界,除非也指定了-n标志
    • -c按字符选取
    • -d自定义分隔符,默认为制表符。
    • -f与-d一起使用,指定显示哪个区域。
  • 范围控制:
    • n:只有第n项
    • n-:从第n项一 直到行尾
    • n-m:从第n项到第m项(包括m)
  • 构建文件:vi b.txt
  • 文件内容:
    111 :aaa :bbb:ccc
    222 :ddd:eee:fff
    333 :ggg :hhh:jjj
  • 案例:
    • 找出文件中每一行中第4个字符cat b.txt|cut -b 4
    • 找出文件中每一行中第1、2、3、4个字符cat b.txt|cut -b 1,2,3,4
    • 截取出文件中以”:"进行分割的第1,2段内容cat b.txt|cut -d ':’ -f 1,2

5. sort:将文件的每一行作为一个单位相互比较,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

  • 构建文件:vi c.txt
  • 文件内容:
    banana
    apple
    pear
    orange
    pear
  • 案例:
    • 对c.txt文件进行排序sort c.txt
    • 对c.xt文件进行排序,并去重sort -u c.txt
    • 对c.txt文件进行降序sort -r c.txt

6.wc:可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

  • 参数:

    • -c或–bytes或-- chars只显示Bytes数。
    • -l或–lines 只显示行数。
    • -w或–words 只显示字数。
    • –help 在线帮助。
    • –version显示版本信息
  • 案例:
    • 显示文件有多少wc -1 c.txt
    • 显示文件有多少单词wc -w c.txt
    • 显示文件有多少字节wc -c c.txt
    • 显示全部信息wc c.txt

7.uniq:用于检查及制除文本文件中重复出现的行,一般与sort命令结合使用。

  • 参数说明:-c统计行数
  • 构建文件:vi d.txt
  • 文件内容:
    张三 98
    李四 100
    王五 90
    赵六 95
    麻七 70
    李四 100
    王五 90
    赵六 95
    麻七 70
  • 案例:
    • 去除d.xt中重复的行sort d.txt | uniq
    • 统计d.txt中每行内容出现的次数sort d.txt | uniq -c

8. tree:tee和>类似,重定向的同时还在屏幕输出

  • 参数说明:tee -a内容追加和>>类似
  • 案例:
    • 统计d.txt中每行内容出现的次数输出到data.txt,并且把内容显示在控制台:sort d.txt|uniq -c |tee data.txt
    • 统计d.txt中每行内容出现的次数输出追加到data.bxt,并且把内容显示在控制台:sort d.txt|uniq -c |tee -a data.txt

9. tr:用于转换或删除文件中的字符。

  • tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
  • 删除指令字符:-d--delete
  • 案例:
    • 把hello world的小写o换成大写Oecho 'hello world' |tr 'o’ 'O'
    • 把hello world的小写换成大写echo 'hello world' |tr '[a-z]' '[A-Z]'
    • 把hello world的a-g的数据删除echo 'hello world' |tr -d '[a-g]'

10.split:该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件

  • 参数说明:

    • -b<字节>:指定每多少字节切成一个小文件
    • -|<行数>:指定每多少行切成一个小文件
  • 构建文件:vi d.txt
  • 文件内容: .
    张三 98
    李四 100
    王五 90
    赵六 95
    麻七 70
    李四 100
    王五 90
    赵六 95
    麻七 70
  • 案例:
    • 把文件d.txt按照每两行拆分split -1 2 d.txt
    • 把文件d.txt按照2K拆分split -b 2K d.txt

11.文件所属

  • 修改文件的拥有者和所属组。

    • chown修改文件的拥有者
    • chgrp修改文件的所属组
  • 案例:
    • 修改d.txt文件的拥有者为hdfs:sudo chown hdfs d.txt
    • 修改文件的所属组为hadoop:sudo chgrp hadoop d.txt

二、搜索命令

  • 通过find命令在特定目录下(包含它的后代目录)搜索符合条件的文件
  • 语法:find [路径] [选项] 搜索内容
  • 案例:
    • 查找家路径下基于.txt结尾的文件:find ~ -name '*.txt'
    • 查找在五天内没有访问过的文件:find / -atime +5
    • 查找在五天内访问过的文件:find / -atime -5
    • 查找文件类型为目录的所有文件:find ~ -type d
    • 查找在家目录下等于2M的文件:find ~ -size 2M
    • 查找在家目录下大于2M的文件:find ~ -size +2M
    • 查找在家目录下小于2M的文件:find ~ -size -2M
    • 查找在家目录下权限为777的文件:find~-perm777
    • 查找拥有者为hdfs的文件:find ~ -user hdfsfind ~ -uid 20000
    • 查找所属组为hadoop的文件:find ~ -group hadoopfind ~ -gid 20000
    • 找出365天没有访问过的文件并删除find /export/home -type f -atime +365 -exec rm {} \;

-type

  • f 普通文件
  • d 目录文件,它会把[目标目录]也会显示出来,如果使用find /tmp -type d|xargs rm -r就会 连/tmp目录一起删掉!
  • l 链接文件
  • b 块设备文件
  • c 字符设备文件
  • p 管道文件
  • s socket文件

三、系统信息

  • 显示磁盘剩余空间

    • 显示各个磁盘挂载信息:df -h
  • 所谓进程,通俗的说就是当前正在执行的一个进程
    • 查看进程的详细情况:ps aux

      • USER进程的属主
      • PID进程的ID
      • %CPU进程占用的CPU百分比
      • %MEM占用内存的百分比;
      • VSZ进程使用的虚拟內存量(KB)
      • RSS该进程占用的固定內存量(KB) (驻留 中页的数量) ;
      • TTY该进程在那個終端上运行
      • STAT状态
      • START该进程被触发的时间
      • TIME该进程使用CPU运行的时间;
      • COMMAND命令的名称和参数;
    • 终止进程:kill -9 2000

注意:使用kill命令时,最好只终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃

四、awk

1.默认分段

  • awk是一种处理文本文件的命令,是一个强大的文本分析工具。但是比较复杂,不过功能比sed更加的强大,它支持分段。默认每行按空格或TAB分割。
  • 选项参数说明:-F指定输入文件折分隔符
  • 构建文件:vi e.txt
  • 文件内容:
    aaa 111 333
    bbb 444 555
    ccc 666 777 888
    ddd 999 222 999
  • 案例:
    • 打印出每一行的第一段内容:awk '{print $1}’ e.txt
    • 打印出每一行的第1、 2、3段内容:awk '{print S1,$2,$3}' e.txt
    • 打印出每一行的第1、2、3段内容,基于#拼接awk '{print $1"#"$2"#"$3}' e.txt

2.连接符OFS

  • 案例:

    • 打印出每一行的第1、2、3段内容,基于#拼接awk ' {0FS="#"}{print $1,$2,$3}' e.txt

3.分隔符

  • 参数说明:-F来指定分隔符
  • 构建文件:vi b.txt
  • 文件内容:
    111 :aaa :bbb :ccc
    222 :ddd:eee:fff
    333 :ggg :hhh: jjj
  • 案例:
  • 基于:分割数据,打印第一项awk -F ':' '{print $1}' b.txt

4.内容匹配

  • 匹配b.txt中第1段包含22的内容:awk -F ':' '$1 ~ /^22/' b.txt
  • 在b.txt中如果匹配到aaa就打印第1,2段,如果匹配到cc,就打印第3,4段
    awk -F ':' '/aaa/ {print $1,$2} /ccc/ {print $3,$4}’ b.txt
  • 在b.txt中如果匹配到aaa或者ddd,就打印全部内容awk -F ':' '/aaa|ddd/ {print $0}' b.txt

5.段内容判断

  • 在b.txt中如果第1段等于222就打印所有内容:awk -F ':' '$1==222 {print $0}' b.txt
  • 在b.txt中如果第1段大于等于222就打印所有内容:awk -F ':' '$1>=222 {print $0}' b. txt
  • 在b.txt中如果第1段不等于222就打印所有内容:awk -F ':' '$1!=222 {print $0}' b.txt
  • 在b.txt中如果第1段等于111,并且第2段等于aaa就打印全部:
    awk -F ':' '$1==111 && $2=="aaa" {print $0}' b.txt
  • 在b.txt中显示每一行有几段awk -F ':' '{print NF}' b.txt
  • 在b.txt中显示行号awk -F ':' '{print NR}' b.txt
  • 打印b.txt前2行,并显示行号awk -F ':' 'NR<=2 {print NR" "$0}' b.txt
  • 打印b.txt前2行,并且第2段匹配aa或者eee,打印全部,打印行号:
    awk -F ':' 'NR<2 &&$2 ~ /aaa|bbb/{print $0}' b.txt

五、其他

1. 管道

通过命令1 |命令2可以将命令1的结果通过命令2作进一步的处理
案例:

  • 过滤/etc/目录下以pro’开头的文件
ls /etc/ | grep ^pro

2. echo

默认将字符串输出到控制台,通常回和重定向联合使用
案例:

  • 将字符串输出到控制台
echo "hello"
  • 将系统变量PATH输出到控制台
echo $PATH

$表示引入系统变量

  • 将字符串追加到a.txt文件中去
echo "hello world">>a.txt

3. &&和||

(1)&&:如果命令1执行成功了,才执行命令2
案例:如果创建目录成功,输出文件创建成功

mkdir test&&echo `文件创建成功`

(2)||:如果命令1执行失败了,才执行命令2
案例:如果创建目录不成功,输出文件创建不成功

mkdir test||echo `文件创建不成功`

4. 软链接

在linux中文件名和内容是两个文件,分开的

ln -s 目标文件绝对路径 快捷方式路径

5. 历史命令:history

  • :显示所有的历史命令
history
  • 执行历史命令第610条
!610
  • 执行命令行,上一条命令
!!

6. 定时服务

crontab是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
语法:

crontab [ -u user ] file
或者
crontab [ -u user ] { -l | -r | -e }

参数说明:

  • -u user是指设定指定user的时程表
  • -e:执行文字编辑器来设定时程表,内定的文字编辑器是VI,如果你想用别的文字编辑器,则请先设定VISUAL环境变数来指定使用那个文字编辑器
  • -r:删除目前的时程表
  • -l:列出目前的时程表

(1)构建执行计划

crontab -e

(2)选择vi编辑器
(3)编辑执行计划
时间格式:m h dom mon dow command

  • m分钟
  • h小时
  • dom天
  • mon月
  • dow星期几
  • command命令
  • 每一分钟执行一次/bin/ls:* * * * * /bin/ls
  • 在12月内,每天的早上6点到12点,每隔3个小时0分钟执行一次/usr/bin/backup:
    0 6-12/3 * 12 * /usr/bin/backup
  • 周一到周五每天下午5:00寄一封信给alex@domain.name:
    0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
  • 每月每天的午夜0点20分,2点20分,4点20分…执行echo "haha"追加输入文件b.txt中:
    20 0-23/2 * * * echo "haha" >>b.txt
  • 每月1、10、 22日的4: 45重启mysql:45 4 1,10,22 * * service mysql restart

六、Shell

shel是一个命令解析器,它接受应用程序/用户命令,然后调用操作系统。
查看shell支持的脚本

cat /etc/shells

1. 基础脚本

脚本以#!/bin/bash开头,指定解析器,最简单的脚本是由linux基本命令组成。

  • 编辑脚本文件
vi first.sh
  • 基于shell解析器执行shell脚本
sh first.sh
或
sh /home/gx/first.sh
或
bash first.sh
或
bash /home/gx/first.sh
  • 基于脚本自身执行脚本

(1)脚本赋权

chmod a+x first.sh

(2)执行脚本

./first.sh
或
/home/gx/first.sh

2. 变量

2.1 系统变量

  • 查看系统所有环境变量:env
  • 查看系统登录用户名:echo $LOGNAME

2.2 用户变量

语法: 变量名=变量值

注意:
变量名和其值总是配对出现
变量声明只能当前的shell可以使用,如果子shell中也需要使用变量前加export

语法规则:

  • 变量名以字母、_开始,可包含字母、数字,环境变量名建议大写。
  • 变量值,可存储任何想要存放的值,变量的值如果有空格,需要使用双引号或单引号括起来.

等号两侧不能有空格
变量默认类型都是字符串类型,无法直接进行数值运算

案例:

  • 定义变量name
NAME=zhansan
echo $NAME

变量可以重新赋值

  • 撤销变量name
unset NAME
echo $NAME
  • 声明静态命令
readonly AGE=33
echo $AGE

静态命令不能修改重新赋值。

  • 变量声明全部是字符串类型,无法直接进行数值运算
SUM=10+20
echo $SUM
  • 变量的值如果有空格,需要使用双引号或单引号括起来
DES='my name is zhansan'
echo $DES

2.3 特殊变量

(1)$n: n为0代表该脚本名称,n为1-9代表第一到第九个 参数,十以上的参数需要用大括号包

  • 编辑文件:vi second.sh
  • 脚本赋权:chmod 777 second.sh
  • 运行脚本:./second.sh 1 2 3 4 5 6 7 8 9 10 11 12 13

(2)$# 获取所有输出参数的个数
(3)$* 命令行中所有的参数,把所有的参数看成一个整体
(4)$@ 命令行中所有的参数,每个参数区分
(5)$? 执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一一个命令执行不正确了

./five.sh 1 2 3 4 5 6 7 8 9 10 11 12 13
echo $?

$?判断的是执行之前的一.条命令

3. 运算符

在shell中需要完成算数运算方式如下:

  • $((运算式))
  • $[运算式]
  • expr+,-,*,/,%加,减,乘,除,取余
    expr运算符间要有空格

案例:1+1运算

echo $((1+1))
或
expr 1 + 1
或
echo $[1+1]

4.条件判断

语法:[ condition ]
condition前后需要有空格
数字类型比较

  • = 字符串比较
  • -lt小于(less than)
  • -le小于等于(less equal)
  • -eq等于(equal)
  • -gt大于(greater than)
  • -ge大于等于(greater equal)
  • -ne不等于(Notequal)

文件权限比较

  • -r有读的权限(read)
  • -w有写的权限(write)
  • -x有执行的权限(execute)

文件类型比较

  • -f文件存在并且是一个常规的文件(file)
  • -e文件存在(existence)
  • -d文件存在并是一一个目录(directory)
  • -s文件存在且非空

5. 流程控制

5.1 if判断

if [ 条件1 ]
then
命令1
elif [ 条件2 ]
then
命令2
……
else
命令3
fi

if或elif后需要有空格
条件前后需要空格

5.2 case语句

case $变量名in"值1") 如果变量的值等于值1,则执行程序1;;"值2")如果变量的值等于值2,则执行程序2;;省略其他分支..*)如果变量的值都不是以上的值,则执行此程序;;
esac

case行尾必须为单词“in”
模式匹配必须以右括号)结束
双分号;;表示命令序列结束,相当于java中 的break
最后的*)表示默认模式,相当于java中的default。

5.3 for循环

for 变量名 in 列表
do命令
done
或
for ((初始值;循环控制条件;变量变化))
do程序
done

5.4 while循环

while [ 条件 ]
do命令
done

Linux学习——第三部分 文件内容、搜索命令、系统信息相关推荐

  1. linux 筛选文件,「Linux基础知识」grep文件内容筛选命令的使用

    原标题:「Linux基础知识」grep文件内容筛选命令的使用 grep命令用于从文档中抓取显示包含指定字符的行,grep命令的使用格式如下: grep [选项] 匹配模式 文件1 文件2 ...... ...

  2. Linux学习笔记三【文件及目录的权限管理篇】

    文件及目录的权限管理 上篇简单介绍了下文件和目录的一些简单的操作,接下来介绍用户和文件权限的管理.首先了解用户和组账号的配置文件,然后是管理用户和组账号,最后要会设置文件和目录权限和归属. Linux ...

  3. Linux学习(三):管道相关命令

    学习目标 熟练掌握以下命令 1.cut 2.sort 3.wc 4.uniq 5.tee 6.tr 7.split 8.awk 9.sed / grep 熟练掌握以下命令 1.cut 准备工作 成绩表 ...

  4. Linux 中的五种查看文件内容的命令 and 三种搜索文件的命令

    一.查看文件内容的命令 1.head 命令 作用:查看文件的头部内容 使用:head [参数] 文件名 参数:-n,-c 案例:查看 yzc 的文件的前5行内容 查看 yzc 的文件的前5个字母 he ...

  5. linux下grep文件内容搜索工具及基本正则表达式详解

    linux下grep文件内容搜索工具及基本正则表达式详解 grep命令: 根据模式(文本字符和基本正则表达式的元字符组合而成之匹配条件)搜索文本, 并将符合模式的文本行显示出来. 格式:grep [选 ...

  6. Linux文件、文件内容搜索大全(find,grep命令)

    1.根据 文件或目录名称 搜索 1.精准搜索,名字必须为 init 才能搜索的到 find /etc -name init 2.精准搜索,名字必须为 init或者有字母大写也能搜索的到 find /e ...

  7. linux之文件搜索和文件内容搜索

    年岁渐长,看过就忘,记录供使用查看 执行之前要确认用户的权限(权限不足则会要no permission) 系统注册文件搜索: whereis xxx 文件搜索的方法较多 文件名搜索:locate XX ...

  8. 【Linux】Linux学习(三)常用基本命令(一)

    Linux学习(三)常用基本命令 常用基本命令 帮助命令 文件目录类命令 时间日期类命令 用户管理命令 用户组管理命令 文件权限类 搜索查找类 压缩和解压类 磁盘查看和分区类 进程管理类 学习总结 常 ...

  9. win7 搜索 php 文件内容,window_win7文件后缀名怎么设置实现文件内容搜索?,文件有广义的文件,那就是公 - phpStudy...

    win7文件后缀名怎么设置实现文件内容搜索? 文件有广义的文件,那就是公文书信件等等纸质材料等等.而更广泛的是我们现在办公中所用到的电子文件,它在我们现有的办公中起到了不可忽视的作用.下面就说一些办公 ...

最新文章

  1. vue key重复_得心应用的Vue高级技巧
  2. Pycharm切换anaconda的环境
  3. Python学习笔记一:数据类型转换
  4. Linux:让普通用户临时性获得root用户权限
  5. 微服务的终极目标,Mecha分布式运行时之Dapr
  6. java appender_log4j的Appenders配置方法
  7. JDK 8 新特性- 学习中
  8. ECCV 2020 论文大盘点-视频目标检测篇
  9. 【360开源】Wayne:企业级可视化多集群Kubernetes一站式管理平台
  10. 单独编译apache的rewrite模块
  11. 十行代码实现title滚动显示
  12. log4j每天产生一日志文件
  13. 读书笔记:陈希孺:概率论与数理统计:2014.01.01
  14. 信息系统项目管理师论文范例4-进度管理
  15. Lua 斗地主算法实现
  16. 源码实践指南!Mastering opencv Ch3 Markerless AR--UBUNTU下 opencv+opengl 运行
  17. 什么是重载?有什么作用?
  18. 用java计算一元二次方程
  19. python导入文件
  20. Mac使用Karabiner-Elements修改mac默认快捷键

热门文章

  1. 如何查看python函数的源码
  2. pdf文件怎么转换成excel格式?
  3. 详解python内置函数的使用
  4. 我们前端是怎么找到工作的
  5. 主成分的java版_数据降维:主成分分析法
  6. R语言怎么检测残差序列是否存在自相关性
  7. 需要准备哪些材料才能申报中、高级职称?
  8. 解决英雄联盟卡死无法切出
  9. 秋季天凉 增强抵抗力防感冒
  10. 日历,任务,时间管理,提醒