【Linux基础命令:wc、grep、paste、压缩和解压缩、tar、vi编辑器

288 阅读6分钟

Linux基础命令

一、文件管理命令

1. wc(word count)统计文件

wc命令格式:wc 空格 [选项] 空格 目标文件/文件夹/用户名/标准输出

  • -l:统计行数

  • -w:统计单词个数

  • -c:统计字节数

  • -a:查看隐藏字符

标准输入:你用键盘输入的信息叫标准输入;

标准输出:电脑反馈给你的正确的信息叫标准输出;

错误输出:电脑反馈给你的非正确信息叫错误输出;

wc可以接收标准输出,然后进行统计.

示例

[root@localhost test]# cat 1.test//查看文件内容
111

222
aaa
[root@localhost test]# wc -l 1.test//统计行数,注意空行也会被统计
4 1.test
[root@localhost test]# wc -w 1.test//统计单词个数
3 1.test
[root@localhost test]# wc -c 1.test//统计字节数
13 1.test

image.png

2. grep (global regular expression print) 检索、过滤文件内容

grep命令格式:grep 空格 [选项] 空格 匹配式/表达式 空格 文件或标准输入

选项说明

选项作用
-i查找时忽略大小写
-v反向查找,输出与查找条件不相符的行
-o只显示匹配项
-w精确匹配。例如-w local,那么localhost不会被匹配,只精确匹配local
-f对比两个文件的相同行
-l列出文件内容符合指定样式的文件名称
-L列出文件内容不符合指定样式的文件名称
-R在目录内递归查找
-n显示匹配行及行号
-c计算符合样式的行数
-e实现可多个查找条件的匹配,逻辑or(或)关系
-A 5显示匹配行和后5行的内容
-B 5显示匹配行和前5行的内容
-C 5显示匹配行和前后各5行的内容

例如:

表示字符的位置:

^表示:以什么字符开头,开头就写在开头

$表示:以什么字符结尾,结尾就写在最后

^$表示:空行

^root$表示:这一行只有root这一行

空行:grep “^$”

非空行:grep -v “^$”

不是以#号开头的行:grep -v “^#”

通配符:匹配文件名字 用ls find 【a-z】除了大Z

正则表达式:匹配文章中的内容(字符串)(grep)【a-z】就是小写字母

示例

1)在/etc/passwd文件中,检索出含有“lhey"的行

[root@localhost ~]# grep lhey /etc/passwd
lhey:x:1000:1000:LHEY:/home/lhey:/bin/bash

image.png

2)在/etc/passwd文件中检索“lhey",只输出“lhey"

[root@localhost ~]# grep -o lhey /etc/passwd
lhey
lhey

image.png

3)在多个文件中检索”lhey"

[root@localhost ~]# grep lhey /etc/passwd /etc/group /etc/fstab
/etc/passwd:lhey:x:1000:1000:LHEY:/home/lhey:/bin/bash
/etc/group:lhey:x:1000:lhey

image.png

4)使用 -l 参数列出包含指定样式的文件的文件名

[root@localhost ~]# grep -l lhey /etc/passwd /etc/group /etc/fstab
/etc/passwd
/etc/group

image.png

5) 使用-n参数,在文件中查找指定样式并显示匹配行的行号

[root@localhost ~]# grep -n bash /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
41:lhey:x:1000:1000:LHEY:/home/lhey:/bin/bash

image.png

6)使用-v反向查找,输出与查找条件不相符的行

[root@localhost ~]# grep -v nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
lhey:x:1000:1000:LHEY:/home/lhey:/bin/bash

image.png

7)使用-i "^a",检索出以a开头的行,且不区分大小写

[root@localhost ~]# grep -i "^a" /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

image.png

8)使用"h$",检索出以h结尾的行

[root@localhost ~]# grep "h$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
lhey:x:1000:1000:LHEY:/home/lhey:/bin/bash

image.png

9)使用-v "^$" 过滤出非空行

[root@localhost test]# cat 1.test//查看1.test文件内容
111

222
aaa
[root@localhost test]# grep -v "^$" 1.test//过滤出非空行
111
222
aaa
[root@localhost test]# cat 1.test|grep -v "^$" >test.txt//将非空行写入到test.txt文件
[root@localhost test]# cat test.txt//查看test.txt
111
222
aaa

image.png

10)使用通配符和管道符,过滤出IP地址

