Linux基本命令(二)

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 显示版本信息。

image-20230404145125002

管道符 |

管道符号| 通过将前一个命令的输出直接传递后一个命令作为输入,从而构建起用于多个命令的连接方式

例如:

在当前目录下查找所有以.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.txtfile2.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可以兼容多种操作系统

编辑器的三种模式

image-20230406110412079

  • 命令模式(Command mode)

    命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能

    此模型下,不能自由进行文本编辑

  • 输入模式(Insert mode)

    也就是所谓的编辑模式、插入模式

    此模式下,可以对文件内容进行自由编辑

  • 末行模式(Last line mode)

    通常用于文件的保存、退出

    此模型下,不能自由进行文本编辑

VI、VIM编辑器的基本使用

image-20230406110412079

打开文件

因为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复制当前行
命令模式nyyn是数字,复制当前行和下面的n行
命令模式p粘贴复制的内容
命令模式u撤销修改
命令模式Ctrl + r反向撤销修改
命令模式dd删除光标所在行的内容
命令模式nddn是数字,表示删除当前光标向下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

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值