本章所有指令均在云服务器+Xshell上演示:
首先介绍xshell的的全屏/退出全屏快捷键Alt+Enter
Linux 指令(Linux command)是在终端(命令行 shell,常见 bash/zsh)里输入的文本命令,用来告诉操作系统内核执行对应的操作。 图形界面点鼠标本质也是调用这些命令;命令行直接输入指令,效率更高、适合自动化脚本、服务器操作。
区分:
- 内部命令:shell 自带(如
cd、echo),不用单独程序文件- 外部命令:独立可执行程序(如
ls、cp),存放在/bin/usr/bin等目录
一、linux指令的组成
bash
命令名 [选项] [参数]
command [options] [arguments]
二、ssh ------远程登录
SSH = Secure Shell,加密远程登录协议 ,默认端口 22;ssh 是 OpenSSH 的客户端命令,用来登录远程机器、在远程执行命令、端口转发,传输全程加密云服务器。
bash
ssh [用户名@]主机
bash
# 使用当前本机用户名连接
ssh 192.168.1.100
# 指定用户(最常用)
ssh root@192.168.1.100
三、用户管理相关操作
一个操作系统下的用户分为普通用户和超级用户(root):root 是 Linux 里拥有全部权限的超级管理员用户,具有较高的权限,普通用户权限受限,只能操作自己有权限的文件。
1. adduser(主命令:新建用户)
前提:
adduser是 Debian/Ubuntu 系友好版创建用户命令(红帽 CentOS 一般没有,用 useradd),所有用户操作基本都要加 sudo(切换成超级用户)
bash
sudo adduser tom
小技巧:创建的时候直接把用户加到 sudo 组(获得管理员权限)
bash
sudo adduser tom sudo
2. passwd(设置 / 修改密码)
bash
# 管理员改tom的密码(不用输旧密码)
sudo passwd tom
# 普通用户只改自己密码
passwd
⚠️ 密码输入屏幕不回显,正常。
3. userdel(删除用户)
bash
# 只删账号,保留/home/tom家目录(数据还在)
sudo userdel tom
# -r 连带家目录、邮件一起删掉!不可逆,慎用
sudo userdel -r tom
4. su(切换用户)
# 切换到tom,进入他的环境
su - tom
# 切回原来用户:exit
su - 和 su 不一样,带 - 会加载目标用户的环境变量(推荐)
5. whoami(看当前是谁)
whoami
直接输出你现在登录的用户名,快速确认身份。

四、 man------指令文档查看
man = manual,查看命令的官方手册帮助文档,外部命令 语法:
bash
man [命令名]
1.基础用法
bash
man ls # 查看ls命令手册
man rm # 查看rm命令手册
man stat # 查看stat手册
man 页面内操作
| 按键 | 功能 |
|---|---|
| ↑ / ↓ | 一行一行上下滚动 |
| 空格 | 向下翻一整页(最常用) |
| b | 向上翻一整页 |
/关键词 |
搜索,例如 /options 搜索 options,回车;按n跳到下一个匹配结果 |
| q | 退出 man 页面,回到终端(最重要!很多新手不知道怎么退出) |
2.手册章节
man 手册分 9 个章节,同一个名字可能在多个章节都有文档:
- 1:用户命令(我们学的 ls、rm、pwd、cd,绝大多数普通命令在这里)⭐重点
- 2:系统调用(内核函数,C 语言系统 API)
- 3:库函数(C 标准库)
- 4:设备文件
- 5:配置文件格式
- 6:游戏
- 7:杂项
- 8:系统管理命令(root 用)
查看指定章节:
bash
man 1 ls # 看第1章节的ls
man 5 passwd # 看passwd配置文件(章节5),不是passwd命令
查看命令属于哪一章:
whatis 命令
bash
whatis ls
# 输出 ls (1) - list directory contents
五、常用热键
1.clear------一键清屏
bashclear输入后按Enter即一键清屏
2.ctrl+C------一键退出/终止异常操作
敲击键盘ctrl c即终止异常操作或退出使用的工具
3.ctrl+R------搜索历史命令
我们键盘上所有敲击的指令都可以用history来获取,意思是Linux后台会记录我们近期键盘上敲击的每个指令,键盘敲击ctrl R并输入历史指令包含的内容即可查询
4.键盘上下键------查找历史命令
5.Tab------命令搜寻和自动补全
比如敲入 who按两次tab键可查找所有以who开头的指令,如果只找到一个就会自动补全 如使用键盘输入whoam按两次Tab自动补全为whoami.
6.ctrl+D ------退出当前用户
六、uname------查看机器信息
bash
uname -a # 输出全部信息 内核 主机名 内核发行版本 内核编译版本 【硬件架构 处理器硬件平台】
uname -r # 只看内核版本,如 5.15.0-78-generic

