which_find查找命令的使用
which
Linux命令,其实它们的本体就是一个个的二进制可执行程序
which命令用于查找命令文件,在哪个目录
which 命令
find
在Linux系统中,我们可以通过find命令去搜索指定的文件
find 搜索的路径 -name "被查找的文件名"
grep_wc_管道符的使用
grep
grep
(global regular expression print)是一种常用的文本搜索工具
用于在文本或文件中查找特定的字符串
grep [-abcEFGhHilLnqrsvVwxy] pattern files
pattern - 表示要查找的字符串或正则表达式
files - 表示要查找的文件名,可以同时查找多个文件
- -i:忽略大小写进行匹配。
- -v:反向查找,只打印不匹配的行。
- -n:显示匹配行的行号。
- -r:递归查找子目录中的文件。
- -l:只打印匹配的文件名。
- -c:只打印匹配的行数。
wc
wc命令可以计算文件的Byte数、字数、或是列数
wc [-clw][--help][--version][文件...]
- -c/--bytes或-m/--chars 只显示Bytes数。
- -l或--lines 显示行数。
- -w或--words 只显示字数。
- --help 在线帮助。
- --version 显示版本信息。
管道符 |
管道符号|
通过将前一个命令的输出直接传递给后一个命令作为输入,从而构建起用于多个命令的连接方式
例如:
在当前目录下查找所有以.txt
结尾的文件名并输出到终端的功能
ls | grep .txt
列出目录/etc
中以pass
开头的文件或目录名
ls /etc | grep ^pass
查看当前目录下文件tmp.txt
,将结果传递来 grep
过滤出包含66 ,将结果传递来 grep
过滤出包含 1 的数据
cat tmp.txt |grep 66 | grep 1
应用场景:
- 数据处理:Linux管道符可以方便地用于对文件或文本进行处理
- 系统管理:Linux系统管理员经常使用管道符来执行多个命令以达到管理系统的目的
- 网络通信:在网络编程领域,管道符也被广泛应用
touch_echo的使用
touch
touch
命令在 Linux 操作系统中用于创建文件或修改文件的时间戳
如果指定的文件不存在,则会创建一个新的空白文件
touch 文件路径
常见用法
创建新文件
创建名为 file.txt
的新文件
touch file.txt
更改文件时间戳
更新名为 file.txt
文件的修改时间戳
touch file.txt
创建多个文件
创建三个名为 file1.txt
、file2.txt
和 file3.txt
的文件
touch file1.txt file2.txt file3.txt
echo
echo
用于在终端上输出一些文本信息
echo [option] string
常见用法
输出字符串(最基本的用法)
在终端上输出 Hello, Linux!
字符串
echo "Hello,Linux!"
显示 Shell变量
命令将在终端上输出 Hello, Linux!
。
myvar="Hello, Linux!"
echo $myvar
输出到文件
可以使用重定向符号 >
将 echo
命令的输出保存到一个文件中,将 Hello,Linux!
并将其保存到一个名为 myfile.txt
的文件中
echo "Hello, Linux!" > myfile.txt
重定向符的使用
在 Linux 中,重定向符用于将命令的输入或输出重定向到指定的文件、设备或管道中
重定向符包括 >
, <
, >>
, <<
等符号
常用用法
>
:将命令的标准输出重定向到一个文件中,例如:ls -l > file.txt
这个命令将列出当前目录下的文件,并将结果输出到一个名为
file.txt
的文件中。如果该文件不存在,则会创建它;如果存在,则会覆盖原有内容>>
:将命令的标准输出追加到一个文件中,例如:echo "Hello, World!" >> file.txt
这个命令将在
file.txt
文件的末尾添加一行文本。如果该文件不存在,则会创建它<
:使用一个文件的内容作为命令的标准输入,例如:sort < file.txt
这个命令将读取
file.txt
文件中的内容,并将其传递给 sort 命令,该命令对输入进行排序<<
:将一个字符串作为命令的标准输入,例如:grep 'hello' << EOF Hello, World! Goodbye, World! EOF
这个命令将使用
grep
命令来查找包含hello
字符串的行。字符串EOF
用于指定输入的结束,之间的文本将作为标准输入注意
重定向符号还可以结合管道符一起使用,例如:
ls -l | grep ".txt" > filelist.txt
这个命令将列出当前目录下的所有文件,并将其中包含
.txt
字符串的文件名保存到一个名为filelist.txt
的文件中VI_VIM的介绍
VI是 "Visual interface" 的简称, 是Linux中最经典的文本编辑器
VI不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序
VI没有菜单,只有命令,且命令繁多
VIM 是 VI 的改良版,增加了更多功能和特性,使它成为现代文本编辑器的代表之一
VIM 支持多种颜色方案,语法高亮、自动缩进等功能,可以大大提高编程效率
提示
VIM兼容VI几乎所有命令
VIM可以兼容多种操作系统
编辑器的三种模式
命令模式(Command mode)
命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能
此模型下,不能自由进行文本编辑
输入模式(Insert mode)
也就是所谓的编辑模式、插入模式
此模式下,可以对文件内容进行自由编辑
末行模式(Last line mode)
通常用于文件的保存、退出
此模型下,不能自由进行文本编辑
VI、VIM编辑器的基本使用
打开文件
因为VIM是VI的增强版,因为我们以VIM命令为例,通用VI命令
提示
VIM命令若是没有,可以使用
yum install vim -y
安装
- vim filename: 打开文件,并定位第1行
- vim filename +# :打开文件,并定位于第#行
- vim filename +:打开文件,定位至最后一行
- vim filename +/PATTERN : 打开文件,定位至第一次被PATTERN匹配到的行的行首
注意
- 如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
- 如果文件路径表示的文件存在,那么此命令用于编辑已有文件
打开文件后,默认是命令模式
编辑模式
在命令模式下,可以通过以下按键命令进入编辑模式
模式 | 按键命令 | 描述 |
---|---|---|
命令模式 | i | 在当前光标的位置,进入编辑模式 |
命令模式 | I | 在当前行的开头,进入编辑模式 |
命令模式 | a | 在当前光标位置之后,进入编辑模式 |
命令模式 | A | 在当前行的结尾,进入编辑模式 |
命令模式 | o | 在当前光标下一行,进入编辑模式 |
命令模式 | O | 在当前光标上一行,进入编辑模式 |
关闭文件
模式 | 按键命令 | 描述 |
---|---|---|
命令模式 | ZZ | 保存并退出 |
末行模式 | :q | 退出。没有动过文件 |
末行模式 | :wq | 保存并退出。动过了,不后悔 |
末行模式 | :q! | 退出。动过了,后悔了 |
末行模式 | :w | 保存,不退出 |
提示
在编辑模式与末行模式通过Esc返回到命令模式
VIM编辑器的扩展使用
末行模式
模式 | 按键命令 | 描述 |
---|---|---|
末行模式 | :set number | 显示行号,下次需要重新设置 |
末行模式 | :number | 令将光标定位到指定行 例如:":10"将光标移动到第 10 行 |
末行模式 | /searchstring | 按下 Enter 键开始查找,VIM 会高亮显示匹配的文本。 如果有多个匹配结果,可以使用 n(下一个)和 N(上一个)键进行导航 |
提示
永久增加vim中的行号,可以通过修改
~/.vimrc
文件,增加代码set number
命令模式
模式 | 按键命令 | 描述 |
---|---|---|
命令模式 | 键盘上、K | 向上移动光标 |
命令模式 | 键盘下、J | 向下移动光标 |
命令模式 | 键盘左、H | 向左移动光标 |
命令模式 | 键盘右、L | 向右移动光标 |
命令模式 | 0 | 移动光标到当前行的开头 |
命令模式 | $ | 移动光标到当前行的结尾 |
命令模式 | gg | 光标跳到首行 |
命令模式 | G | 光标跳到行尾 |
命令模式 | yy | 复制当前行 |
命令模式 | nyy | n是数字,复制当前行和下面的n行 |
命令模式 | p | 粘贴复制的内容 |
命令模式 | u | 撤销修改 |
命令模式 | Ctrl + r | 反向撤销修改 |
命令模式 | dd | 删除光标所在行的内容 |
命令模式 | ndd | n是数字,表示删除当前光标向下n行 |
命令模式 | dG | 从当前行开始,向下删除全部 |
命令模式 | dgg | 从当前行开始,向上删除全部 |
命令模式 | d$ | 从当前光标开始,删除到本行的结尾 |
命令模式 | d0 | 从当前光标开始,删除到本行的开头 |
命令模式 | PageUp | 向上翻页 |
命令模式 | PageDown | 向下翻页 |
命令模式 | / | 进入搜索模式 |
命令模式 | n | 向下继续搜索 |
命令模式 | N | 向上继续搜索 |
cut命令的使用
在 Linux 中,cut 命令是一种非常实用的文本处理工具。它可以用来从一行文本中提取特定列、字段和字符等信息
cut [option] [args] filename
选项
- s:不显示没有分隔符的行
- d:指定分隔符对源文件的行进行分割
- f:选定显示哪些列
- m-n: m列到n列
- -n: 第一列到n列
- m-: 第m列到最后一列
- n: 第n列
- x,y,z: 获取第x,y,z列
常用用法
提取指定列
cut -f 1 filename
使用分隔符提取字段
cut -d ',' -f 2 filename
指定字段范围
cut -d ',' -f 2-4 filename
显示1,3,7列
cut -d ',' -f 1,3,7 filename
如果有的行没有分隔符,则输出会包含脏数据
cut -sd -d ',' -f -10 filename
将多个文件合并到一起,并从这些文件中提取信息,则可以使用以下命令
cat file1.txt file2.txt | cut -d ',' -f 1,3
sort命令的使用
在 Linux 系统中,sort 命令是一种非常实用的文本处理工具,它可以用来对文本文件进行排序
sort [options] [file]
选项
- -n : 按数值排序
- -r : 倒序 reverse
- -t : 自定义分隔符
- -k : 选择排序列
- -f : 忽略大小写
常用用法
演示文本内容
a b 1
dfdsa fdsa 15
fds fds 6
fdsa fdsa 8
fda s 9
aa dd 10
h h 11
默认字典序排序
sort sort.txt
指定字段分隔符,按照第2个字段的字典序排序
sort -t ' ' -k 2 sort.txt
指定字段分隔符,按照第3个字段字典序排序
sort -t ' ' -k 3 sort.txt
指定字段分隔符,按照第3个字段的数值序排序
sort -t ' ' -nrk 3 sort.txt
指定字段分隔符,按照第3个字段的值数值倒序
sort -t ' ' -nrk 3 sort.txt
排序完,输出到文件
sort -t ' ' -nrk 3 sort.txt > newfile
sed命令的使用
sed 是一种在 Linux 系统中非常有用的文本处理工具,它可以用于对文本进行替换、删除、插入等操作
sed [选项] [脚本命令] 文件名
选项:
- - i : 此选项会直接修改源文件,要慎用
脚本命令:
d:删除符合条件的行
a\string:在指定的行后追加新行,内容为string
i\string:在指定行前添加新行,内容是string
s/string1/string2/:查找并替换,默认只替换每行第一次模式匹配到的字符串
- g:行内全局替换
- i: 忽略大小写
/regex/: 匹配某个数据
- p:打印结果
- w filename:输出到指定的文件
案例
案例文本
Authentication improvements when using an HTTP proxy server.
Support for POSIX-style 8 filesystem extended attributes. filesystem
YARN's REST APIs now support write/modify operations.
# 第一行下插入一行
[root@node1 ~]# sed "1a\hello world" sed.txt
# 直接修改文件
[root@node1 ~]# sed -i "1a\hello world" sed.txt
# 删除第2行
[root@node1 ~]# sed -i "2d" sed.txt
# 删除文档中的每一行
[root@node1 ~]# sed "d" sed.txt
# 将 filesystem 替换为 FS
[root@node1 ~]# sed "s/filesystem/FS/" sed.txt
# 忽略大小写
[root@node1 ~]# sed "s/filesystem/FS/i" sed.txt
# 不仅忽略大小写还要行内全局替换
[root@node1 ~]# sed "s/filesystem/FS/gi" sed.txt
#原来的内容要打印,匹配的行要打印,找到的行会打印两次
[root@node1 ~]# sed "/[0-9]/p" sed.txt
#匹配行中包含0-9 任意一个字符的行,只打印找到的行
[root@node1 ~]# sed -n "/[0-9]/p" sed.txt
# 匹配行中包含PATH的行,只打印找到的行
[root@node1 ~]# sed -n "/support/p" sed.txt
# 匹配行中包含PATH的行,将找到的行的内容写入到指定的文件中
[root@node1 ~]# sed -n "/support/w support.log" sed.txt
[root@node1 ~]# cat path.log
awk命令基本使用介绍
awk 命令是一款功能强大的文本处理工具,常用于对文本文件进行分析、过滤和格式化
在 Linux 系统中,awk 命令可以通过终端界面或者脚本方式进行调用
语法
awk [-F ":"] 'pattern {action}' filename
- pattern:指定需要匹配的模式或条件,可以使用正则表达式或特定的内置变量
- action:指定匹配成功后需要执行的操作,通常为输出或编辑指定的文本
- filename:指定需要处理的文本文件名,如果不指定则默认从标准输入读取
例如,下面的命令会将 file.txt 文件中包含字符串 "Linux" 的行进行输出:
awk '/Linux/{print}' file.txt
内置变量
awk 命令提供了许多内置变量,可以用于获取特定行或列的信息。以下是常用的一些内置变量:
NF:表示当前行的有多少列。
NR:表示当前处理的是文件中的第几行。
$0:代表整个当前行。
$1:代表当前行的第一个字段,依次类推。
例如,下面的命令会输出 file.txt 文件中每一行的第一个字段:
awk '{print $1}' file.txt
Awk 操作符
awk 命令支持一些操作符,可以对文本进行过滤和格式化。以下是常用的一些操作符:
- ~:匹配正则表达式。
- !~:不匹配正则表达式。
- ==:等于。
- !=:不等于。
- <:小于。
- >:大于。
- <=:小于等于。
- >=:大于等于。
例如,下面的命令会输出 file.txt 文件中包含字符串 "Linux" 且第二个字段大于 20 的行:
awk '/Linux/ && $2 > 20 {print}' file.txt
在示例中, && 表示逻辑与操作符,该命令只有当两个条件都被满足时,才会进行输出行的操作。
Awk 内置函数
awk 命令还提供了许多内置函数,可以用于对文本进行处理。以下是一些常用的内置函数:
- length(string):返回指定字符串的长度。
- substr(string, start, length):返回指定字符串的子串。
- index(string, search):查找指定字符串中第一个匹配搜索字符串的位置。
- toupper(string):将指定字符串转换成大写字母。
- tolower(string):将指定字符串转换成小写字母。
例如,下面的命令会将 file.txt 文件中每一行的第一个字段转换成大写字母:
awk '{print toupper($1)}' file.txt
在示例中,toupper() 函数将第一个字段中的所有字符转换为大写字母,并通过 print 命令进行输出。
案例
Name,Age,Gender,Country
Alice,25,F,USA
Bob,30,M,Canada
Cathy,18,F,China
David,28,M,UK
Emily,22,F,USA
Frank,35,M,Australia
Gina,32,F,Italy
Harry,40,M,USA
Ivy,27,F,China
John,45,M,Germany
# 输出第一列,即姓名
awk -F"," '{print $1}' file.txt
# 输出每个人的名字和国家,以逗号分隔
awk -F"," '{print $1,$4}' file.txt
# 输出年龄小于20的人的名字和国家
awk -F"," '$2<20 {print $1, $4}' file.txt
# 输出中国和美国出生的人的姓名和年龄
awk -F"," '$4 ~/China|USA/ {print $1, $2}' file.txt
# 将所有人的年龄增加 5 岁后进行输出,并将输出结果保存到文件中
awk -F"," '{$2+=5; print}' file.txt > newfi
awk -F"," 'NR>1 {$2+=5; print}' file.txt > newfile.txt