1.Linux 常用命令

2 阅读7分钟

1. Linux 入门概述

1.1 Linux和Windows区别

Linux 是典型的多用户、多任务系统;其设计哲学是一切皆文件

1.2 Linux 目录结构

Linux 系统中一切皆文件,最顶层的根目录用 / 表示。常见的重要目录包括:

  • /bin & /sbin:存放经常使用的命令可执行文件。/sbin中的 s 表示 Super User,存放系统管理员使用的系统管理程序。
  • /home:普通用户的家目录。每个普通用户都有自己的目录,一般以账号命名。
  • /root:超级管理员(系统管理员)的用户主目录。
  • /etc:所有的系统管理所需要的环境配置文件和子目录。
  • /usr:用户的很多应用程序和文件都放在这个目录下,类似于 Windows 下的 Program Files 目录。
  • /tmp:存放一些临时文件,过一段时间会自动清除。
  • /opt:主要用于安装可选的或第三方应用程序(如 MySQL 数据库等)。
  • /var:存放经常变动的文件,包括各种日志文件。
  • /mnt:用于临时挂载别的文件系统(如 U 盘、移动硬盘等)。

2. APT 软件包管理器

APT(Advanced Packaging Tools)是 Debian/Ubuntu 系列自带的软件包管理器,可以自动下载、配置、安装二进制或者源代码格式的软件包。

基本命令与实操:

  • 更新可用软件包列表
    sudo apt update
    
  • 安装软件包
    # 比如安装 net-tools 包(包含 ifconfig 等命令)
    # -y 参数表示不确认直接安装
    sudo apt install net-tools -y
    
  • 卸载软件包
    # -y 参数表示不确认直接卸载
    sudo apt remove net-tools -y
    
  • 搜索软件包
    sudo apt search net-tools
    
  • 显示软件包细节
    sudo apt show net-tools
    

3. 常用基本命令

3.1 帮助命令

  • man (Manual Packages):获取命令用法、程序功能、配置文件规范等说明。
    • 语法man [页编号] [命令或配置文件]
    • 举例man ls(查看 ls 帮助)、man 2 write(查看系统调用 write 帮助)。
  • help:获取 Shell 内建命令(如 cd、echo等没有单独可执行文件的命令)的帮助信息。
    • 语法help [内建命令]
    • 举例help cd

3.2 常用快捷键

  • Ctrl + L / clear:清屏。
  • Ctrl + C / Q:停止进程 / 退出当前命令。
  • TAB 键:命令补全或路径提示,防止敲错。
  • 上下方向键:查找执行过的历史命令。
  • Ctrl + U:清除当前行敲击的命令。

3.3 文件与目录操作

  • pwd:显示当前工作目录的绝对路径。
    zxf@ubuntu:~/桌面$ pwd
    /home/zxf/桌面
    
  • ls:列出目录的内容。
    • 选项:-a 显示全部文件(连同隐藏档);-l 长数据串列出包含属性与权限(简写为 ll);-R 递归列出子目录。
    zxf@ubuntu:~/桌面$ ls -al
    # 或者直接使用 ll
    zxf@ubuntu:~/桌面$ ll
    
  • cd:切换目录。
    • cd /bin/:绝对路径跳转。
    • cd ~cd:回到自己的家目录。
    • cd -:回到上一次所在的目录。
    • cd ..:回到当前目录的上一级。
    • cd -P:跳转到软连接对应的实际物理路径。
  • mkdir:创建新的目录。
    • 选项:-p 创建多层目录(如果父目录不存在会自动创建)。
    zxf@ubuntu:~/桌面$ mkdir test
    zxf@ubuntu:~/桌面$ mkdir -p test/b/bb/bbb
    
  • touch:创建空文件。
    zxf@ubuntu:~/桌面$ touch test/a/note.txt
    
  • cp:复制文件或目录。
    • 选项:-r 递归复制整个文件夹。
    zxf@ubuntu:~/桌面$ cp test/a/note.txt test/b/
    zxf@ubuntu:~/桌面$ cp -r test/b/ ./
    
  • rm:删除文件或目录。
    • 选项:-r 递归删除目录及其内容;-f 强制删除不提示。
    zxf@ubuntu:~/桌面$ rm b/note.txt
    zxf@ubuntu:~/桌面$ rm -r b/
    
  • mv:移动文件与目录 或 重命名。
    # 重命名
    zxf@ubuntu:~/桌面$ mv test/a/note.txt test/a/note2.txt
    # 移动文件
    zxf@ubuntu:~/桌面$ mv test/a/note2.txt ./
    

