欢迎光临
我们一直在努力

【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

⚠️ 注意:

  • 服务器需要先安装:yum install lrzsz / apt install lrzsz
  • 云服务器部分网页终端不支持 rzsz,推荐使用 sftp 替代。

  • 11. tar 指令【重中之重】

    Linux 最主流打包压缩工具,可以打包、gzip/bzip2 压缩。

    参数记忆口诀

    • c create 创建包
    • x extract 解包
    • v verbose 显示过程
    • f file 指定文件名(f 必须放在最后)
    • z gzip 压缩(.tar.gz)
    • j bzip2 压缩(.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.33


    13. 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 builtin

    2. 外部命令

    独立的二进制可执行程序,存放在磁盘目录(/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 环境。

  • 赞(0)
    未经允许不得转载:171主机测评 » 【Linux】 基础指令(下)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址