(三)Linux 基础指令(二):基础常用的一些指令

前言

上一篇后面介绍了一些指令,这章节接着输出一些重要的基础指令。

1. touch 指令

语法:touch [选项] 文件名 两个核心作用:

  1. 如果文件不存在:创建一个大小为 0 字节的普通空文件;
  2. 如果文件已经存在:修改文件的时间戳(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 指令

两个功能:

  1. 如果目标不存在:做重命名操作;
  2. 如果目标是已经存在的目录:把源文件 / 目录移动到目标目录内部。

语法: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 会关闭 -i
  • cp -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 :指令(一)文件系统架构与基础操作指令的理解

下一篇指令部分结束,开始权限相关介绍。

相关推荐
不会写DN2 小时前
Go日志库工程选型与逃逸分析评测报告
java·服务器·golang
ShineWinsu2 小时前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
Zenova EdgeOS2 小时前
Linux IO 监测:iotop 工业边缘排障实战
linux·边缘计算·工业网关·iotop·排障
Fcy6482 小时前
Linux下 传输层协议UDP详解(含底层源码解析)
linux·运维·udp
鬼手点金2 小时前
Claude Code示范案例-常用快捷命令
java·服务器·前端·计算机视觉·前向传播
阿钱真强道2 小时前
12 嵌入式操作系统 | UDP 服务器编程
服务器·网络协议·udp
青梅味猪大肠2 小时前
【操作系统-24】双标志先检查
linux·运维·服务器
华允物联-HUAIOT3 小时前
带隔离的串口服务器有必要买吗?隔离作用对比
服务器·物联网
xiaoye-duck3 小时前
《Linux 网络编程》深入理解五种 IO 模型:从 IO 本质到非阻塞 IO 实战
linux·网络