七、路径相关操作
1.pwd
pwd = print working directory
打印当前所在工作目录的绝对路径。
bash
pwd [选项]
- 命令名:
pwd - 参数:一般不需要参数
- 选项:可选(很少用)

2.ls
ls = list,列出目录里的内容(文件、文件夹)
bash
ls [选项] [目录/文件]
- 命令名:ls
- 选项:可选,控制展示样式
- 参数:可选,指定查看哪个目录;不写参数默认查看当前目录
2.1.ls -l 长格式显示(详细信息:权限、所有者、大小、时间、名字)
bash
ls -l
简写:很多系统支持 ll ,等价 ls -l
2.2.ls -a 显示所有文件,包含隐藏文件 Linux 里文件名以 . 开头就是隐藏文件,比如 .bashrc
bash
ls -a
2.3.ls -la 组合选项(-l + -a):详细信息 + 显示隐藏文件 短选项可以合并,ls -l -a 和 ls -la 完全一样
bash
#下面指令效果相同
ls -a-l
ls -l-a
ls -la
ls -al
2.4.ls-d组合,不进入指定目录,仅打印指定目录的属性信息
bash
ls -d
基础示例
bash
ls # 查看当前目录,只显示文件名
ls /home # 查看 /home 目录内容(绝对路径)
ls Documents # 查看当前目录下 Documents 文件夹(相对路径)
ls -lh /var/log # 查看/var/log,详细信息+可读大小
ls -l 输出字段拆解
知识切片:
ll 就是ls -l及其他选项 的别名
我们可以通过alias ll 查看ll的所有别名
alias ll='ls -alF'
alias也可以为指令起别名
bashalias 别名='原命令'
示例一行输出:
bash
drwxr-xr-x 2 user user 4096 Oct 17 10:00 testdir
从左到右:
d:文件类型
d= 目录;-= 普通文件;l= 软链接;.=隐藏文件rwxr-xr-x:文件权限2:硬链接数user:属主(所有者)user:属组(所属用户组)4096:文件大小Oct 17 10:00:最后修改时间testdir:文件名
使用ls 系列指令查看目录内容

使用 ls-d查看目录本身信息

3.cd
cd = change directory 切换目录
bash
cd [目标路径]
[] 代表可选,路径可以是绝对路径 / 相对路径
cd:切换进去;ls:看里面有什么
3.1.cd 不加参数 → 回到自己家目录
bash
cd
等价于 cd ~
家目录:普通用户一般
/home/用户名,root 用户/root
3.2.cd .. → 回到上一级目录
bash
cd ..
. 代表当前目录 (cd . 没效果,很少用) .. 代表父目录(上一层)
3.3.cd - → 回到上一次所在目录(来回跳转神器)
bash
cd -
比如:从 /etc 跳到 /home,cd - 一键切回 /etc
3.4cd 路径 → 进入指定目录
- 相对路径(相对于当前位置,不以
/开头)
bash
cd Desktop
- 绝对路径(从根
/开始写全路径)
bash
cd /var/log
| 符号 | 含义 |
|---|---|
~ |
当前用户家目录 |
. |
当前目录 |
.. |
上一级(父目录) |
/ |
根目录,Linux 最顶层目录 |
使用cd进入 myfile目录,使用pwd打印当前目录

