Linux 基础
Thu Mar 20 2025
3089 label.wordCount · 15 label.readTime

Linux 基础


Table of Contents

文件系统 Link to 文件系统

目录结构 Link to 目录结构

Linux 的目录结构遵循 FHS(Filesystem Hierarchy Standard,文件系统层次结构标准),常见的顶级目录及其作用如下:

PLAINTEXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
├── bin        # 二进制可执行文件(普通用户常用命令,如 ls, cp)
├── boot       # 启动文件(如内核 vmlinuz、GRUB 引导程序)
├── dev        # 设备文件(如 /dev/sda 硬盘,/dev/null)
├── etc        # 配置文件(系统和服务的配置,如 /etc/passwd)
├── home       # 普通用户的主目录(如 /home/user)
├── lib        # 共享库和内核模块(32 位系统的库)
├── lib64      # 64 位系统的共享库
├── media      # 可移动介质挂载点(如 USB 设备、光盘)
├── mnt        # 临时挂载点
├── opt        # 可选软件包(如第三方应用)
├── proc       # 进程和系统信息的虚拟文件系统(如 /proc/cpuinfo)
├── root       # root 用户的主目录
├── run        # 运行时数据(如 PID 文件、Socket)
├── sbin       # 系统管理命令(如 fdisk, reboot,仅 root 可用)
├── srv        # 服务相关数据(如 Web 服务器数据)
├── sys        # 系统信息的虚拟文件系统(如 /sys/class)
├── tmp        # 临时文件(重启后可能会清除)
├── usr        # 用户级应用程序和库(类似 /usr/bin, /usr/lib)
│   ├── bin    # 用户程序(如 gcc, python)
│   ├── lib    # 共享库文件
│   ├── local  # 本地安装的软件(如 /usr/local/bin)
│   ├── share  # 共享数据(如 /usr/share/man)
├── var        # 可变数据(如日志 /var/log, 邮件 /var/mail)

重点目录 Link to 重点目录

  • /etc:系统的配置文件目录,所有服务和系统级软件的配置都在这里。
  • /var/log:日志文件目录,存储系统和应用程序日志,如 syslogdmesg
  • /proc/sys:虚拟文件系统,提供系统信息,如 CPU、内存、进程信息等。
  • /home/root:普通用户和超级用户的家目录。

路径 Link to 路径

绝对路径 Link to 绝对路径

从根目录 / 开始,完整地指定文件或目录的位置。 例如:

BASH
1
2
/home/user/documents/file.txt
/etc/nginx/nginx.conf

相对路径 Link to 相对路径

基于当前目录(pwd 查看当前目录)。 常用符号:

  • . 代表当前目录(./file.txt 指当前目录下的 file.txt)。
  • .. 代表上一级目录(../file.txt 指上一级目录中的 file.txt)。
  • ~ 代表用户的主目录(~/file.txt 相当于 /home/username/file.txt)。 示例 当前目录的文件:
BASH
1
cat ./file.txt   # 等同于 cat file.txt

上一级目录的文件:

BASH
1
2
cd ..            # 返回上一级目录
ls ../docs       # 列出上一级目录下 docs 文件夹中的内容

用户主目录的文件:

BASH
1
2
cd ~             # 进入当前用户的主目录
ls ~/Downloads   # 查看主目录的 Downloads 文件夹

命令行 Link to 命令行

命令行提示符 Link to 命令行提示符

命令行提示符是用户与操作系统交互的界面,通常显示当前用户、主机名和当前目录。

命令行提示符的组成部分

  • 用户名:当前登录的用户名
  • 主机名:当前连接的主机名
  • 当前目录:当前所在的目录
  • 命令行提示符:通常是一个 $ 或 # 符号,表示命令行提示符

例如

BASH
1
root@songhahaha:~# 

root@songhahaha:~# 是一个 Linux 命令行提示符(prompt),它包含了以下几个部分:

  • root:当前用户是 root(超级用户)。root 拥有最高的权限,可以对系统进行任何操作。

  • @:这是用户名和主机名之间的分隔符。

  • songhahaha:这表示计算机的主机名(hostname),在这个例子中,主机名是 songhahaha。

  • ~:这是当前工作目录,~ 表示用户的主目录。在 root 用户的情况下,它表示 /root 目录。

  • #:这是命令提示符,表示你以超级用户(root)身份登录。普通用户的命令行提示符通常是 $,而 # 表示具有更高权限的超级用户。

总结:

  • root@songhahaha:当前用户是 root,主机名是 songhahaha。
  • ~:当前所在的目录是用户的主目录(对于 root,通常是 /root)。
  • #:表示你以超级用户身份(root)在操作。

