【Linux】 基础指令(下)
一、Linux 常用基础命令
1. date 指令(系统时间操作)
作用:查看、格式化系统日期时间,也可修改系统时间(需要 root 权限)
基础语法
date [选项] [+格式字符串]常用用法
1.默认输出当前时间
date # 输出示例:Wed Jul 22 15:20:36 CST 20262.格式化输出(最常用)
date +"%Y-%m-%d %H:%M:%S" # %Y 4位年 %m月 %d日 %H小时 %M分钟 %S秒 date +"%Y%m%d" # 20260722,常用于日志文件名3.获取时间戳
date +%s # 输出10位Unix时间戳(秒)4.根据时间戳还原时间
date -d @17847800005.修改系统时间(root)
date -s "2026-07-22 15:30:00"⚠️ 云服务器一般不建议手动修改时间,推荐使用
ntp同步网络时间。2. cal 指令(日历查看)
作用:显示日历
cal # 显示当月日历 cal 2026 # 显示全年日历 cal 08 2026 # 显示指定年月日历 cal -3 # 显示上月、本月、下月3. find 指令(文件查找,功能极强)
作用:在指定目录递归搜索文件,按文件名、大小、时间、权限筛选
基础模板
find 搜索路径 [筛选条件] [动作]高频示例
# 在当前目录查找名称包含test的文件 find . -name "*test*" # 查找所有后缀为.txt的文件(大小写敏感) find /home -name "*.txt" # 忽略大小写 find /home -iname "*.txt" # 查找大于100M的文件 find / -size +100M # 查找小于10k find . -size -10k # 查找30天以内修改过的文件 find . -mtime -30 # 查找到文件后执行删除(谨慎!) find . -name "*.log" -delete区分:
find是实时磁盘扫描,速度慢、结果最准确;whereis/locate依靠数据库缓存。4. which 指令
作用:查找可执行程序所在路径,从 PATH 环境变量搜寻
which ls # 输出 /usr/bin/ls✅特点:
- 只找二进制可执行文件
- 不会查找内置命令(如 cd,cd 是 shell 内置,which 找不到)
5. whereis 指令
作用:查找命令对应的二进制程序、man 手册源码文件
whereis ls # ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz对比 which /whereis
命令 查找范围 which 仅 PATH 内可执行程序 whereis 二进制 + man 手册 + 源代码文件 6. alias 指令(命令别名)
作用:给长命令设置简短别名,简化输入
# 临时生效(当前终端关闭失效) alias ll='ls -l --color=auto' # 查看当前所有别名 alias # 删除别名 unalias ll持久生效:把 alias 配置写入
~/.bashrc,执行source ~/.bashrc生效。 示例:echo "alias rm='rm -i'" >> ~/.bashrc source ~/.bashrc7. grep 指令(文本内容检索,三剑客之一)
全称:Global Regular Expression Print
作用:从文件 / 管道输出中匹配指定字符串、正则表达式
常用参数
# 在test.txt中查找包含error的行 grep "error" test.txt # -n 显示行号 grep -n "error" test.txt # -i 忽略大小写 grep -i "error" log.txt # -v 反向匹配,查找不包含error的行 grep -v "error" log.txt # -r 递归搜索目录下所有文件 grep -r "port" /etc/ # 管道搭配使用(高频!查看进程) ps aux | grep mysql8. top(系统进程监视器)
作用:实时查看系统资源、进程 CPU / 内存占用,Linux 任务管理器
top进入 top 交互界面常用快捷键:
P:按 CPU 使用率排序M:按内存占用排序k:输入 PID 杀死进程q:退出 top拓展:
htop是美化版 top(需要单独安装)。9. zip /unzip 指令(windows 兼容压缩格式)
压缩
zip -r target.zip dir/ # -r 递归打包目录解压
unzip target.zip # 指定解压目录 unzip target.zip -d /tmp/zip 优势:跨 Windows、Linux 通用;缺点:不保留 Linux 文件权限。
10. rzsz 文件传输(Xshell、SecureCRT 终端工具)
适用场景:SSH 远程终端,无需搭建 ftp 实现本机 ↔ 服务器传文件
# 服务器接收本地文件(弹出窗口上传) rz # 服务器文件下载到本地 sz filename⚠️ 注意:
- 服务器需要先安装:
yum install lrzsz/apt install lrzsz- 云服务器部分网页终端不支持 rzsz,推荐使用 sftp 替代。
11. tar 指令【重中之重】
Linux 最主流打包压缩工具,可以打包、gzip/bzip2 压缩。
参数记忆口诀
ccreate 创建包xextract 解包vverbose 显示过程ffile 指定文件名(f 必须放在最后)zgzip 压缩(.tar.gz)jbzip2 压缩(.tar.bz2)高频模板
# 打包并压缩(gzip) tar -zcvf test.tar.gz dirname/ # 解压tar.gz tar -zxvf test.tar.gz # 指定解压目录 tar -zxvf test.tar.gz -C /tmp # 只打包不压缩 tar -cvf test.tar dir/ # 查看压缩包内容,不解压 tar -ztvf test.tar.gz常见坑:参数顺序错误,不能写
tar -zfvc,f必须紧邻文件名。12. bc 指令(终端计算器)
支持浮点运算,shell 脚本常用数学计算
bc # 进入交互计算器 # 输入 scale=3 保留3位小数 # shell一行运算示例 echo "scale=2; 10/3" | bc # 输出3.3313. uname -r 指令(查看内核版本)
uname # 输出系统名称Linux uname -r # 查看内核版本,例如5.15.0 uname -a # 完整系统信息(内核、主机名、架构等)使用场景:安装驱动、软件时判断内核版本。
14. Linux 核心终端热键
- Tab:命令 / 文件名自动补全,Linux 最高频快捷键
- 按一次补全唯一匹配项
- 连续按两次 Tab 列出所有候选
Ctrl + c:终止当前正在运行的程序,发送终止信号Ctrl + d:
- 退出当前 shell(等价 exit)
- 在输入交互程序中代表输入结束 EOF
15. 关机、重启相关指令 ⚠️【服务器操作务必谨慎】
1. shutdown(推荐,最规范)
优势:会通知已登录用户、执行系统优雅收尾、同步磁盘数据,优先推荐使用。 语法:
shutdown [选项] [时间] [通知消息]常用示例:
# 立刻关机 shutdown -h now # 10分钟后关机,并广播提示所有在线用户 shutdown -h +10 "服务器即将维护,10分钟后关机" # 指定时刻关机(23:00关机) shutdown -h 23:00 # 立刻重启 shutdown -r now # 取消已经调度的关机任务 shutdown -c
-h:halt 停机断电-r:reboot 重启2. halt / poweroff
halt # 停止系统,不切断电源(虚拟机常用) poweroff # 停止系统并断电3. reboot
reboot # 直接重启机器4. init(运行级别方式)
init 0 # 关机 init 6 # 重启💡小知识:Linux 传统运行级别 0:关机;1:单用户模式;3:字符多用户;5:图形界面;6:重启
⚠️重要提醒:云服务器远程执行关机后,无法远程开机!必须通过云厂商后台控制台启动。
二、Shell 命令以及运行原理
一、什么是 Shell
1. 定义
Shell 是运行在用户态的应用程序,本质是命令行解释器。 作用:充当 用户 ↔ Linux 内核 的中间桥梁。
- 用户无法直接操作内核硬件;
- 用户输入文本指令,Shell 接收、解析,转化为系统调用,交给 Linux 内核执行;
- 内核执行完成后,将结果经由 Shell 反馈给用户。
2. Shell 与内核、硬件层级关系
用户 ↓(输入命令) Shell(bash/sh/zsh) ↓(发起系统调用) Linux Kernel(内核) ↓(驱动交互) 计算机硬件(CPU/磁盘/网卡/内存)3. 常见 Shell 种类
/bin/bash:CentOS、Ubuntu 系统默认 Shell(使用最广泛)/bin/sh:早期标准 shell,很多系统中 sh 是 bash 的软链接/bin/zsh:功能更强,常用于开发机(搭配 oh-my-zsh) 查看当前使用的 Shell:echo $SHELL二、Linux Shell 命令两大分类
Linux 中所有 shell 命令分为:内置命令、外部命令,两者运行机制完全不同。 使用
type 命令名可以区分。1. 内置命令(Shell Builtin)
代码直接编译进 bash 程序内部,不存在独立磁盘可执行文件。
✅典型命令:
cd、pwd、alias、history、exit、read特点:
- 执行不需要创建子进程,速度极快;
- PATH 环境变量对内置命令无效;
which无法查到内置命令(which 只搜索外部程序)。type cd # 输出:cd is a shell builtin2. 外部命令
独立的二进制可执行程序,存放在磁盘目录(
/bin、/usr/bin)。✅典型命令:
ls、find、grep、tar、top特点:
- 执行时必须创建子进程运行;
- Shell 依靠
PATH环境变量搜索程序位置;type ls # ls is aliased to `ls --color=auto' which ls # /usr/bin/ls三、一条外部命令完整运行流程(核心重点)
以执行
ls -l为例:
- 接收输入 用户在终端输入
ls -l按下回车,字符串传递给 bash 进程。- Shell 语法解析 bash 对字符串预处理:拆分命令参数、解析引号、通配符、管道
|、重定向>、判断别名。优先级:别名 > 内置命令 > PATH 外部命令
- 命令类型判定 判断是否为别名 → 是否内置命令 → 去 PATH 路径查找外部程序。
- 创建子进程(fork) 父 Shell 调用系统接口
fork(),生成一份一模一样的子进程。💡重点:外部命令永远运行在子进程中
- 程序替换(exec) 子进程调用
execve(),抛弃原本 bash 代码,加载ls可执行程序,子进程转变为 ls 进程。- 程序运行、回收资源 ls 执行完毕调用
exit()退出;父 Shell 通过wait()等待子进程结束,回收子进程资源,打印命令提示符,等待下一次输入。关键结论:为什么
cd必须是内置命令?如果 cd 是外部命令,cd 会运行在子进程;子进程修改工作目录,父 shell 当前目录完全不受影响,无法实现切换目录功能。
四、PATH 环境变量原理
执行外部命令时,shell 不会全盘扫描磁盘,而是遍历
PATH内保存的目录,依次寻找目标可执行文件。查看 PATH:
echo $PATH执行
ls等价逻辑:依次查找/usr/local/bin/ls→/usr/bin/ls…… 全部目录找不到时,报错command not found。手动临时添加 PATH 示例:
export PATH=$PATH:/home/user/mycmd五、拓展:为什么管道 | 会创建多个进程
例如:
ps aux | grep mysql管道左右两端命令,都会各自创建独立子进程并行运行,左边进程输出作为右边进程输入。这也是 Shell 多进程模型典型应用。六、面试高频总结
- Shell = 命令解释器,用户和内核中间层;
- 命令分为内置(bash 内部,不创建子进程)、外部(独立程序,fork 子进程执行);
- 外部命令查找顺序:别名 → 内置命令 → PATH 路径搜索;
- fork 创建子进程 + exec 替换程序,是所有外部命令执行底层模型;
- cd、exit 等必须做成内置命令,依靠子进程无法修改父 shell 环境。