知识切片:
Linux中的目录
Linux的文件系统,整体上来看是一颗多叉树,根节点为根目录(/),叶子节点为文件或空目录,其余为非空目录
绝对路径 :从根目录 开始写完整的路径,唯一确定文件位置,不受当前所在目录影响。 示例:
/home/xxx/test.txt相对路径 :从你当前所在目录 出发去找文件,写法短,换目录后就失效。 当前在
/home/xxx,访问上面文件直接写test.txtbin的绝对路径:/usr/bin,在lib下bin的相对路径:../bin
命令的本质
:就是一个可执行程序,只不过通过环境变量配置等一些列操作当我们直接输入命令名称时就会执行
八、文件相关操作
1.touch------新建文件
作用:①新建空文件 ;② 更新文件的 atime/mtime 时间戳(文件已存在时) 语法:
touch [选项] 文件名
bash
touch test.txt
- 如果
test.txt不存在:直接创建一个空文件(大小 0 字节) - 如果
test.txt已经存在 :不会修改文件内容,只更新文件的三个时间(stat 看到的那三个时间)
注意:touch 创建的是文件,不是文件夹!
新建new.cpp test.文件

2.mkdir------新建目录
mkdir = make directory,新建目录(文件夹) 语法:
mkdir [选项] 目录名
bash
mkdir dir1
- 不加选项,只能创建单层文件夹
-p重点选项:递归创建多层目录(考试高频)
bash
mkdir -p a/b/c
# 一次性创建 a,a里面的b,b里面的c
新建目录newdir和路径a/b/c/d

3.rm------删除
rm = remove,删除文件 / 目录 ,外部命令 ⚠️ Linux 删除默认不会进回收站!删了很难恢复,谨慎使用! 语法:
bash
rm [选项] 文件/目录名
3.1.
bash
rm test.txt
有的系统会提示是否删除,输入y确认。
- 常用选项(重点)
-f:force 强制删除,不弹出询问提示(root除外),不存在文件也不会报错
bash
rm -f test.txt
-r/-R:recursive 递归,用来删除文件夹(目录里面所有内容一起删)
rm 默认不能直接删目录,必须加
-r
bash
rm -r testdir
- 组合
-rf(高频!考试、工作最常用):递归 + 强制删除目录
bash
rm -rf testdir
❗【高危警告】千万不要随便执行
rm -rf /,会删除根目录,系统直接崩溃!
删除test1.txt文件

删除newdir目录

另外 还可以使用rmdir 指令来删除空目录

4.cp------复制
cp = copy,复制文件 / 目录,外部命令 语法:
bash
cp [选项] 源文件/源目录 目标文件/目标目录
规则:前面是源(从哪复制),后面是目标(复制到哪)
知识切片:同一目录下不允许有两个同名文件
复制普通文件
bash
cp test.txt new.txt
把 test.txt 复制一份,命名为 new.txt
如果 new.txt 本来就存在,默认直接覆盖!
bash
cp test.txt /root/
复制 test.txt 到 /root 目录下,文件名保持不变
核心选项
-r/-R:递归复制目录 (文件夹),复制文件夹必须加-r
bash
cp -r dir1 dir2
把 dir1 整个文件夹(包含里面所有内容)复制到 dir2
-i:覆盖前询问(interactive),防止误覆盖,输入 y 确认,n 取消
bash
cp -i test.txt new.txt
-p:保留文件原有属性(权限、时间戳,stat 看到的那三个时间)
bash
cp -p test.txt test2.txt
两种目标场景区分
- 目标不存在 :复制并重命名
cp a.txt b.txt→ b.txt 不存在,则新建 b.txt,内容和 a.txt 一样 - 目标是已存在目录 :源文件直接复制进这个目录里面
cp a.txt dir/→ 把 a.txt 放到 dir 文件夹内
一次性复制多个文件
多个源,最后一个必须是目录
bash
cp file1.txt file2.txt mydir/
file1、file2 都复制进 mydir 文件夹
知识切片
使用tree 目录名可以以树状图的形式打印目录内容
拷贝目录

拷贝文件并重命名保存在当前目录之下

5.mv------剪切/重命名
mv= move,两个核心作用:移动文件 / 目录 、重命名文件 / 目录 语法:
bash
mv [选项] 源文件/源目录 目标文件/目标目录
⚠️ 重要提醒:mv 默认直接覆盖文件,没有提示!
1. 重命名(源和目标在同一个目录)
bash
mv old.txt new.txt
把 old.txt 改名为 new.txt,要求mv a b b是一个文件名(不能是目录,不可是a同目录中已存在文件的名字)
例

