前言
上一篇后面介绍了一些指令,这章节接着输出一些重要的基础指令。
1. touch 指令
语法:touch [选项] 文件名 两个核心作用:
- 如果文件不存在:创建一个大小为 0 字节的普通空文件;
- 如果文件已经存在:修改文件的时间戳(atime/mtime),不会修改文件内容。
作用:创建空文件;也可修改文件的时间戳。
常用选项:
-
-a:只修改访问时间(Access time) -
-m:只修改内容修改时间(Modify time)创建单个空文件
touch test.txt
一次性创建多个文件
touch a.txt b.log c.sh

注意:touch 不能创建文件夹,创建文件夹用 mkdir。
2. mkdir 指令
作用:创建目录(文件夹)
语法:mkdir [选项] 目录名
-
默认只能创建直接一级目录;
-
-p核心选项:递归创建多级嵌套目录,路径中不存在的父目录自动生成。创建单层目录
mkdir dir1
-p 递归创建多层目录(最常用)
mkdir -p /home/monkey/project/code
-
-p:父目录不存在时自动创建,不会报错,可以用来创建一串目录。

补充命令:tree(查看某个路径,并以树形结构呈现)
Centos 7下载指令:
yum install -y tree
Ubuntu 下载指令
apt install -y tree
如果不行,可以根据需求问ai要下载命令
3. rmdir 指令 && rm 指令
rmdir:删除空目录
语法:rmdir [-p] 目录名
只能删除空文件夹,目录里面有文件就删不掉,使用场景很少。
rmdir dir1

用-p可以递归删除。
rm:删除文件 / 目录(重点!高危命令)
语法:rm [选项] 文件/目录
常用选项:
-f 即使⽂件属性为只读(即写保护),亦直接删除
-i 删除前逐⼀询问确认
-r 删除⽬录及其下所有⽂件
注意:Linux 没有回收站!rm 删除之后数据很难恢复,尤其是rm -rf,操作前务必确认路径!
# 删除文件
rm test.txt
# -r 递归删除目录及其里面所有内容
rm -r dir1
# -f 强制删除,不询问确认
rm -rf dir1

在超级用户下。加不加-i都会有提示信息。在普通用户下,不加-i不会有提示,例如:su

警告:rm -rf / 会清空根目录,绝对不要执行!
如果用路径删除某个文件的时候比如:rm -rf /home/xxx/xxx/xxx
这里千万要注意不要在/后面多打一个空格:rm -rf / home/xxx/xxx/xxx
如果不小心执行了命令,直接重装系统,不管系统有没有挂掉
简单看一下超级用户跟普通用户的区别:
4. man 指令
作用:查看命令的官方帮助手册(manual),可以通过查看联机手册获得帮助。
演示一下man pwd:

如果执行不出来这个指令大概率是没有下载,需要手动下载。
centos 7下载指令
yum install -y man-pages
ubunt 下载指令
apt install -y man-pages
Centos 下载演示:

# 查看ls命令手册
man ls
# 查看rm命令手册
man rm
操作:回车翻行,空格翻页,q 退出手册。
5. cp 指令
作用:复制文件 / 目录
语法:cp [选项] 源 目标
底层逻辑:创建一份全新文件实体,磁盘上会产生两份独立数据,修改源文件不会影响副本。
常用选项:
-
-i:目标文件已经存在,覆盖前询问确认; -
-f:强制覆盖已存在目标,不提示; -
-r / -R:递归复制目录,目录复制必须带 - r。复制文件
cp test.txt /home/
-r 复制目录(递归复制文件夹内所有内容)
cp -r dir1 /home/

注意在超级用户下,即使加了-f依然会询问是否同意,在普通用户下不会有这种情况:

