当前位置: 首页 > news >正文

【Linux】 基础指令(下)


一、Linux 常用基础命令

1. date 指令(系统时间操作)

作用:查看、格式化系统日期时间,也可修改系统时间(需要 root 权限)

基础语法

date [选项] [+格式字符串]

常用用法

1.默认输出当前时间

date # 输出示例:Wed Jul 22 15:20:36 CST 2026

2.格式化输出(最常用)

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 @1784780000

5.修改系统时间(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 ~/.bashrc

7. 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 mysql

8. 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

⚠️ 注意:

  1. 服务器需要先安装:yum install lrzsz/apt install lrzsz
  2. 云服务器部分网页终端不支持 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 -zfvcf必须紧邻文件名。


12. bc 指令(终端计算器)

支持浮点运算,shell 脚本常用数学计算

bc # 进入交互计算器 # 输入 scale=3 保留3位小数 # shell一行运算示例 echo "scale=2; 10/3" | bc # 输出3.33

13. uname -r 指令(查看内核版本)

uname # 输出系统名称Linux uname -r # 查看内核版本,例如5.15.0 uname -a # 完整系统信息(内核、主机名、架构等)

使用场景:安装驱动、软件时判断内核版本。


14. Linux 核心终端热键

  1. Tab:命令 / 文件名自动补全,Linux 最高频快捷键
    • 按一次补全唯一匹配项
    • 连续按两次 Tab 列出所有候选
  2. Ctrl + c:终止当前正在运行的程序,发送终止信号
  3. 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特点:

  1. 执行不需要创建子进程,速度极快;
  2. PATH 环境变量对内置命令无效;
  3. which无法查到内置命令(which 只搜索外部程序)。
type cd # 输出:cd is a shell builtin

2. 外部命令

独立的二进制可执行程序,存放在磁盘目录(/bin/usr/bin)。

典型命令:ls、find、grep、tar、top特点:

  1. 执行时必须创建子进程运行;
  2. Shell 依靠PATH环境变量搜索程序位置;
type ls # ls is aliased to `ls --color=auto' which ls # /usr/bin/ls

三、一条外部命令完整运行流程(核心重点)

以执行ls -l为例:

  1. 接收输入 用户在终端输入ls -l按下回车,字符串传递给 bash 进程。
  2. Shell 语法解析 bash 对字符串预处理:拆分命令参数、解析引号、通配符、管道|、重定向>、判断别名。

优先级:别名 > 内置命令 > PATH 外部命令

  1. 命令类型判定 判断是否为别名 → 是否内置命令 → 去 PATH 路径查找外部程序。
  2. 创建子进程(fork) 父 Shell 调用系统接口fork(),生成一份一模一样的子进程。

💡重点:外部命令永远运行在子进程中

  1. 程序替换(exec) 子进程调用execve(),抛弃原本 bash 代码,加载ls可执行程序,子进程转变为 ls 进程。
  2. 程序运行、回收资源 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 多进程模型典型应用。


六、面试高频总结

  1. Shell = 命令解释器,用户和内核中间层;
  2. 命令分为内置(bash 内部,不创建子进程)、外部(独立程序,fork 子进程执行);
  3. 外部命令查找顺序:别名 → 内置命令 → PATH 路径搜索;
  4. fork 创建子进程 + exec 替换程序,是所有外部命令执行底层模型;
  5. cd、exit 等必须做成内置命令,依靠子进程无法修改父 shell 环境。

http://www.cnnetsun.cn/news/3578292.html

相关文章:

  • .NET日志系统架构与最佳实践全解析
  • NSK W1507FA 滚珠丝杠技术详解
  • Citrix虚拟化架构解析与1912 LTSR部署实践
  • 地陪APP平台系统开发公司,地陪行业首单转化遇瓶颈?
  • Solidity智能合约开发入门与环境配置指南
  • 宠物社区话题系统搭建,评论点赞实时交互开发实操
  • Codex橙皮书:AI编程工具实战指南与技术解析
  • CEF与SDL整合指南:C++中Web技术与多媒体渲染的融合实践
  • 沈阳正规的软件开发公司哪家可靠
  • 工业AI模型压缩:5大技巧解决边缘部署挑战
  • 移动编程革命:Cursor与OpenClaw工具解析
  • SolidWorks_焊件设计1_焊件基础入门
  • 深入解析EDMA3控制器:事件与中断寄存器机制及实战应用
  • 对接 QIWE 会话存档 API 的 RSA 密文解析与大文件分片拉取工程实践
  • 深入解析TI EDMA3TC寄存器:配置、监控与错误处理实战指南
  • VC++实现邮件发送:SMTP协议、libcurl集成与MIME编码实战
  • 【2026年】伺服电机分辨率是什么意思?
  • 大模型本地部署:从技术概念到工程实践的全解析
  • AI赋能企业培训:标准化课程开发效率提升10倍
  • C++内联函数:原理、应用与性能优化指南
  • 企业级AI原生应用与LLM技术选型指南
  • C++类模板成员函数类外实现:原理、写法与工程实践
  • 碳化硅二极管在快充市场的技术优势与应用
  • Unity AssetBundle自动化打包:从原理到CI/CD集成的工程实践
  • Flink Table API实现Kafka到MySQL实时数据同步
  • Flash性能优化实战:核心原则与关键技术解析
  • 影刀RPA 系统升级自动化:版本更新与兼容性验证
  • RocketMQ Namesrv架构设计与核心源码解析
  • UE4蓝图函数库实战:用C++封装复杂逻辑提升开发效率
  • FlashAttention优化原理与工程实践