管道 Link to 管道

管道是一种将一个命令的输出作为另一个命令的输入的机制。

BASH
1
ls -l /etc | grep passwd
BASH
1
ps aux | grep process_name

ps aux

  • ps:显示当前系统上的进程信息。
  • a:显示所有用户的进程,而不仅仅是当前用户的。
  • u:显示进程的详细信息,包括用户名、CPU 和内存使用等。
  • x:包括没有终端的进程(即后台进程)。 这个命令会列出系统中所有进程的详细信息。

|:管道符,用于将前一个命令的输出传递给后一个命令。

grep process_name

  • grep:是一个文本搜索工具,它会过滤输入中的内容,并输出与 process_name 匹配的行。
  • process_name:是你要查找的进程名称。

在这里,grep process_name 会查找所有包含 process_name 的行,即过滤出包含指定进程名称的进程信息。

重定向 Link to 重定向

重定向是一种将命令输出重定向到文件或设备的方法。

输出重定向:

BASH
1
ls -l /etc > output.txt

或者

BASH
1
ls -l /etc >> output.txt

输入重定向:

BASH
1
cat < input.txt

错误重定向:

BASH
1
2
ls -l /etc 2> error.txt # 将错误信息输出到 error.txt 文件中
ls -l /etc 2>> error.txt # 将错误信息追加到 error.txt 文件中

同时重定向标准输出和标准错误:

BASH
1
command &> output.txt

后台运行 Link to 后台运行

在命令后面加上 & 符号,可以使命令在后台运行。

BASH
1
command &

nohup 命令可以使命令在后台运行,并且即使退出终端也不会停止。

BASH
1
nohup command &

基础命令 Link to 基础命令

常见命令 Link to 常见命令

  • —help 命令用于显示命令的帮助信息。

    BASH
    1
    2
    ls --help
    cat --help
    
  • ssh 命令用于安全地登录到远程计算机。

    BASH
    1
    ssh user@host
    
  • cd 命令用于切换当前工作目录。

    BASH
    1
    cd /path/to/directory
    
  • ls 命令用于列出目录中的文件。

    BASH
    1
    ls /path/to/directory
    

    常见选项:

    • -l:以长格式显示文件详细信息
    • -a:显示所有文件,包括隐藏文件
    • -t:按修改时间排序(默认最新的在前)
    • -r:反向排序
    • -S:按文件大小排序(默认从大到小)
    • -R:递归列出所有子目录中的内容
  • pwd 命令用于显示当前工作目录。

    BASH
    1
    pwd
    
  • cat 命令用于显示文件内容。

    BASH
    1
    cat /path/to/file
    
  • mkdir 命令用于创建新目录。

    BASH
    1
    mkdir /path/to/directory
    
  • rmdir 命令用于删除空目录。

    BASH
    1
    rmdir /path/to/directory
    
  • cp 命令用于复制文件或目录。

    BASH
    1
    2
    cp source_file destination
    cp -r source_directory destination # 递归复制目录及其内容
    
  • mv 命令用于移动文件或目录。

    BASH
    1
    mv source_file destination
    
  • rm 命令用于删除文件或目录。

    BASH
    1
    2
    rm source_file
    rm -r source_directory # 递归删除目录及其内容
    
  • touch 命令用于创建空文件或更新文件的访问和修改时间。

    BASH
    1
    touch filename
    
  • tar 命令用于创建、查看和提取归档文件。

    BASH
    1
    2
    3
    4
    5
    6
    7
    8
    # 创建归档文件
    tar -cvf archive.tar files/
    
    # 查看归档文件内容
    tar -tvf archive.tar
    
    # 提取归档文件
    tar -xvf archive.tar
    
  • wget/curl 用于下载文件的工具。

    BASH
    1
    2
    3
    4
    5
    # 使用 wget 下载
    wget https://example.com/file
    
    # 使用 curl 下载
    curl -O https://example.com/file
    
  • grep 命令用于在文件中搜索文本。

    BASH
    1
    2
    3
    4
    5
    6
    7
    8
    # 在文件中搜索文本
    grep "pattern" file
    
    # 递归搜索目录
    grep -r "pattern" directory/
    
    # 忽略大小写
    grep -i "pattern" file
    
  • ifconfig 命令用于配置和显示网络接口信息。

    BASH
    1
    2
    3
    4
    5
    # 显示所有网络接口
    ifconfig
    
    # 显示特定接口
    ifconfig eth0
    
  • df/du 命令用于显示磁盘使用情况。

    BASH
    1
    2
    3
    4
    5
    6
    7
    8
    # 显示文件系统使用情况
    df -h
    
    # 显示目录大小
    du -sh directory/
    
    # 显示目录下各文件大小
    du -h directory/
    
  • ping 命令用于测试网络连接。

    BASH
    1
    ping hostname
    