6. mv 指令
两个功能:
- 如果目标不存在:做重命名操作;
- 如果目标是已经存在的目录:把源文件 / 目录移动到目标目录内部。
语法:mv [选项] 源 目标
底层逻辑:不拷贝磁盘数据,只是修改父目录内部的文件名映射条目,磁盘数据位置不变,几乎不消耗 IO
-
-i:目标存在,覆盖前询问; -
-f:强制覆盖,不询问。移动文件到目标路径
mv test.txt /home/
重命名:原文件不变路径,直接改名
mv old.txt new.txt
mv在超级用户下-f会不再询问是否。
原因:
敲 cp,实际执行 cp -i;敲 mv,实际执行 mv -i
mv 的 -f 作用:强制覆盖,并且会直接取消 -i 的询问
cp -i 的含义:只要目标存在,就必须询问,-f 不能取消 -i。 所以就算写 -f,只要带了 -i,依旧弹出 overwrite?。
官方手册原文逻辑:
mv -f:如果目标存在,删除目标,不提示;-f会关闭-icp -i:无论别的参数,只要-i开启,覆盖前一定询问,-f无法覆盖-i
核心区分 cp 和 mv:cp 产生两份数据;mv 只是改名字、移动位置,数据本体只有一份。
7.echo &&重定向
语法:echo 选项 输出内容
常用选项:
-n 输出内容后不自动添加换行符(注意:默认echo会在输出末尾追加换行 )
-e 启用反斜杠转义字符的解析,不加该参数时转义符会被当作普通字符输出
常见转义符(需配合-e使用)
\n:换行\t:水平制表符(Tab)\b:退格符\033[开头的ANSI转义序列:可以用来输出带颜色、特效的文字
重定向:>&&<&&>>
>:输入重定向
如果文件存在,先清理空,再写入。
如果文件不存在直接创建,然后写入
<:输出重定向
输入重定向:让命令从文件读取输入,而不是等待键盘输入
>>:输入追加重定向,本质也是一种输入重定向
追加输出:结果加到文件末尾,不覆盖原有内容
-e演示:

>演示
>>演示
8. cat 指令
语法: cat 选项 ⽂件
常用选项:
-b 对⾮空输出⾏编号,空⾏不做编号
-n 对输出的所有⾏编号
-s 不输出多⾏空⾏
作用:一次性查看文件全部内容,适合小文件
cat test.txt
# 带上行号查看
cat -n test.txt

[root@VM-0-4-centos ~]# cat -b text.c
1 aaa
2 aaa
3 aaa
4 aa
5 a
6 a
7 a
8 a
9 a
[root@VM-0-4-centos ~]# cat -n text.c
1 aaa
2 aaa
3
4
5
6
7
8
9 aaa
10 aa
11 a
12 a
13
14 a
15
16
17 a
18
19 a
[root@VM-0-4-centos ~]# cat -s text.c
aaa
aaa
aaa
aa
a
a
a
a
a
文件很大时不推荐 cat,会刷屏。
在需要的时候可以将cat结合重定向使用
9.nano
类似于windows的记事本,相当于Linux的记事本。
如图:页面下方有具体的快捷键。
Ctrl+X 保存修改内容。

10. tac
作用:倒着查看内容。

11. more 指令
作用:分页查看文件,只能向下翻
常用选项:
-n:指定输出行数
q(quit):退出more
more test.txt
操作:空格翻页,回车单行向下,q退出。

more的搜索:/数字。

12. less 指令
语法: less 参数 ⽂件
作用 :less与more类似,但使⽤less可以随意浏览⽂件,⽽more仅能向前移动,却不能向后移动,⽽ 且less在查看之前不会加载整个⽂件。
常用选项:
-i 忽略搜索时的⼤⼩写
-N 显⽰每⾏的⾏号
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前⼀个搜索(与 / 或 ? 有关)
N:反向重复前⼀个搜索(与 / 或 ? 有关)
q:quit
less ⼯具也是对⽂件或其它输出进⾏分⻚显⽰的⼯具,应该说是linux正统查看⽂件内容的⼯具,
功能极其强⼤
less 的⽤法⽐起 more 更加的有弹性,在 more 的时候,我们并没有办法向前⾯翻, 只能往后⾯
看
但若使⽤了 less 时,就可以使⽤ pageup pagedown 等按键的功能来往前往后翻看⽂件,更
容易⽤来查看⼀个⽂件的内容
除此之外,在 less ⾥头可以拥有更多的搜索功能,不⽌可以向下搜,也可以向上搜
less test.txt
13. head 指令
语法: head 参数... ⽂件...
功能: head ⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏。
常用选项:
-n<⾏数> 显⽰的⾏数
作用 :查看文件头部前 N 行,默认 10 行
# 默认查看前10行
head test.txt
# 查看前5行
head -5 test.txt
管道:匿名管道&&命名管道
14. tail 指令
语法: tail 必要参数 ⽂件
作用 :查看文件末尾,日志排查神器
常用选项:
f 循环读取
-n<⾏数> 显⽰⾏数
# 默认查看最后10行
tail test.log
# 查看最后3行
tail -n3 test.log
# -f 实时追踪文件新增内容(看日志最常用)
tail -f test.log
如何显示【999999,999979】?

所以我们可以查看任意几行比如:880,889

15. date 指令
作用:查看 / 设置系统时间
# 查看当前系统时间
date
# 格式化输出
date +%Y-%m-%d\ %H:%M:%S
一下是一些具体的功能:
在显示方面:使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下------
%H : ⼩时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%X : 相当于 %H:%M:%S
%d : ⽇ (01..31)
%m : ⽉份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
在设定时间⽅⾯
date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对⽇期做更改
date -s "01:01:01 2008-05-23″ //这样可以设置全部时间
date -s "01:01:01 20080523″ //这样可以设置全部时间
date -s "2008-05-23 01:01:01″ //这样可以设置全部时间
date -s "20080523 01:01:01″ //这样可以设置全部时间
时间戳
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix时间戳(英⽂为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1⽉1
⽇(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
16. cal 指令
作用:查看日历
常用选项:
-3 显⽰系统前⼀个⽉,当前⽉,下⼀个⽉的⽉历
-j 显⽰在当年中的第⼏天(⼀年⽇期按天算,从1⽉1号算起,默认显⽰当前⽉在⼀年中的天数)
-y 显⽰当前年份的⽇历
# 当月日历
cal
# 查看全年日历
cal 2026
17. find 指令
作用:在目录下搜索文件,功能强大
语法: find pathname -options
功能:⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)
常⽤选项(其实这个指令有很多选项,比较复杂,这里不做太多笔记了,需要的时候在去查)
-name 按照⽂件名查找⽂件
Linux下find命令在⽬录结构中搜索⽂件,并执⾏指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强⼤。由于find具有强⼤的功能,所以它的选
项也很多,其中⼤部分选项都值得我们花时间来了解⼀下。
即使系统中含有⽹络⽂件系统( NFS),find命令在该⽂件系统中同样有效,只你具有相应的权
限。
在运⾏⼀个⾮常消耗资源的find命令时,很多⼈都倾向于把它放在后台执⾏,因为遍历⼀个⼤的
⽂件系统可能会花费很⻓的时间(这⾥是指30G字节以上的⽂件系统)。
我们知道,Linux本质上就是一个多叉树结构。find遍历本质就是深度广度遍历目录结构。
# 在当前目录查找名字叫test.txt的文件
find . -name "test.txt"
# 在/home目录查找所有.log后缀文件
find /home -name "*.log"
演示:
18. which 指令
作用 :查找可执行命令所在的路径
# 查看ls命令的程序位置
which ls
which python
例如:
这里我们也可以演示发现ll和ls的关系。
19. whereis 指令
作用:查找命令程序、源码、帮助文档的位置(相对雨find和which来说比较不常用)
whereis ls
whereis gcc
20. alias 指令
作用:设置命令别名,简化长命令
ll和ls -l有什么区别?(这里在上面其实有演示了)
这里就是用alias来把 ll 变成 ls -l 的别名,ls -l --color=auto中的。本质就是:alias ll='ls -l color=auto'。
例如:

21. grep 指令
语法:grep 选项 搜寻字符串 ⽂件
作用 :在⽂件中搜索字符串,将找到的⾏打印出来
常用选项:
-i :忽略⼤⼩写的不同,所以⼤⼩写视为相同
-n :顺便输出⾏号
-v :反向选择,亦即显⽰出没有 '搜寻字符串' 内容的那⼀⾏
# 在文件里搜索包含error的行
grep "error" test.log
# 结合管道,查看进程里的java程序
ps -ef | grep java
22. top
作用:系统资源监控,实时查看 CPU、内存、进程(类似任务管理器)
top
快捷键:q退出。
常用选项:
top -d 1 -n 5
-d: 刷新的时间间隔
-n: 刷新的次数
task:就是进程的意思。
top task: 
23. zip/unzip 指令
zip 压缩
语法: zip 压缩⽂件.zip ⽬录或⽂件
功能:将⽬录或⽂件压缩成zip格式
常⽤选项
-r:递归处理,将指定⽬录下的所有⽂件和⼦⽬录⼀并处理
# 压缩目录,-r递归
zip -r test.zip testdir
unzip 解压
# 解压到当前目录
unzip test.zip
# 解压到指定目录
unzip test.zip -d /home/
24. rzsz
这个工具用于windows机器和远端的Linux机器通过XShell传输文件。安装完毕之后可以通过拖拽的方式将文件上传过去
rzsz 是传输工具,需要先安装。
sudo yum/apt install -y lrzlz
rz:本地文件上传到 Linux 服务器sz filename:把服务器文件下载到本地

适用:Xshell、SecureCRT 这类终端工具
。



结尾:下一篇接着介绍剩下一些常用的指令。
回顾上篇:Linux :指令(一)文件系统架构与基础操作指令的理解
下一篇指令部分结束,开始权限相关介绍。










。