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
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
2)在/etc/passwd文件中检索“lhey",只输出“lhey"
[root@localhost ~]# grep -o lhey /etc/passwd
lhey
lhey
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
4)使用 -l 参数列出包含指定样式的文件的文件名
[root@localhost ~]# grep -l lhey /etc/passwd /etc/group /etc/fstab
/etc/passwd
/etc/group
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
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
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
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
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
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
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
3. paste 合并命令
paste命令格式:paste 空格 [选项] 空格 文件名1 空格 文件名2
- -d:指定分隔符
示例:
[root@localhost test]# paste 1.test 2.test//合并两个文件或两栏的内容
111 222
222 333
aaa aaa
bbb
[root@localhost test]# paste -d "+" 1.test 2.test//合并两个文件或两栏的内容,中间用"+"区分
111+222
+
222+333
aaa+aaa
+bbb
注意:拆分文件用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
[root@localhost data]# tar -jcvf vm.tar.gz f1 f2 f3//将三个文件归档后调用bzip2程序压缩成vm.tar.gz2
f1
f2
f3
[root@localhost data]# tar -zxvf vm.tar.gz -C /opt//将vm.tar.gz文件解压缩到/opt目录
f1
f2
f3
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/^/#/