周游Linux操作系统——指令实战2
作者:Rhythm_2019
Emial:rhythm_2019@163.com
学习时间:2021.02.07
在上一篇博客中我们已经学会了远程登录、VIM的实用和Linux的用户管理,今天我们就来捋一捋Linux中的运行级别及切换、文件目录、日期时间、搜索和压缩类的指令
运行级别
Window中有正常启动和安全模式两种模式,类似的Linux也有7个运行级别
1 | 0: 关机 |
我们虚拟机开机后进入的是5,我们可以使用init 数字
切换用户状态
1 | init 3 |
我们也可以在开机时修改运行级别,即使忘记root密码也能及时修改,具体可以参考视频P25,我用到CentOS7重置密码好像要复杂一些
就是在系统启动菜单选择你的系统,按e
编辑他的启动参数
- 删除 rhgb quiet
- ro 修改成 rw
- 最后添加 init=/bin/sh
然后我们就进入单用户模式啦,使用
passwd
修改root密码touch /.autorelabel
更新selinux信息exec /sbin/init
重启
帮助指令
在Linux中help
和man
都可以查看指令帮助信息
help
主要查看Shell内部指令man
帮助查询外部指令
文件目录类
下面介绍的都是操作文件目录的指令
pwd
指令
查看当前的绝对路径
ls
指令
查看某目录下的详细信息,类似window里面的dir
显示当前目录所有的文件和目录,包括隐藏的。
1
ls -la /home
查看文件目录及文件大小(MB、KB)
1
ls -lh /home
h是human的意思,就是显示让人看的文件大小
cd
指令
修改当前的文件路径
- 相对路径:使用
..
代表上一级目录,像../../home
这样 - 绝对路径:类似于
/usr/local/
这种,从根目录/
开始数的
我们可以使用cd ..
返回上一级目录,使用cd
或者cd ~
回到home
目录
mkdir
指令
创建文件夹,默认只能创建一级,加上参数p
可以创建多级
1 | mkdir -p /home/test/a |
rmdir
指令
删除一个空的目录
1 | rmdir /hoem/test/a |
即使a是空的也不能删除test,如果想要删除整个文件见则需要使用rm
指令
touch
指令
创建一个空文件
1 | touch README.md |
cp
指令
复制文件或目录,使用r
可以递归复制
复制单个文件
1
cp /home/test/test01/t1.txt /home/test/test02/
复制整个目录
1
cp -r /home/test/test01 /home/test/test02/
复制牡蛎下的所有文件
1
cp -r /home/test/test01/* /home/test/test02/
有时候复制的东西比较多,每次提示你要不要覆盖很烦的话我们可以使用\cp
强制复制
rm
指令
删除文件/文件夹,比较重要的参数有两个:r
我觉得是recursion
的意思,就是递归嘛,f
则是强制删除,不提示那种
1 | rm -rf /home/test |
mv
指令
移动文件或重命名
- 如果目标文件或目录和源文件或目录在同一目录下则为重命名
- 否则就是移动
1 | mv t1.txt t3.txt |
cat
指令
只读形式预览文件,n
显示行号
1 | cat -n t2.txt |
一般会和more
联用
1 | cat t1.txt | more |
more
指令
more 指令是一个基于 VI 编辑器的文本过滤器, 它以全屏幕的方式按页显示文本文件的内容。 more 指令中内置了若干快捷键,详见操作说明
1 | more t1.txt |
less
指令
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持 各种显示终端。 less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示 需要加载内容,对于显示大型文件具有较高的效率
类似于日志我们可以用这个指令
>
、>>
指令
可以将前面指令的输出结果导入到文件中,>
是重定向,>>
是追加
1 | cat t1.txt > t2.txt |
相当于复制了t1文件
echo
指令
和window的一样,输出环境变量
1 | echo $PATH |
head
指令
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容
1 | head -n 行数 文件 |
tail
指令
tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
这个指令最厉害的地方是他的f
参数可以一直跟踪文件的变化
大家可以用XShell使用
1 | tail -f t2.txt |
监听t2.txt,然后在虚拟机中用root身份使用vim对t1.txt进行内容追加,你会发现XShell这边没有变化,如果你使用echo "aaa" >> t2.txt
则能监听到
这是因为VIM修改文件时会先将源文件删掉,再创建一个同名的,所以tail
监听的那个文件其实你修改完就已经没了,这时候我们需要使用F
参数
1 | tail -F t2.txt |
根据man tail
的说明,tail -F
在文件不可以打开的时候,会重试打开该文件
这个指令非常重要哈
ln
指令
创建软链接,相当于一个快捷方式
1 | ln -s /home/test localhost |
如果需要删除则直接使用
1 | rm -rf localhost |
注意,cd
进去使用pwd
显示的是软链接的路径
-rf localhost/```则会删除软链接里面的所有东西
1
2
3
4
5
6
7
### ```history```指令
查看使用过的所有指令
```shell
history 指令数
使用
1 | !指令号 |
可以再次执行指令
时间日历类
其实只有两个,date
和cal
date
指令
查看时间直接date
就好,如果要格式化输出则是这样的
1 | date "+%Y年%m月%d日 %H:%M:%S" |
感觉他的format有点奇奇怪怪,还有一个重要的就是怎么设置时间
1 | date -s "2021-02-07 19:27:00" |
cal
指令
该指令可以查看当月的日历,cal 月份 年份
可以查看某个月的日历
搜索查询类
比较重要的就是find
、locate
和grep
了
find
指令
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
他有三个比较重要的参数
-name
指定名称-size
指定大小-user
指定用户-mtime
指定修改时间(默认单位:日)
下面举几个例子
查找某个文件
1
find /home -name t1.txt
搜索root用户的文件
1
find /home -user root
搜索大于20MB的文件
1
find /home -size -20M
其中
-
表示小于,+
表示大于,=
表示等于
该指令支持通配符,应该也支持正则表达式
该指令还有个很重要的参数-exec
,传入指令可以对每一个搜索结果进行相应处理
1 | find /home -name *.txt -exec ls {} /; |
或者删除
1 | find /home -name *.txt -exec rm -rf {} /; |
locaate
指令
locaate 指令可以快速定位文件路径。 locate 指令利用事先建立的系统中所有文件名称及路径的 cate 数据库实现快速定位给定的文件。 Locate 指令无需遍历整个文件系统,查询速度较快。为了保 证查询结果的准确度,管理员必须定期更新 locate 时刻
更新
1 | updatedb |
搜索
1 | locate t1.txt |
应该死构建了一颗B树吧
grep
指令
对文本内容进行检索,一般配合|
管道符使用,管道符是将前面指令产生的内容传给后面指令
1 | cat t1.txt | grep -n hello |
该指令有两个参数,i
表示忽略大小写。n
显示行号
压缩解压类
终于到最后这个了
gzip
/gunzip
指令
1 |
gzip 文件 > 文件.gz
1 |
|
其中c
是保修源文件。r
递归压缩。
1 |
|
解压
1 | unzip test.zip -d /home/test/ |
tar
指令
最为常用的压缩解压指令,该指令有几个重要的参数
f
指定压缩名称z
通过gzip支持压缩或解压缩(没有这个参数就只是打包而已)v
显示详细信息
这三个参数一般都要带着的
c
产生tar
打包文件x
解压
所以压缩一般是
1 | tar -czvf test.tar.gz /home/test/ |
解压则是
1 | tar -xzvf test.tar.gz |
解压时可以用-C
指定目标目录
1 | tar -xzvf tttt.tar.gz -C home/ |
有一个点需要注意,如果要定义输出名称f
参数要放在最后,压缩时需要cd
到目录里面,不然压缩的时候会多一级目录
好了好了终于没了,内容还是比较多的,一天才看了10P,晚上得加个班,大家敲敲应该没什么问题