3.4 文件内容查看与编辑

  • cat:查看整个文件内容。
    • 选项:-n 显示所有行的行号。
    zxf@ubuntu:~/桌面$ cat -n /etc/passwd
    
  • tail:输出文件尾部内容。
    • 选项:-n <行数> 输出尾部n行;-F 实时追踪/监视文件的新增追加内容。
    zxf@ubuntu:~/桌面$ tail -n 2 /etc/passwd
    zxf@ubuntu:~/桌面$ tail -F note.txt
    
  • echo:输出内容到控制台。
    • 选项:-e 支持反斜线控制字符转换(如 \n 换行,\t 制表符)。
    zxf@ubuntu:~/桌面$ echo -e "hello\nworld"
    
  • >>>:输出重定向。
    • >:覆盖写入(原内容丢失)。
    • >>:追加写入(追加到文件末尾)。
    zxf@ubuntu:~/桌面$ ls -l > note.txt
    zxf@ubuntu:~/桌面$ echo hello >> note.txt
    

3.5 软链接与历史命令

  • ln -s:创建软链接(相当于 Windows 的快捷方式)。
    zxf@ubuntu:~/桌面$ ln -s test/a/note.txt ./
    # 删除软链接时注意不要加尾部的 /
    zxf@ubuntu:~/桌面$ rm note.txt
    
  • history:查看执行过的所有历史命令。
    zxf@ubuntu:~/桌面$ history
    

4. VI/VIM 编辑器

VIM 是在 Linux 中非常强大的文本编辑器。

  • 模式切换:打开文件默认进入一般模式。按 i/a/o 进入编辑模式,按 Esc 退出编辑回到一般模式。在一般模式下按 :/ 进入命令模式

4.1 一般模式(常用快捷键)

  • yy:复制当前行;y数字y(如 y3y):复制从当前行向下3行。
  • p:粘贴到光标所在行的下方。
  • dd:删除当前行;d数字d(如 d3d):删除光标后3行。
  • u:撤销上一步操作。
  • shift + 6 (^):移动到当前行的行头。
  • shift + 4 ($):移动到当前行的行尾。
  • shift + g (G):跳转到文件的最后一行;1 + shift + g 跳转到第一行。

4.2 编辑模式

  • i:在当前光标前插入;a:在光标后插入。
  • o:在当前光标的下一行新建一行插入。

4.3 命令模式

  • :w:保存。
  • :q:正常退出(未修改时)。
  • :q!:强制退出,放弃保存修改的内容。
  • :wq:wq!:强制保存并退出。
  • :set nu / :set nonu:显示行号 / 关闭行号。
  • /%s/old/new/g:全局替换匹配到的 old 内容为 new
  • /关键字:查找指定词,按 n 找下一个,N 找上一个。

5. 用户与用户组管理命令

5.1 用户管理

  • root 用户:系统的超级管理员,具有最高权限。Ubuntu 默认锁定 root 密码。
    • 设置 root 密码:sudo passwd root
    • 切换用户:su 用户名(不改变环境变量),su - 用户名(切换且获取完整环境变量)。
    • sudo:允许普通用户临时以 root 权限执行命令(推荐用法)。
  • useradd:添加新用户。
    • 选项:-m 自动创建用户家目录;-g 加入特定组。
    root@ubuntu:~# useradd -m tangseng
    
  • passwd:设置用户密码。
    root@ubuntu:~# passwd tangseng
    
  • id:查看用户是否存在及用户 uid、gid 组信息。
    root@ubuntu:~# id tangseng
    
  • userdel:删除用户。
    • 选项:-r 删除用户的同时删除其主目录及相关文件。
    root@ubuntu:~# userdel -r tangseng
    
  • usermod:修改用户信息。
    • 选项:-l 修改用户名;-d 修改家目录。
    root@ubuntu:~# usermod -l pengyuyan huge
    