权限和用户管理 Link to 权限和用户管理

  • chmod

    chmod 命令用于更改文件或目录的权限。权限分为三类:所有者(Owner)所属组(Group)其他用户(Others)。每个类别可以设置以下权限:

    • 读(r):允许读取文件内容或列出目录内容。
    • 写(w):允许修改文件内容或在目录中创建/删除文件。
    • 执行(x):允许执行文件或进入目录。

    权限可以用数字表示:

    • 4 代表读权限(r)
    • 2 代表写权限(w)
    • 1 代表执行权限(x)

    通过将这些数字相加,可以设置不同的权限组合。例如:

    • 7 表示读、写、执行权限(4+2+1)
    • 6 表示读、写权限(4+2)
    • 5 表示读、执行权限(4+1)
    BASH
    1
    chmod 755 filename
    
    • 7(所有者):读、写、执行权限
    • 5(所属组):读、执行权限
    • 5(其他用户):读、执行权限
  • chown

    chown 命令用于更改文件或目录的所有者和所属组。

    BASH
    1
    chown [选项] 所有者[:所属组] 文件或目录
    
    BASH
    1
    chown user:group filename
    
    • filename 的所有者更改为 user,所属组更改为 group
  • chgrp 命令

    chgrp 命令用于更改文件或目录的所属组。

    BASH
    1
    chgrp [选项] 所属组 文件或目录
    
    BASH
    1
    chgrp groupname filename
    
    • filename 的所属组更改为 groupname
  • umask

    umask 命令用于设置默认的文件和目录创建权限。umask 值是一个掩码,用于屏蔽掉某些权限。

    BASH
    1
    umask 022
    
    • 设置默认的 umask022,表示新创建的文件和目录的权限分别为 644755
  • sudo

    sudo 命令允许普通用户以超级用户(root)的权限执行命令。通过合理配置 sudoers 文件,可以授予特定用户或组执行特定命令的权限。

    BASH
    1
    sudo apt-get update
    
    • 以超级用户权限执行 apt-get update 命令。
  • useradd 和 userdel

    useradd 命令用于创建新用户,userdel 命令用于删除用户。

    BASH
    1
    2
    sudo useradd newuser
    sudo userdel olduser
    
    • 创建名为 newuser 的新用户。
    • 删除名为 olduser 的用户。
  • passwd

    passwd 命令用于更改用户的密码。

    BASH
    1
    passwd username
    
    • 更改 username 的密码。
  • groups 命令

    groups 命令用于显示用户所属的组。

    BASH
    1
    groups username
    
    • 显示 username 所属的组。
  • usermod 命令

    usermod 命令用于修改用户属性,如用户的主目录、登录 shell、所属组等。

    BASH
    1
    sudo usermod -aG groupname username
    
    • username 添加到 groupname 组中。

进程管理 Link to 进程管理

  • ps 命令用于显示当前运行的进程。

    BASH
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 显示所有进程
    ps aux
    
    # 显示当前用户的进程
    ps -ef
    
    # 显示特定进程
    ps -p PID
    
    # 查找进程
    ps aux | grep process_name
    
    • a:显示所有用户的进程。
    • u:显示进程的详细信息,包括用户名、CPU 和内存使用等。
    • x:包括没有终端的进程(即后台进程)。
    • -e:显示所有进程。
    • -f:显示完整格式。

    输出格式说明:

    • PID:进程的 ID。
    • TTY:终端类型,表示进程是在哪个终端上运行的。
    • TIME:进程使用的 CPU 时间。
    • CMD:启动进程的命令。
    • %CPU:CPU 占用百分比。
    • %MEM:内存占用百分比。
    • VSZ:进程使用的虚拟内存大小(KB)。
    • RSS:进程使用的实际物理内存大小(KB)。
  • kill 命令用于终止进程。

    BASH
    1
    2
    3
    4
    5
    6
    7
    8
    # 通过 PID 终止进程
    kill PID
    
    # 强制终止进程
    kill -9 PID
    
    # 通过进程名终止
    pkill process_name
    
  • top 命令用于实时显示系统进程状态。

    BASH
    1
    2
    3
    4
    5
    6
    7
    8
    # 启动 top
    top
    
    # 按 CPU 使用率排序
    top -o %CPU
    
    # 按内存使用率排序
    top -o %MEM
    
Thanks for reading!

Linux 基础

Thu Mar 20 2025
3089 label.wordCount · 15 label.readTime

© LangQi99 | CC BY-SA 4.0