linux 基础教程 在线

2316awk

awk、sed、grep更适合的方向:

  • grep 更适合单纯的查找或匹配文本
  • sed 更适合编辑匹配到的文本
  • awk 更适合格式化文本,对文本进行较复杂格式处理

关于awk内建变量个人见解,简单易懂

解释一下变量:

变量:分为内置变量和自定义变量;输入分隔符FS和输出分隔符OFS都属于内置变量。

内置变量就是awk预定义好的、内置在awk内部的变量,而自定义变量就是用户定义的变量。

  • FS(Field Separator):输入字段分隔符, 默认为空白字符
  • OFS(Out of Field Separator):输出字段分隔符, 默认为空白字符
  • RS(Record Separator):输入记录分隔符(输入换行符), 指定输入时的换行符
  • ORS(Output Record Separate):输出记录分隔符(输出换行符),输出时用指定符号代替换行符
  • NF(Number for Field):当前行的字段的个数(即当前行被分割成了几列)
  • NR(Number of Record):行号,当前处理的文本行的行号。
  • FNR:各文件分别计数的行号
  • ARGC:命令行参数的个数
  • ARGV:数组,保存的是命令行所给定的各参数

自定义变量的方法

  • 方法一:-v varname=value ,变量名区分字符大小写。
  • 方法二:在program中直接定义。

2315rm

删除当前目录下的所有文件及目录,并且是直接删除,无需逐一确认命令行为:

rm  -rf  要删除的文件名或目录

删除文件名 test.txt:

rm  -rf   test.txt

删除目录 test,不管该目录下是否有子目录或文件,都直接删除:

rm  -rf   test/

2314mv

mv 操作文件时是移动并且重命名。

目标目录与原目录一致,指定了新文件名,效果就是仅仅重命名。

mv  /home/ffxhd/a.txt   /home/ffxhd/b.txt    

目标目录与原目录不一致,没有指定新文件名,效果就是仅仅移动。

mv  /home/ffxhd/a.txt   /home/ffxhd/test/ 
或者
mv  /home/ffxhd/a.txt   /home/ffxhd/test 

目标目录与原目录一致, 指定了新文件名,效果就是:移动 + 重命名。

mv  /home/ffxhd/a.txt   /home/ffxhd/test/c.txt

------------------------------------------------------

批量移动文件和文件夹:(在Ubuntu 18.04 奏效)

例如,将 /home/ffxhd/testThinkPHP5/tp5 目录里边的所有文件&文件夹 挪到 /home/ffxhd/testThinkPHP5

mv  /home/ffxhd/testThinkPHP5/tp5/*  /home/ffxhd/testThinkPHP5

注意:需要先执行显示隐藏文件命令,否则,隐藏文件以及隐藏文件夹不会被移动到新目录。

英语点号开头的文件会被作为隐藏文件处理,英语点号开头的文件夹也被作为隐藏文件夹处理。

例如:文件 .a.txt, 目录 .tp5

2313less

在 less 查看日志文件时,

1. 可以按大写 F,就会有类似 tail -f 的效果,读取写入文件的最新内容, 按 ctrl+C 停止。

2. 可以按 v 进入编辑模型, shift+ZZ 保存退出到 less 查看模式。

3. 可以按 :e 查看下一个文件, 用 :n:p 来回切换。

2312Linux 命令大全Linux 命令大全1、文件管理cat

dev/null:在类 Unix 系统中,/dev/null 称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。

而使用 cat $filename > /dev/null 则不会得到任何信息,因为我们将本来该通过标准输出显示的文件信息重定向到了 /dev/null 中。

使用 cat $filename 1 > /dev/null 也会得到同样的效果,因为默认重定向的 1 就是标准输出。 如果你对 shell 脚本或者重定向比较熟悉的话,应该会联想到 2 ,也即标准错误输出。

如果我们不想看到错误输出呢?我们可以禁止标准错误 cat $badname 2 > /dev/null