bash
mv dir1 dir2
目录重命名,dir1 → dir2(dir2 在dir1的上级目录中不存在)
例

2. 移动文件到另一个目录
bash
mv test.txt /home/xxx/
例

把 test.txt 移动到 /home/xxx/ 下,/home/xxx/必须是一个已存在的目录
bash
mv a.txt b.txt ./target/
一次性移动多个文件到 target 目录
例

3. 移动整个目录
bash
mv ./mydir /opt/
mydir 整个文件夹移动到 /opt
例

| 参数 | 作用 |
|---|---|
-i |
覆盖前交互式询问(y 覆盖,n 跳过)✅推荐 |
-n |
不覆盖已存在的文件,安静跳过 |
-f |
强制覆盖,不提示(默认行为) |
-v |
verbose,显示详细执行过程 |
-u |
仅当源文件更新(时间更新)或目标不存在时才移动 |
bash
mv -i a.txt ./dest/
mv -v file1 dir/
mv -u newer.txt dest/
mv -n important.txt ./backup/
6.echo ------内容写入
echo:输出文本内容,最常用在打印字符串、写入文件、输出变量。 语法:
echo [选项] [内容]
⚠️ 不同 shell(bash /sh)、不同系统(Linux /macOS)
-e行为略有差异,下面是 Linux bash 标准用法。
1. 直接输出字符串
bash
echo hello world
# 输出:hello world
带空格、特殊符号建议加引号(单引号 / 双引号)
bash
echo "hello world"
- 双引号
" ":会解析里面的变量、转义符 - 单引号
' ':原样输出,不解析任何东西
bash
echo '$PATH' # 原样输出 $PATH
echo "$PATH" # 输出 PATH 环境变量的值
2. 输出变量
bash
name="zhangsan"
echo $name

| 参数 | 作用 |
|---|---|
-e |
启用转义字符(\n 换行、\t 制表符等) |
-n |
输出后不自动换行(默认 echo 结尾自带换行) |
-E |
禁用转义(默认) |
-e 转义示例
bash
echo -e "第一行\n第二行"
bash
第一行
第二行
常用转义:
\n换行\tTab 制表\\输出反斜杠\"输出双引号
-n 不换行
bash
echo -n "请输入:"
光标停在文字后面,不会跳到下一行,写脚本交互很常用。
echo 和重定向
把内容写入文件,配合
>和>>
>覆盖写入(文件原有内容清空)
bash
echo "hello" > test.txt

文件不存在自动创建,并写入:

>>追加写入(在文件末尾新增,不覆盖)
bash
echo "new line" >> test.txt

❗ 注意:
echo > test.txt会创建空文件;echo 本身不能创建目录,目录不存在会报错,和 mv 一样。
>新文件名 :可直接创建一个文件

知识切片:
在Linux中,一切皆文件
当登入shell时,操作系统会自动打开三个文件用于管理键盘和显示屏
所以 echo 不加重定向时,默认写入到管理显示屏的文件中
7.cat/tac------内容查看
bash
cat [选项] 文件...
tac [选项] 文件...
cat 从第一行向下逐行打印文件内容
tac 从最后一行向上逐行打印文件内容

cat实用选项 -n
逐行打印之前添加上行号

8.nano------文本编辑器
打开 / 新建文件
bash
nano new.txt
文件不存在 → 新建;存在 → 打开编辑
bash
nano -l new.txt # 打开并显示行号

