1.Linux基础命令
1.1 grep命令
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查
找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式为:
grep [-选项] ‘搜索内容串’ 文件名
在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep ‘a ’1.txt。
常用选项说明:
选项 含义
-v 显示不包含匹配文本的所有行(相当于求反)
-n 显示匹配行及行号
-i 忽略大小写
命令:grep -r + “查找的关键字” + 路径
搜索目录需要添加参数: -r
查找 /home/test下包含“hello,world“字符串的文件:
grep -r "hello,world" /home/test
示例:
1.grep -a hello /bin/ls 将二进制文件以文本文件的方式搜索hello
2.grep -i hello /etc/passwd 在/etc/passwd文件里找hello并且忽略大小写查找
3.grep -n hello /etc/passwd 搜索hello结果并显示在文件里出现的行号
4.grep -w hello /etc/passwd 搜索完全匹配hello单词的行
5.grep -v hello /etc/passwd 显示出在/etc/passwd文件里没有hello的行
6.grep -r hello /etc/ 在/etc/目录里所有文件里找hello并显示结果
7.grep -i hello /etc/passwd --color=auto 在/etc/passwd文件中找hello并
且忽略大小写,然后高亮显示匹配的关键字
1.2 管道
管道(|):一个命令的输出可以通过管道做为另一个命令的输入。
这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。
1.3 压缩包管理
1 tar
tar使用格式:
tar [选项] 打包文件名 文件
tar命令很特殊,其选项前面可以使用“-”,也可以不使用。
常用参数:
参数 含义
-c 生成档案文件,创建打包文件
-v 列出归档解档的详细过程,显示进度
-f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t 列出档案中包含的文件
-x 解开档案文件
注意:除了f需要放在参数的最后,其它参数的顺序任意。
1.tar -cvf 创建归档文件
2.tar -xvf 解除归档文件(还原)
3.tar -tvf 查看归档文件内容
2 gzip
tar与gzip命令结合使用实现文件打包、压缩。
tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
gzip使用格式如下:
gzip [选项] 被压缩文件
常用选项:
选项 含义
-d 解压
-r 压缩所有子目录
注:1.一次性压缩多个文件: gzip后面不能跟目录
2.tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加
一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。
常见用法:
1.压缩用法:tar -cvzf 压缩包包名 文件1 文件2 ...
2.解压用法: tar -zxvf 压缩包包名
参数 含义
-z 指定压缩包的格式为:file.tar.gz
3.解压到指定目录:-C (大写字母“C”)
例:tar -xvf new.tar.gz -C ./test/ 将 new.tar.gz 解压到当前目录下的 test 目录下
3.bzip2
tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用
xxxx.tar.bz2。
在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先
打包后压缩的过程。
压缩用法:tar jcvf 压缩包包名 文件...(tar -jcvf bk.tar.bz2 *.c)
解压用法:tar jxvf 压缩包包名 (tar -jxvf bk.tar.bz2)
常见格式:
tar -czvf
tar -cjvf
tar -xzvf
tar -xjvf
tar -xvf 万能解压 (gzip bzip2)
4.zip和unzip
1.通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
2.压缩文件:zip -r 目标文件(没有扩展名) 源文件
3.解压文件:unzip -d 解压后目录文件 压缩文件
2.文件权限管理
2.1 文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行
什么样的操作。
在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能
访问和如何访问这些文件和目录。
2.2 访问用户分类
通过设定权限可以从以下三种访问方式限制访问权限:
1)只允许用户自己访问(所有者)
所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许
所在的用户组能访问用户的文件。
2)允许一个预先指定的用户组中的用户访问(用户组)
用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员
归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。
3)允许系统中的任何用户访问(其他用户)
用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户
都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是 other
用户类
2.3 访问权限说明
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及
执行权限:
1.读权限(r)
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
2.写权限(w)
对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录
内文件的权限。
3.可执行权限(x)
对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
2.4 chmod
chmod 修改文件权限有两种使用格式:字母法与数字法。
1.字母法:chmod u/g/o/a +/-/= rwx 文件
[ u/g/o/a ] 含义
u user 表示该文件的所有者
g group 表示与该文件的所有者属于同一组( group )者,即用户组
o other 表示其他以外的人
a all 表示这三者皆是
[ +-= ] 含义
+ 增加权限
- 撤销权限
= 设定权限
rwx 含义
r read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录内部的内容。
w write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
x excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。
例:1.chmod o+w file 给文件file的其它用户增加写权限
2.chmod u-r file 给文件file的拥有者减去读的权限
3.chmod u=rwx,g=rx,o=r file 给文件file的拥有者设置读写执行的权限,文件file的组用户设置读执行权限,给其他用户设置读权限
2.数字法:“rwx” 这些权限也可以用数字来代替
r 读取权限,数字代号为 "4"
w 写入权限,数字代号为 "2"
x 执行权限,数字代号为 "1"
- 不具任何权限,数字t代号为 "0"
例:
chmod 751 file**:**
1.文件所有者:读、写、执行权限
2.同组用户:读、执行的权限
3.其它用户:执行的权限
注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。
如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限
2.5 chown
chown用于修改文件所有者
使用方法:chown 用户名 文件或目录名
1.将文件所属者修改为root用户
sudo chown root file 将文件file的文件所属者修改为root用户
2.将文件所属者改为test 所属组改为root
sudo chown test:root file .将文件所属者改为test,所属组改为root
3.单独只修改文件所属组
sudo chown :root file .将文件所属组改为root
2.6 chgrp
chgrp用于修改文件所属组
使用方法:chgrp 用户组名 文件或目录名
3.其他命令
3.1 重定向
标准输入 代码 0 默认设备为键盘
标准输出 代码 1 默认设备为屏幕
错误输出 代码 2 默认设备为屏幕
1.ls /etc/passwd > output.txt 标准正确输出重定向到output.txt
/etc/shadow >> output.txt 标准正确输出追加重定向到output.txt
3.ls dddddd 2> error.txt 标准错误输出重定向到error.txt
4.ls ddddd 2>> error.txt 标准错误输出重定向到error.txt,追加的方式
dddddd 2> /dev/null 标准错误输出重定向到黑洞
6.ls ddddd /etc/passwd &> /dev/null 标准正确输出标准错误输出全都重定向到黑洞
7.ls ddddd /etc/passwd &>> txt 标准正确输出标准错误输出以追加的方式全都重定向到txt
8.cat < file 标准输入重定向,file作为cat输入的内容
3.2 tree
tree 以树状形式查看指定目录内容,使用该命令需要安装软件 tree:
sudo apt install tree
常用选项:
-L n 查看n层目录
3.3 ln
ln命令主要用于创建链接文件。Linux链接文件类似于Windows下的快捷方式。
链接文件分为软链接和硬链接:
软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
硬链接:硬链接只能链接普通文件,不能链接目录。
使用格式:
ln 源文件 链接文件
ln -s 源文件 链接文件
如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即
使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。
注意:1.如果软链接文件和源文件不在同一个目录,源文件最好要使用绝对路径,不要使
用相对路径。
2.readlink命令读取符号链接文件的内容(存储目标文件的路径)
编辑器
vi有三种基本工作模式: 命令模式、文本输入模式(编辑模式)、末行模式
4.1命令模式
任何时候,不管用户处于何种模式,只要按一下ESC键,即可使vi进入命令模式。我们在
shell环境(提示符为$)下输入启动vim命令,进入编辑器时,也是处于该模式下。
在命令模式下,用户可以输入各种合法的vi命令,用于管理自己的文档。此时从键
盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的vi命令,则vi在
接受用户命令之后完成相应的动作。
4.2 编辑模式
在命令模式下输入插入命令i(I)、附加命令a(A) 、打开命令o(O)、替换命
s(S)都可以进入文本输入模式,此时vi窗口的最后一行会显示“插入”。
4.3 末行模式
1.末行模式下,用户可以对文件进行一些附加处理。尽管命令模式下的命令可以完成很
多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入末行模式的。
2.在命令模式下,输入冒号即可进入末行模式。此时vi窗口的状态行会显示出冒号,等
待用户输入命令。用户输入完成后,按回车执行,之后vi编辑器又自动返回到命令模式
下。
4.4 vim基本操作
1. 打开文件
vim filename:打开或新建文件,并将光标置于第一行行首,如果文件不存在,
则会新建文件。
2 编辑文件
如果通过vi打开一个已经存在的文件,首先进入命令模式,此时输入的任何字符都被
视为命令,不能输入内容。
在命令模式输入i
3.保存文件
一定要先退出插入模式(按Esc进入命令模式),然后(小写状态下),shift + zz
(按住 “shift” + 按两下“z”键),或者(大写状态下:ZZ) 即可保存退出当
前文件。
第一步:进入命令模式(ESC)
第二步:shifit + z z
4. 命令模式下的操作
1)切换到编辑模式
按键 功能
i 光标位置当前处插入文字
I 光标所在行首插入文字
o(字母) 光标下一行插入文字(新行)
O(字母) 光标上一行插入文字(新行)
a 光标位置右边插入文字
A 光标所在行尾插入文字
s 删除光标后边的字符,从光标当前位置插入
S 删除光标所在当前行,从行首插入
2) 光标移动
按键 功能
Ctrl + f 向前滚动一个屏幕
Ctrl + b 向后滚动一个屏幕
gg 到文件第一行行首
G(大写) 到文件最后一行行首,G必须为大写
mG或mgg 到指定行,m为目标行数
0(数字) 光标移到到行首(第一个字符位置)
$ 光标移到到行尾
l(小写L) 向右移动光标
h 向左移动光标
k 向上移动光标
j 向下移动光标
^ 光标移到到行首(第一个有效字符位置)
3)复制粘贴
按键 功能
[n]yy 复制从当前行开始的 n 行
p 把粘贴板上的内容插入到当前行
4)删除
按键 功能
[n]x 删除光标后 n 个字符
[n]X 删除光标前 n 个字符
D 删除光标所在开始到此行尾的字符
[n]dd 删除从当前行开始的 n 行(准确来讲,是剪切,剪切不粘贴即为删除)
dG 删除光标所在开始到文件尾的所有字符
dw 删除光标开始位置的字,包含光标所在字符
d0(0为数字) 删除光标前本行所有内容,不包含光标所在字符
dgg 删除光标所在开始到文件首行第一个字符开始的所有字符
5)撤销恢复
按键 功能
.(点) 执行上一次操作
u 撤销前一个命令
ctrl+r 反撤销
100 + . 执行上一次操作100次
6)保存退出
按键 功能
ZZ(shift+z+z) 保存退出
7)查找
按键 功能
/字符串 从当前光标位置向下查找(n,N查找内容切换)
?字符串 从当前光标位置向上查找(n,N查找内容切换)
8)替换
按键 功能
r 替换当前字符
R 替换当前行光标后的字符(ESC退出替换模式)
9)可视模式
按键 功能
v 按字符移动,选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制
Shift + v 行选(以行为单位)选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制
Ctrl + v 列选 选中文本,可配合h、j、k、l选择内容,使用d删除,使用y复制
5. 末行模式下的操作
all :表示所有
1)保存退出
按键 功能
:wq 保存退出
:x(小写) 保存退出
:w filename 保存到指定文件
:q 退出,如果文件修改但没有保存,会提示无法退出
:q! 退出,不保存
2)替换
按键 功能
:s/abc/123/ 光标所在行的第一个abc替换为123
:s/abc/123/g 光标所在行的所有abc替换为123
:1,10s/abc/123/g 将第一行至第10行之间的abc全部替换成123
:%s/abc/123/g 当前文件的所有abc替换为123
:%s/abc/123/gc 同上,但是每次替换需要用户确认
:1,$s/abc/123/g 当前文件的所有abc替换为123
3)分屏
按键 功能
:sp 当前文件水平分屏
:vsp 当前文件垂直分屏
: sp 文件名 当前文件和另一个文件水平分屏
: vsp 文件名 当前文件和另一个文件垂直分屏
ctrl-w-w 在多个窗口切换光标
:wall/:wqall/:qall 保存/保存退出/退出所有分屏窗口
vim -O a.c b.c 垂直分屏
vim -o a.c b.c 水平分屏
4) 其它用法(扩展)
按键 功能
:!man 3 printf 在vim中执行命令 (q退出)
:r !ls -l 将ls -l执行的结果写入当前文件中
:r /etc/passwd 将/etc/passwd文件中的内容写入到当前文件中
:w /tmp/txt 将当前文件内容写入到/tmp/txt文件中
:w! /tmp/txt 强制将当前文件内容写入到/tmp/txt文件中
:1,10s/^/\/\//g 将第1行到10行行首添加// (^表示行首) /\/\转移字符
:1,10s#^#//#g 将第1行到10行行首添加// (#可以临时代替/ 分隔)
:%s/;/\r{\r\treturn0;\r}\r/g 将;替换成{ return 0; }
:1,10s#//##g 将第1行到10行行首去掉// (#可以临时代替/ 分隔)