[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::4d24:cb15:cb83:3673  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:4d:05:14  txqueuelen 1000  (Ethernet)
        RX packets 9534  bytes 799274 (780.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7596  bytes 1045472 (1020.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# ifconfig ens33 |grep netmask|grep -o "[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9].[0-9][0-9]"|head -n 1//过滤出IP地址
192.168.1.10

image.png

11)-f 对比两个文件的相同行

[root@localhost test]# cat 1.test
111

222
aaa
[root@localhost test]# cat 2.test
222

333
aaa
bbb
[root@localhost test]# grep -f 1.test 2.test
222

333
aaa
bbb

image.png

3. paste 合并命令

paste命令格式:paste 空格 [选项] 空格 文件名1 空格 文件名2

  • -d:指定分隔符

示例

[root@localhost test]# paste 1.test 2.test//合并两个文件或两栏的内容
111	222
	
222	333
aaa	aaa
	bbb

image.png

[root@localhost test]# paste -d "+" 1.test 2.test//合并两个文件或两栏的内容,中间用"+"区分
111+222
+
222+333
aaa+aaa
+bbb

image.png

注意:拆分文件用split命令

4. gzip和bzip2 压缩文件

gzip和bzip2都是压缩软件,比如windows里的好压和360压缩或微软自带的等等。

gzip命令格式:gzip 空格 [-9] 空格 文件名

bzip2命令格式:bzip2 空格 [-9] 空格 文件名

  • 1~9 指定压缩级别, 数字越大压缩级别越高 。-1最快压缩,-9最大压缩 。

解gzip命令格式:gzip -d .gz格式的压缩文件;

解bzip2命令格式:bzip2 -d .bz2格式的压缩文件

相同点

  • 只能压缩文件 , 不能压缩目录

  • 默认压缩后会删除源文件。(bzip2可以使用-k保留源文件)

区别

  • gzip比bzip2的压缩速度快,而bzip2的压缩率高于gzip。

5. tar 归档文件夹

tar命令格式:tar 空格 [选项] 空格 自定义压缩包名称 空格 要压缩文件

  • -c :新建打包文件

  • -t :不解压查看打包文件的内容

  • -x :解打包或解压缩的功能,可以搭配

  • -C(大写):指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中

  • -j :通过bzip2的支持进行压缩/解压缩

  • -z :通过gzip的支持进行压缩/解压缩

  • -v :在压缩/解压缩过程中,将正在处理的文件名显示出来

  • -f filename :filename为要处理的文件,一定要加

  • -C dir :指定压缩/解压缩的目录dir

示例

[root@localhost data]# tar -zcvf vm.tar.gz f1 f2 f3//将三个文件归档后调用gzip程序压缩成vm.tar.gz
f1
f2
f3

image.png

[root@localhost data]# tar -jcvf vm.tar.gz f1 f2 f3//将三个文件归档后调用bzip2程序压缩成vm.tar.gz2
f1
f2
f3

image.png

[root@localhost data]# tar -zxvf vm.tar.gz -C /opt//将vm.tar.gz文件解压缩到/opt目录
f1
f2
f3

image.png

vi / vim 编辑器

一、 vi / vim 编辑器详解

vim命令是linux系统字符界面下的最常用的文本编辑器。

vim编辑器是所有linux的标准编辑器,用于编辑任何ASCⅡ文本,对于编辑源程序尤其有用。vim编辑器功能非常强大,可以对文本进行创建,查找,替换,删除,复制和粘贴等操作。

在linux系统shell提示符中输入vim和文件名后,就进入vim编辑界面。如果系统内还不存在该文件,就等于新建文件,如果系统内存在文件,就意味着编辑该文件。

二、vim编辑器的三种模式

  • 命令模式:进去时默认的模式(例如:1.光标的移动2.复制3.删除4.粘贴5.其他操作)

  • 输入模式:在命令模式按i键可以进入输入模式(编辑你的文件)

  • 末行模式:保存,查找替换,设置默认的参数等

三、命令模式下的常用命令

常用的键盘操作:
数字G                 //跳转到数字行

G                     //最后一行

1G                    //第一行

gg                    //第一行

w                     //单词间跳转

5w                    //跳过5个单词

y                     //复制

yy                    //复制一行

yw                    //复制一个单词

10 yy                 //复制十行

p                     //在光标下一行粘贴

P                     //在光标上一行粘贴

u                     //撤回

CTRL+r                //撤回撤回

dd                    //剪切,删除

10 dd                 //剪切十行

dw                    //剪切一个单词

zz                    //保存退出

^                     //跳转到行首(到第一个字符)

0                     //跳转到行首

$                     //跳转到行尾

end                   //跳转到行尾

x                     //剪切一个字符

~                     //大小写转换

r                     //替换字符

R                     //替换模式 可以一直替换

J                     //合并两行

四、命令模式切换至输入模式

输入模式: 使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令,当编辑文件完成后按 Esc 键即可返回命令模式。

快捷键功能描述
i在光标前插入随后输入的文本,光标后的文本相应向右移动
I行首插入命令。=^i ,移动到第一个非空字符并进入插入模式
o在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
O在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
a在当前光标所在位置之后插入随后输入的文本
A行尾插入命令

注意:我们常用的是i键和o键。

五、末行模式的基本操作

末行模式:文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。

快捷键功能效果
:q退出不保存
:q!强制退出不保存
:w保存
:w 新文件名另存为新文件
:wq 或 :zz 或 :x保存并退出
:e 其他文件名(如果已修改需要加e!)打开新文件进行编辑
:r 其他文件名在当前文件中读入其他文件内容
: [替换范围] s/旧内容/新内容[/g]将旧内容替换为新内容
:s /old/new替换当前行中的第一个old改为new
:s /old/new/g替换当前行中的所有old改为new(/@#都可做分隔符)
:#,# s/old/new/g#到#行所有old改为new
:% s/old/new/g%代表全文,全文替换所有old改为new
:$ s/AB/CD/g$表示最后一行,最后一行的AB替换为CD
:$-1 s/AB/CD/g$-1表示倒数第二行,倒数第二行进行替换
:# d删除 第#行
:#,# d删除#到#行
:#,# y复制三到6 行
:set nu (:set nonu取消设置)加行号 不显示行号
:set cul (:set nocul 取消设置)光标所在行有下划线(取消)
:set ai对齐 回车后和上一行对齐
:set all可以看所有的一些帮助
:set key=password加密码
:set key=空白取消密码

六、可视化模式的基本操作

末行模式下的查找替换

通式:s 空格 /旧字符/新字符/修饰符

  • 旧字符:可以使用正则表达式表示

  • 新字符:必须是确定的字符

  • 修饰符:条件

查找替换的范围:

  • 不写,默认处理光标所在行

  • %:全文

  • $:最后一行

  • $-1:倒数第二行

  • n:代表数字,多少行

  • 3,10:3到10行

  • .:当前行

  • 2,+3:2到5行

修饰符

  • g:全局替换

  • j:忽略大小写

  • c:替换前询问是否替换

例如:s /root/admin/g

去掉开头的所有#号:%s/^#//

在所有行开头加#号:%s/^/#/