退出nano编辑器
Ctrl + X 退出(X=Exit) 弹出提示
Save modified buffer?
- 输入 Y → 保存,回车确认文件名,退出
- 输入 N → 放弃修改,直接退出
- Ctrl + C → 取消退出,回到编辑界面
9.more/less------大型文本查看
作用:分页查看大文件,不会一次性把文件全刷到屏幕 共同点:支持
/关键词向下搜索
more(老工具,简单,功能弱)
bash
more filename
- 空格:下一页
- Enter:下一行
q:退出/xxx:搜索 xxx,n 跳到下一个匹配b:回翻一页(很多版本不支持回翻!短板)
缺点:不能随意往上翻,看完前面再想回去很麻烦
less(推荐!现代首选,more 的增强版)
bash
less filename
优势:上下自由翻页,速度更快(不会预读全部文件) 常用按键
- 空格 /
f:向下翻一页b:向上翻一页- 回车 /
j:下一行;k:上一行/xxx向下搜;?xxx向上搜n下一个匹配;N上一个匹配q:退出g跳到文件开头;G跳到末尾-N启动时显示行号:less -N file
10.head/tail
head /tail 后面跟上-num选项可以查看前/后num行内容
如果不加选项,默认num=10
bash
# head:看开头
head file
head 5 file # 前5行
head -10 file # 输出全部,去掉最后10行(负号:剔除尾部)
# tail:看末尾
tail file
tail 8 file # 最后8行
tail +20 file # 从第20行开始,一直到末尾(加号:从该行起)



配合管道来操作查看长文本文件中间若干行信息
查看long.txt 第41-50行的信息

11. find ------查找
find -name 文件名/目录名
实用 find -name +名字 查找 具有这个名字的文件/目录 的绝对路径

12.文件压缩
12.1.zip
bash
zip dist.zip src #压缩指定文件src命名为dist.zip存储到和src相同的目录下
zip -r dist.zip dir #压缩指定目录dir命名为dist.zip存储到dir上级目录下
使用zip压缩文件

使用zip压缩目录

12.2 unzip
bash
unzip src.zip #将src.zip在当前目录下解压
unzip src.zip -d path#将src.zip解压到path路径之下
解压到当前目录:

解压到指定目录:

12.3 tar
bash
tar zcf dst.tgz src #将src(文件/目录)在当前目录下压缩生成dst.tgz文件
tar zxf src.tgz #将src.tgz在当前目录下解压 生成目录 src
tar vzcf dst.tgz src #将src(文件/目录)在当前目录下压缩生成dst.tgz文件,并显示压缩过程
tar vzxf src.tgz #将src.tgz在当前目录下解压 生成目录 src,并显示解压过程
tar zxf src.tgz -C /path ##将src.tgz解压到/path路径下 生成目录 src
tar vzxf src.tgz -C /path ##将src.tgz解压到/path路径下 生成目录 src,并显示解压过程
压缩:

压缩并查看过程:

解压并查看过程:

解压到指定目录

13.grep ------大型文本关键字逐行挑选
grep = global regular expression print 一句话作用:在文件里搜索包含指定关键词的行,并打印出来,排查日志、找内容超级常用。
grep [参数] "关键词" 文件名
✅ 必记参数
-n:显示匹配行的行号(非常常用)-i:忽略大小写,a 和 A 算一样-v:反向匹配,只打印不包含关键词的行-r:递归搜索文件夹下所有文件(搜索目录必须加 r)
14.云服务器和本机互传文件
首先要安装指令
bash
sudo apt install lrzsz
bash
sz target.zip #云服务器Linux传入本机target.zip文件
rz #云服务器Linux接收本机文件//将本机文件拖拽至xshell也可实现
九、时间相关基础指令
1.cal------日历
bash
cal //显示本月日历
cal -3//显示上个月,本月,下个月的日历

bash
cal 指定年份//打印指定年份日历
cal 指定月份 指定年份//打印指定月的日历


2.date ------ 日期时间命令
bash
date [选项] [+格式字符串]
1. 不带参数:直接输出当前系统时间
bash
date

2. 格式化输出(最常用!+ 开头)
| 符号 | 含义 |
|---|---|
| %Y | 4 位年 2026 |
| %m | 月份 01~12 |
| %d | 日期 01~31 |
| %H | 小时 00~23 |
| %M | 分钟 |
| %S | 秒 |
| %w | 星期 0 = 周日,6 = 周六 |
| %F | 等价 % Y-% m-% d |
| %T | 等价 % H:% M:% S |
| %s | 时间戳(从 1970-01-01 00:00 UTC 到现在的秒数) |


时间戳转日期:
bash
date -d @时间戳