5.2 用户组管理

  • groupadd:新增组。
    root@ubuntu:~# groupadd xitianqujing
    
  • groupdel:删除组。
    root@ubuntu:~# groupdel xitianqujing
    
  • groupmod:修改组信息。
    • 选项:-n 新组名 老组名。
    root@ubuntu:~# groupmod -n xitian xitianqujing
    
  • usermod -g:修改用户所属的主组。
    root@ubuntu:~# usermod -g xitian zhubajie
    

6. 文件权限管理

6.1 文件属性理解

使用 llls -l)查看时,首列显示的 10 个字符代表权限: 比如 -rwxr-xr--

  • 第 1 位表示类型:- 代表文件,d 代表目录,l 代表软链接。
  • 第 2-4 位:属主(Owner/User)权限。
  • 第 5-7 位:属组(Group)权限。
  • 第 8-10 位:其他人(Other)权限。

权限字母含义:

  • r(读,权重为4):文件可查看;目录可以 ls 查看内容。
  • w(写,权重为2):文件可修改;目录内可新建/删除/重命名文件。
  • x(执行,权重为1):文件可作为程序执行;目录可以 cd 进入。

6.2 改变权限 (chmod)

  • 字符修改法
    • u所有者,g所有组,o其他人,a所有人。+添加,-减少,=直接赋予。
    zxf@ubuntu:~/桌面$ chmod u+x passwd      # 给属主增加执行权限
    zxf@ubuntu:~/桌面$ chmod u-x,o+x passwd  # 剥夺属主执行权限,给其他人加上
    
  • 数字修改法(最常用):r=4, w=2, x=1
    zxf@ubuntu:~/桌面$ chmod 765 passwd      # u=7(rwx), g=6(rw), o=5(rx)
    zxf@ubuntu:~/桌面$ chmod -R 777 test/    # -R 递归,赋予文件夹下所有文件最高权限
    

6.3 改变所有者与所属组 (chown / chgrp)

  • chown:改变文件所有者。
    zxf@ubuntu:~/桌面$ sudo chown root note.txt
    zxf@ubuntu:~/桌面$ sudo chown -R root:root test/  # 同时改变属主和属组并递归
    
  • chgrp:单纯改变文件所属组。
    zxf@ubuntu:~/桌面$ sudo chgrp zxf tt.txt
    

7. 搜索查找命令

7.1 find (递归查找文件)

  • 语法find [搜索范围] [选项]
    • 按名称:-name
    • 按属主:-user
    • 按大小:-size(+n 大于,-n 小于)
    # 在当前目录查找所有 txt 文件
    zxf@ubuntu:~/桌面$ find ./ -name "*.txt"
    # 查找当前目录下大小超过 200 字节的文件
    zxf@ubuntu:~/桌面$ find ./ -size "+200c"
    

7.2 grep 与 管道符 |

  • 管道符 |:将前一个命令的输出结果交给后一个命令处理。
  • grep:文本内容过滤搜索。
    • 选项:-n 显示匹配行号。
    zxf@ubuntu:~/桌面$ cat passwd | grep -n "wu"
    zxf@ubuntu:~/桌面$ ll | grep "zx"
    

8. 压缩和解压类 (tar)

