我们知道 Linux 下有非常多的命令,我们可以通过这些命令在 Shell 环境下与机器进行交互,那么 Linux 下有多少资源可以供我们调度呢?其实是非常多的,但所有资源都可以分为三大类型。
文件:Everything is file;
进程:文件的运行形态;
网络:特殊的文件。
文件相关
首先,我们来看文件,文件也可以理解为数据,在 Linux 环境下有一个很基本的设计原则,即 Everything is file,所有的内容都是以文件的形式来进行抽象的,比如:进程、网络、硬件等,都可以抽象成文件,可以对其进行打开、读取、写入等操作,所以文件便是我们入门的第一个知识点,文件又可以分为这样几类常见的命令。
磁盘与目录
# 打印设备上挂载了多少个磁盘设备,以及磁盘里还有多少可用空间
df
df -h
- 图示
查看目录下所有文件
ls 可以打印当前目录下的所有文件和目录,你可以通过 ls 命令,把当前所有的目录和文件都打印出来了。
[root@VM-4-11-centos /]# ls
- 图示
ls 有一个常用的参数叫 -l,-l 可以打印出每个文件的基本信息
[root@VM-4-11-centos /]# ll
这里打印出了它的文件权限、文件归属 root、文件大小,以及何时被创建等信息。
- 图示
- 进入tmp文件查看文件下的所有文件
[root@VM-4-11-centos /]# cd tmp/
[root@VM-4-11-centos tmp]# ls
使用 ls、cd 命令可以让我们在不同目录之间进行切换,切换之后还可以通过 pwd 命令获取当前目录所在的路径。
[root@VM-4-11-centos tmp]# pwd
文件编辑
以上就是磁盘与目录进行切换、读取、获取信息的一些常用命令,接下来,我们进入一个文件并对文件进行编辑。
vi编辑器
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令
- 输入模式
在命令模式下按下【i】就进入了输入模式。在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符 方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
- 退出vi编辑器
:w 将编辑的数据写入硬盘档案中(常用)
:w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入,还是跟档案权限有关
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~ :wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出) ZQ 不保存,强制退出。效果等同于 :q!。
:w> [filename] 将编辑的数据储存成另一个档案(类似另存新档)
:r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将『filename』 这个档案内容加到游标所在行后面 :n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
:! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
先创建一个file_demo.txt
[root@VM-4-11-centos tmp]# vi ./file_demo.txt
-
打开之后
-
键盘敲击i,进入编辑状态
在文件中输入内容
-
然后用wq退出文件
查看文件内容
我们可以使用三种方法阅读文件:
cat,它可以阅读文件并查找文件内容,但缺点就是一页的内容非常长;
more,可以实现翻页阅读,缺点就是不够灵活;
less,它既可以实现上下滑动,还可以实现左右移动,可以实现交互式阅读,是三种阅读方法中最强大的。
- cat
[root@VM-4-11-centos tmp]# cat file_demo.txt
- more
[root@VM-4-11-centos tmp]# more file_demo.txt
- 回车查看更多
- less
可以通过键盘上下左右来控制阅读,方便
[root@VM-4-11-centos tmp]# less file_demo.txt
查看日志内容
tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容
Linux tail命令语法 (1. Linux tail Command Syntax)
The syntax of tail command is:
tail命令的语法为:
tail [参数] [文件]
参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
–pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
- 要显示 config.log 文件的最后 10 行,请输入以下命令:
[root@yaoweilai-test1 nacos]# tail config.log # 默认显示十行
- 要跟踪名为 config.log 的文件的增长情况,请输入以下命令:
[root@yaoweilai-test1 nacos]# tail -f config.log
- 显示文件 config.log 的最后 500 个字符:
[root@yaoweilai-test1 nacos]# tail -c 500 config.log
文件权限
虽然我们掌握了如何编辑一个文件,但在编辑文件之前仍然需要管理文件的权限。那么如何对一个文件的权限进行管理呢?
了解chmod
Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
- 权限修改人只能是文件所有者或者root
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
- 八进制语法
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
-
例如, 765 将这样解释:
所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。r=4,w=2,x=1
若要 rwx 属性则 4+2+1=7;
若要 rw- 属性则 4+2=6;
若要 r-x 属性则 4+1=5。
举例:
- 赋值file_demo.txt 全权限
[root@VM-4-11-centos tmp]# chmod 777 file_demo.txt
[root@VM-4-11-centos tmp]# ll file_demo.txt
- 去除用户组所有权限
[root@VM-4-11-centos tmp]# chmod 707 file_demo.txt
[root@VM-4-11-centos tmp]# ll file_demo.txt
查询文件
grep
grep 命令用于查找文件里符合条件的字符串
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
-o 表示只打印匹配的数据
-E 表示支持使用扩展正则表达式
-i 表示不区分大小写
- 查找文件中是否有符合的字符串
[root@VM-4-11-centos /]# grep 测试一下 /tmp/file_demo.txt
- 在当前文件夹下查找是否有符合字符串的文件
[root@VM-4-11-centos tmp]# grep 测试 *
- 查找文件夹中文件是否包含某个字符串
以递归的方式查找符合条件的文件。例如,查找指定目录/tmp 及其子目录(如果存在子目录的话)下所有文件中包含字符串"测试"的文件,并打印出该字符串所在行的内容,使用的命令为
grep -r 测试 /tmp/
- 不区分大小写查询
[root@VM-4-11-centos tmp]# grep -i CESHI *
- 只打印匹配到的数据
[root@VM-4-11-centos tmp]# grep -o -i CESHI *
- grep 正则表达式匹配查询
正则表达式分为两类,第一类称为基本表达式,基本表达式包括了典型的正则标识符。
^表示开头;
$表示结尾;
[]表示任意匹配项;
*表示0个或多个;
.表示任意字符。
第二类是扩展表达式,它在基础表达式的基础上做了一些扩展,支持了更高级的语法和更复杂的条件。
?表示非贪婪匹配;
+表示一个或多个;
() 表示分组;
{} 表示一个范围的约束;
| 表示匹配多个表达式中的任何一个。
- 举例:
我要查询 csehi,以及ssss
[root@VM-4-11-centos tmp]# grep -E "(ceshi|ssss)" file_demo.txt
如果不带-E 则不会返回任何信息
- 如果不想带-e搜索, 使用\转义然后查询,可以达到一样的效果
[root@VM-4-11-centos tmp]# grep "\(ceshi\|ssss\)" file_demo.txt
- 任意匹配
[root@VM-4-11-centos tmp]# grep "[ceshi].." file_demo.txt
find
Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
- 查询当前文件夹下符合条件数据文件
[root@VM-4-11-centos tmp]# find . -name "*.log"
- 全局查询python3文件
[root@VM-4-11-centos tmp]# find / -name python3
- 忽略大小写查询
find / -iname PYTHON3
解压缩文件
Linux tar(英文全拼:tape archive )命令用于备份文件。
tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
tar解压文件
常用的参数
-v或–verbose 显示指令执行过程。
-f<备份文件>或–file=<备份文件> 指定备份文件。
-z或–gzip或–ungzip 通过gzip指令处理备份文件。
-x或–extract或–get 从备份文件中还原文件。
-g或–listed-incremental 处理GNU格式的大量备份。
-G或–incremental 处理旧的GNU格式的大量备份。
-h或–dereference 不建立符号连接,直接复制该连接所指向的原始文件。
-i或–ignore-zeros 忽略备份文件中的0 Byte区块,也就是EOF。
-k或–keep-old-files 解开备份文件时,不覆盖已有的文件。
-K<文件>或–starting-file=<文件> 从指定的文件开始还原。
-l或–one-file-system 复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。
-L<媒体容量>或-tape-length=<媒体容量> 设置存放每体的容量,单位以1024 Bytes计算。
-m或–modification-time 还原文件时,不变更文件的更改时间。
-M或–multi-volume 在建立,还原备份文件或列出其中的内容时,采用多卷册模式。
-N<日期格式>或–newer=<日期时间> 只将较指定日期更新的文件保存到备份文件里。
-o或–old-archive或–portability 将资料写入备份文件时使用V7格式。
-O或–stdout 把从备份文件里还原的文件输出到标准输出设备。
-p或–same-permissions 用原来的文件权限还原文件。
-P或–absolute-names 文件名使用绝对名称,不移除文件名称前的"/"号。
-r或–append 新增文件到已存在的备份文件的结尾部分。
-R或–block-number 列出每个信息在备份文件中的区块编号。
-s或–same-order 还原文件的顺序和备份文件内的存放顺序相同。
- 解压文件 比如解压python文件
[root@VM-4-11-centos tmp]# tar -zxvf Python-3.8.6.tgz
- 压缩文件
我们先将刚才解压的文件cp一份,然后在进行压缩
[root@VM-4-11-centos tmp]# cp -r Python-3.8.6/ py3
然后压缩文件
[root@VM-4-11-centos tmp]# tar -zcvf py3.tgz py3/
zip解压文件
Linux zip 命令用于压缩文件。
zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
常用参数:
-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 更新现有的文件。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率> 压缩效率是一个介于1-9的数值。
- zip打包
[root@VM-4-11-centos tmp]# zip -q file_demo file_demo.txt
unzip解压包
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-l 显示压缩文件内所包含的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行是时显示详细的信息。
-z 仅显示压缩文件的备注文字。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中原有的目录路径。
-L 将压缩文件中的全部文件名改为小写。
-M 将输出结果送到more程序处理。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执行后覆盖原有文件。
-P<密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
-s 将文件名中的空白字符转换为底线字符。
-V 保留VMS的文件版本信息。
-X 解压缩时同时回存文件原来的UID/GID。 [.zip文件] 指定.zip压缩文件。 [文件] 指定要处理.zip压缩文件中的哪些文件。
-d<目录> 指定文件解压缩后所要存储的目录。
-x<文件> 指定不要处理.zip压缩文件中的哪些文件。
-Z unzip -Z等于执行zipinfo指令。
- zip解压文件
[root@VM-4-11-centos file]# unzip file.zip
- 查看压缩文件中包含的文件
[root@VM-4-11-centos file]# unzip -l file.zip
- 查看压缩文件目录信息,但是不解压该文件
[root@VM-4-11-centos file]# unzip -v file.zip
总结
本章主要是讲述了linux的常用命令.主要针对文件类型以及权限进行了详细描述,另外我们常用的查找文件,或者查找文件夹,是我们日常查看日志需要了解的命令,能够帮助我们更快的定位到问题,提交给开发并修改,解压缩文件是我们下载第三方插件时需要用到的,面试的时候也是经常问题的
- 部分资料来自菜鸟教程
https://www.runoob.com/linux/linux-command-manual.html
文章评论