Linux 常用的打包格式为 .tar.gz

  • 打包并压缩-zcvf (z=gzip格式, c=打包, v=显示过程, f=指定文件名)
    # 将 tt.txt 和 tt2.txt 压缩为 tt.tar.gz
    zxf@ubuntu:~/桌面$ tar -zcvf tt.tar.gz tt.txt tt2.txt
    
  • 解压-zxvf (x=解包提取)
    # 解压到当前目录
    zxf@ubuntu:~/桌面$ tar -zxvf test.tar.gz
    # -C 选项用于指定解压到的目标目录
    zxf@ubuntu:~/桌面$ tar -zxvf test.tar.gz -C ./work
    

9. 磁盘与网络类命令

9.1 磁盘空间查看 (df / du)

  • df (disk free):查看系统磁盘整体挂载和使用情况。
    # -h 人性化单位(GB/MB/KB)显示
    atguigu@ubuntu:~$ df -h
    
  • du (disk usage):查看特定目录或文件的磁盘占用大小。
    # -a 显示目录下所有的文件及子目录大小
    atguigu@ubuntu:~$ du -a /opt/software/
    

9.2 网络配置与测试

  • ifconfig:查看当前服务器的网络接口和 IP 信息。
    atguigu@ubuntu:~$ ifconfig
    
  • ping:测试与目标主机的网络连通性。
    atguigu@ubuntu:~$ ping www.baidu.com
    
  • hostname:查看或临时修改服务器主机名。
    atguigu@ubuntu:~$ hostname
    

10. 进程线程管理

10.1 查看进程 (ps / top)

  • ps:进程状态查询。
    • ps -aux:侧重查看系统中所有进程的 CPU占用率物理/虚拟内存占比
    • ps -ef:侧重查看 进程的父子关系 (PPID、PID)。
    zxf@ubuntu:~/桌面$ ps -aux
    zxf@ubuntu:~/桌面$ ps -ef | grep tail
    
  • top:动态实时查看系统健康状态与进程负载(相当于 Windows 任务管理器)。
    • top -d 1:每隔 1 秒更新一次。
    • 交互指令:P(按CPU排序),M(按内存排序),q(退出)。

10.2 杀死进程 (kill / killall)

  • kill:通过进程 ID (PID) 杀掉进程。
    # -9 表示强迫进程立即停止
    zxf@ubuntu:~/桌面$ kill -9 3976
    
  • killall:通过进程名称批量杀掉所有匹配的进程。
    zxf@ubuntu:~/桌面$ killall tail
    

10.3 内存与端口查看

  • free -m:以 MB 为单位查看服务器总内存、已用、空闲和缓存大小。
    zxf@ubuntu:~/桌面$ free -m
    
  • netstat:网络统计信息和端口占用情况。
    # 查看某端口号是否被占用
    atguigu@ubuntu:~$ sudo netstat -nlp | grep 端口号
    # 查看某进程(PID)在调用哪些网络信息
    atguigu@ubuntu:~$ netstat -anp | grep 进程号
    

11. 路径操作与定时任务

11.1 路径名称截取

  • basename:去掉全路径,提取出文件本身的名称。
    zxf@ubuntu:~$ basename /home/zxf/note.txt
    # 输出: note.txt
    zxf@ubuntu:~$ basename /home/zxf/tt.txt .txt
    # 也可以切除后缀输出: tt
    
  • dirname:去掉文件名,提取出绝对路径目录部分。
    zxf@ubuntu:~$ dirname /home/zxf/banzhang.txt
    # 输出: /home/zxf
    

11.2 定时任务 (crontab)

crontab 用于设定按时间周期自动执行的后台任务。

  • 编辑任务
    atguigu@ubuntu:~$ crontab -e
    
  • 查看任务
    atguigu@ubuntu:~$ crontab -l
    
  • 时间格式:五个星号 * * * * * 分别代表 分 时 日 月 周
    • 特殊符号:* 任意时间,, 不连续时间,- 范围时间,*/n 每隔多久。
  • 案例应用
    # 每天凌晨 4 点每隔 10 分钟执行一次命令
    */10 4 * * * /path/to/command
    # 每隔1分钟向指定文件追加数字11
    */1 * * * * /bin/echo "11" >> /opt/module/bailongma.txt