Linux:基本指令(一)

文章目录

准备工作

使用Xshell 8登录阿里云轻量云服务器

1.下载安装 XShell

  1. 访问 XShell 官方下载页面:https://www.netsarang.com/products/xsh_overview.html,下载安转的时候选择"home/school"则为免费版本
  2. 根据页面提示,选择适合自己操作系统(如 Windows)的版本进行下载。
  3. 下载完成后,双击安装文件,按照安装向导的指引逐步操作(如同意用户协议、选择安装路径等),完成 XShell 的安装。

2.查看 Linux 主机 IP

在 Linux 主机的终端中,输入 ifconfig 指令并按下回车键,终端会显示网络相关信息,在输出内容中找到"inet"对应的 IP 地址(通常格式为类似 192.168.x.x、10.x.x.x 等),该地址即为 Linux 主机的 IP 地址。

3.使用 XShell 登录 Linux 主机

  1. 打开安装好的 XShell 软件。
  2. 在 XShell 终端中,输入 ssh [ip] 指令(将"ip"替换为刚才通过 ifconfig 指令查看到的 Linux 主机 IP 地址),然后按下回车键。
  3. 如果网络畅通,终端会提示输入用户名,输入用于登录 Linux 主机的用户名并按下回车键。
  4. 接着终端会提示输入密码,输入对应用户名的密码(输入密码时终端通常不显示字符,正常输入即可),然后按下回车键,即可成功登录 Linux 主机。

4.XShell 下的复制粘贴

在 XShell 中,无法使用 ctrl + c / ctrl + v 进行复制粘贴,正确操作如下:

  • 复制:按下 ctrl + insert(部分电脑的 insert 键需要配合 fn 键一起按下,即 fn + ctrl + insert)。
  • 粘贴:按下 shift + insert

一.root目录和home目录

可以简单理解linux系统目录就是windows系统的文件夹

在 Linux 文件系统中,根目录(/)家目录(~) 是两个截然不同的核心目录,二者在功能定位、目录层级、访问权限等维度存在本质差异,理解它们的区别是掌握 Linux 文件系统结构的基础。

1.核心定义与功能定位

1.1 根目录(Root Directory):文件系统的"顶层容器"

  • 符号表示 :用 /(斜杠)表示,是 Linux 文件系统的最顶层目录 ,所有其他目录、文件(包括系统文件、用户文件、配置文件等)都直接或间接包含在根目录下
  • 核心功能 :作为整个文件系统的"根节点",承载系统运行必需的核心目录(如 /bin/etc/usr)和所有用户的家目录,是 Linux 系统的"基础骨架"。
  • 类比理解 :相当于 Windows 系统中的"此电脑"(但逻辑上是单一顶层,而非多磁盘分区分散管理),所有磁盘分区最终都会挂载到根目录下的某个子目录(如 /mnt/home)。

1.2 家目录(Home Directory):用户的"私人工作区"

  • 符号表示 :用 ~(波浪线)表示,是每个用户专属的私人目录,用于存储用户的个人文件、配置、文档、下载内容等。
  • 核心功能:隔离不同用户的数据,确保每个用户只能默认访问自己的家目录(除非手动授权),避免用户间的文件干扰,同时方便用户管理个人数据。
  • 类比理解 :相当于 Windows 系统中 C:\Users\用户名 目录(如 C:\Users\ZhangSan),是用户日常操作的"默认起点"。

2.关键区别对比

为了更清晰区分二者,以下从 6 个核心维度进行对比:

对比维度 根目录(/) 家目录(~)
目录层级 整个文件系统的最顶层(层级为 0),所有目录的"父目录" 根目录下的子目录(默认路径为 /home/用户名),层级低于根目录
归属与权限 归属 root 用户(系统管理员),普通用户仅部分子目录有读/执行权限,无写入权限(避免破坏系统) 归属对应普通用户,该用户拥有完全权限(读/写/执行),其他用户默认无权限
包含内容 系统核心目录(如 /bin 命令目录、/etc 配置目录、/usr 系统程序目录)+ 所有用户的家目录 用户个人文件(文档、下载、桌面)、用户专属配置(如 .bashrc.ssh
默认访问 普通用户默认仅能"查看"(如 ls /),无法直接写入文件(需 sudo 权限) 用户登录后默认进入自己的家目录(无需额外操作),可直接创建/修改文件
唯一性 整个系统只有一个根目录(/) 每个用户对应一个专属家目录 (如 root 用户的家目录是 /root,普通用户是 /home/用户名
典型操作场景 系统级操作(如安装软件、修改系统配置、查看系统日志) 用户级操作(如编辑文档、保存下载文件、管理个人照片)

3.典型示例:直观理解路径关系

通过实际路径和命令,可更直观看到二者的层级与功能差异:

3.1 路径示例

  • 根目录的绝对路径:/

    根目录下的核心子目录:/home(用户家目录集合)、/bin(基础命令)、/etc(系统配置)、/var(日志文件)等。

  • 普通用户(如用户名为 user1)的家目录:

    绝对路径:/home/user1(可简写为 ~user1),用户登录后输入 pwd 会显示此路径。

    家目录下的典型内容:Documents(文档)、Downloads(下载)、.bashrc(用户命令行配置)等。

  • root 用户的家目录:

    特殊情况,root 用户的家目录不放在 /home 下,而是直接在根目录下:/root(可简写为 ~,当当前用户是 root 时)。

3.2 命令操作示例

bash 复制代码
# 1. 查看当前目录(以普通用户 user1 登录为例)
pwd  # 输出:/home/user1(默认进入家目录)

# 2. 切换到根目录,查看根目录下的内容
cd /  # 切换到根目录
ls    # 输出根目录下的核心子目录:bin  boot  dev  etc  home  lib  ...  usr  var

# 3. 从根目录切换回自己的家目录
cd ~  # 或 cd /home/user1,输出:/home/user1

# 4. 查看 root 用户的家目录(需 sudo 权限,普通用户默认无权限)
ls /root  # 报错:ls: 无法访问'/root': 权限不够
sudo ls /root  # 输入密码后可查看 root 用户的家目录内容

4.常见误区澄清

  1. 误区1:家目录是根目录的"子集",但二者功能独立

    家目录确实包含在根目录下(路径 /home/用户名),但根目录负责"系统整体",家目录负责"用户个人",二者管理的内容和权限完全分离,不能混淆。

  2. 误区2:root 用户的家目录不是 /home/root

    普通用户的家目录在 /home 下,但 root 用户作为系统管理员,家目录直接放在根目录下(/root),这是为了避免 /home 分区挂载失败时,root 无法访问自己的家目录。

  3. 误区3:普通用户不能操作根目录

    普通用户可以"查看"根目录下的内容(如 ls /),但仅能写入少数子目录(如 /tmp 临时目录),大部分系统目录(如 /etc/bin)需要 sudo 权限才能修改,这是 Linux 系统的安全机制。

5.总结

  • 根目录(/) :是 Linux 系统的"骨架",承载所有目录和系统核心文件,归 root 管理,普通用户仅有限访问权限,用于系统级操作。
  • 家目录(~):是用户的"私人空间",每个用户一个,归用户自己管理,拥有完全权限,用于日常个人文件操作。

理解二者的区别,能帮助你更清晰地定位文件路径、避免误操作系统文件,是 Linux 入门的关键知识点。

二.ls指令

ls(list directory contents)是 Linux/Unix 系统中最基础的目录内容查看指令,用于列出指定目录下的文件、子目录及相关属性信息。掌握其语法格式是高效使用该指令的核心。

1.ls 指令的核心语法格式

ls 指令的语法遵循 "指令 + 选项 + 参数" 的 Linux 命令通用结构,具体格式如下:

bash 复制代码
ls [选项]... [文件/目录路径]...

各部分说明

组成部分 含义与说明
ls 指令本身,固定关键字,用于触发"列出目录内容"的功能
[选项]... 可选参数(可多个组合),用于控制输出格式、筛选内容(如显示详细信息、隐藏文件),... 表示可填多个选项
[文件/目录路径]... 可选参数(可多个),指定要查看的文件或目录路径;若不填,默认查看 当前工作目录 的内容

2.语法格式的具体场景示例

根据"是否指定路径"和"是否使用选项",ls 的用法可分为以下几类,覆盖日常90%以上的使用场景:

2.1 基础用法:无选项 + 无路径(默认查看当前目录)

不添加任何选项和路径时,ls 会默认列出 当前工作目录 下的"非隐藏文件/目录"(隐藏文件以 . 开头,默认不显示),输出格式为"横向紧凑排列"。

bash 复制代码
# 示例:查看当前目录的非隐藏内容
ls
# 输出示例(横向排列,仅显示名称):
file.txt  docs/  image.png  report.pdf

2.2 指定路径:查看目标目录/文件的内容

若需要查看"非当前目录"的内容,或单独查看某个文件的属性,需在 ls 后添加 文件/目录的绝对路径或相对路径

场景 语法示例 说明
查看绝对路径目录 ls /home/user/docs 查看 /home/user/docs 目录下的内容(绝对路径:从根目录 / 开始)
查看相对路径目录 ls ../downloads 查看"当前目录的上一级目录下的 downloads 子目录"(相对路径:基于当前目录)
查看单个文件信息 ls /etc/profile 查看 /etc/profile 这个文件的名称(若加选项可显示更多属性)
查看多个路径 ls ~/Desktop /var/log 同时查看"当前用户桌面目录"和"系统日志目录"的内容(用空格分隔多个路径)

2.3 带选项用法:控制输出格式与筛选内容

ls 的核心价值在于通过"选项"定制输出,常用选项可单独使用,也可组合使用(如 -l-a 组合为 -la)。

(1)单个选项示例
语法格式 选项功能 输出效果示例
ls -l [路径] 以"长格式"显示详细信息(权限、所有者、大小、修改时间等) -rw-r--r-- 1 user group 1024 9月24 10:00 file.txt- 表示普通文件,d 表示目录)
ls -a [路径] 显示所有内容(包括以 . 开头的隐藏文件/目录,如 .bashrc.config/ .bashrc .config/ file.txt docs/(隐藏文件在前,非隐藏在后)
ls -h [路径] 配合 -l 使用,以"人类可读格式"显示文件大小(K/M/G,而非字节) -rw-r--r-- 1 user group 1.0K 9月24 10:00 file.txt(1024字节显示为1.0K)
ls -t [路径] 按"修改时间"排序(最新修改的内容排在最前面) report.pdf(10:30修改) file.txt(10:00修改) docs/(09:30修改)
ls -R [路径] 递归显示(遍历所有子目录,列出子目录内的内容) 先显示当前目录内容,再显示 docs/ 子目录下的 note.txt
(2)选项组合示例

多个选项可直接拼接(顺序不影响,通常习惯"字母顺序"或"功能优先级"排列),常见组合如下:

bash 复制代码
# 组合1:-a(显示隐藏文件) + -l(详细信息) + -h(人类可读大小)
ls -alh
# 输出示例(显示所有内容的详细信息,大小以K/M/G显示):
total 20K
drwxr-xr-x  3 user group 4.0K 9月24 10:00 .
drwxr-xr-x 10 user group 4.0K 9月23 18:00 ..
-rw-r--r--  1 user group  512 9月24 09:50 .bashrc
drwxr-xr-x  2 user group 4.0K 9月24 09:30 .config
-rw-r--r--  1 user group 1.0K 9月24 10:00 file.txt

# 组合2:-l(详细信息) + -t(按时间排序) + -r(反向排序)
ls -ltr /var/log
# 功能:显示 /var/log 目录下的内容,按"修改时间从旧到新"排序(-r 反向 -t 的顺序)

3.特殊语法:筛选特定类型的文件

通过"路径通配符"(如 *?)配合 ls,可快速筛选特定格式的文件,本质是对"文件/目录路径"部分的灵活扩展:

bash 复制代码
# 1. 查看当前目录下所有 .txt 后缀的文件
ls *.txt
# 输出:file.txt  note.txt  report.txt

# 2. 查看当前目录下名称以"img"开头的文件(无论后缀)
ls img*
# 输出:img1.png  img2.jpg  img_backup/(目录也会匹配)

# 3. 查看当前目录下名称长度为3个字符的文件(? 表示单个任意字符)
ls ???
# 输出:abc.txt(错误,长度超过3) → 正确匹配:123  a.txt(若 a.txt 是3个字符)

4.语法格式的常见误区

  1. 选项与路径的顺序无关ls -l /homels /home -l 效果完全一致,Linux 命令中"选项"可在"路径"前或后,但习惯将选项放在前面。
  2. 路径不填默认当前目录 :若只输入 ls -l,等同于 ls -l ././ 表示当前目录)。
  3. 隐藏文件需显式指定ls .bashrc 可查看单个隐藏文件,但 ls 不加 -a 不会默认显示它。

三.pwd指令与cd指令

pwdcd 是 Linux 系统中用于目录导航的两个基础指令,常用于查看当前位置和切换目录,是日常操作的必备工具。但在这之前我们先认识一下linux的目录解构。

Linux的目录结构

以上图片展示的是Linux 目录结构 相关的实体信息,呈现了 Linux 系统根目录(/)下主要子目录及其功能:

  • /dev:存放抽象硬件的目录。
  • /lib:存放系统库文件的目录。
  • /sbin:存放特权级二进制文件的目录。
  • /var:存放经常变化的文件的目录。
  • /home:普通用户目录。
  • /etc:存放配置文件的目录。
  • /boot:存放内核与启动文件的目录。
  • /bin:存放二进制文件(可执行命令)的目录。
  • /usr:存放安装程序(软件默认目录)的目录。
  • /mnt:文件挂载目录(如 U 盘、光驱等设备可挂载到这里)。
  • /root:特权用户(root 用户)的目录。
  • /opt:大型软件存放目录(非强制,可用于安装第三方大型软件)。

1.pwd 指令:显示当前工作目录

1. 1语法格式

bash 复制代码
pwd [选项]

1.2 功能说明

pwd(Print Working Directory)用于显示当前终端所在的目录路径(绝对路径),帮助用户确认自己在文件系统中的位置。

1.3常用用法

  • 基本用法 :直接输入 pwd,显示当前目录的绝对路径

    bash 复制代码
    pwd
    # 输出示例:/home/user/documents
  • 常用选项-P(显示物理路径,忽略符号链接)

    bash 复制代码
    # 假设存在符号链接 dir -> /home/user/documents
    cd dir
    pwd       # 输出:/home/user/dir(显示链接路径)
    pwd -P    # 输出:/home/user/documents(显示实际物理路径)

2.cd 指令:切换工作目录

2.1语法格式

bash 复制代码
cd [目录路径]

2.2 功能说明

cd(Change Directory)用于切换当前工作目录,是导航文件系统的核心指令。若不指定目录路径,默认切换到当前用户的主目录(/home/用户名)。

2.3 常用用法

(1)切换到指定绝对路径

绝对路径从根目录 / 开始,完整描述文件系统中的位置:

bash 复制代码
cd /usr/local/bin   # 切换到 /usr/local/bin 目录
(2)切换到指定相对路径

相对路径基于当前目录,常用特殊符号表示位置关系:

  • .:表示当前目录
  • ..:表示上一级目录
  • ~:表示当前用户的主目录(等同于 $HOME
bash 复制代码
cd ../downloads    # 切换到当前目录的上一级目录中的 downloads 子目录
cd ./docs          # 切换到当前目录中的 docs 子目录(./ 可省略,直接写 cd docs)
cd ~/pictures      # 切换到当前用户主目录中的 pictures 子目录
(3)特殊用法
  • 切换到主目录:cdcd ~

    bash 复制代码
    cd       # 等效于 cd ~,直接回到当前用户的主目录
  • 切换到上一次所在的目录:cd -

    bash 复制代码
    cd /tmp      # 先切换到 /tmp 目录
    cd -         # 切换回上一次所在的目录(例如 /home/user)
  • 切换到父目录(上一级目录):cd ..

    bash 复制代码
    cd ..        # 从当前目录向上移动一级
    cd ../../    # 向上移动两级目录

3.pwdcd 配合使用示例

bash 复制代码
# 查看当前目录
pwd
# 输出:/home/user

# 切换到 documents 子目录
cd documents
pwd
# 输出:/home/user/documents

# 向上移动一级目录
cd ..
pwd
# 输出:/home/user

# 切换到 /etc 目录
cd /etc
pwd
# 输出:/etc

# 回到主目录
cd ~
pwd
# 输出:/home/user

4.总结

  • pwd:告诉你"现在在哪里"(显示当前目录绝对路径)
  • cd:让你"去到哪里"(切换到指定目录)

四.touch指令

在Linux系统中,touch指令主要用于创建新的空文件,或者修改文件的时间戳属性(包括访问时间和修改时间) 。

1. 基本语法

bash 复制代码
touch [选项]... 文件...

[选项]是可选参数,用于调整touch指令的具体行为;文件是要操作的目标,可以是一个或多个文件名,多个文件名之间用空格隔开。

2. 常用功能及示例

2.1 创建新文件

当指定的文件不存在时,touch指令会创建一个新的空文件。

bash 复制代码
# 在当前目录下创建一个名为test.txt的空文件
touch test.txt

# 在指定目录下创建文件,假设存在一个名为documents的目录
touch documents/report.txt

2.2修改文件时间戳

当指定的文件已存在时,touch指令默认会将文件的访问时间(atime)和修改时间(mtime)更新为当前系统时间。

bash 复制代码
# 假设已经存在一个old_file.txt文件,更新它的时间戳
touch old_file.txt

此外,还可以通过一些选项来更灵活地控制时间戳的修改:

  • -a :仅修改文件的访问时间(atime)。
bash 复制代码
touch -a existing_file.txt
  • -m :仅修改文件的修改时间(mtime)。
bash 复制代码
touch -m existing_file.txt

3. 配合其他选项使用

3.1-t 选项

-t选项可以自定义文件的时间戳,格式为[[CC]YY]MMDDhhmm[.ss] ,依次代表世纪、年份、月份、日期、小时、分钟、秒(秒是可选的)。

bash 复制代码
# 将文件new_file.txt的时间戳设置为2024年10月1日12点30分
touch -t 202410011230 new_file.txt

3.2-r 选项

-r选项以参考文件的时间戳为标准,来设置目标文件的时间戳。

bash 复制代码
# 以reference_file.txt的时间戳为标准,设置target_file.txt的时间戳
touch -r reference_file.txt target_file.txt

4. 注意事项

  • touch指令需要对目标文件所在目录具有写入权限,否则无法创建新文件或修改时间戳。
  • 当一次指定多个文件操作时,touch指令会按照顺序依次对每个文件执行相应操作。

五.mkdir指令

mkdir(make directory)是 Linux 中用于创建新目录(文件夹)的基础指令,通过它可以在指定位置创建一个或多个目录,支持递归创建多级目录。

1.基本语法

bash 复制代码
mkdir [选项]... 目录名...
  • [选项]:可选参数,用于控制创建目录的行为
  • 目录名...:要创建的目录名称(可同时指定多个,用空格分隔)

2.常用功能及示例

2.1 基本用法:创建单个目录

在当前目录下创建一个指定名称的新目录:

bash 复制代码
# 在当前目录创建名为 "docs" 的目录
mkdir docs

在指定路径下创建目录(绝对路径或相对路径):

bash 复制代码
# 在 /home/user 目录下创建 "downloads" 目录(绝对路径)
mkdir /home/user/downloads

# 在当前目录的 "docs" 子目录下创建 "reports" 目录(相对路径)
mkdir docs/reports

2.2 核心选项:-p(递归创建多级目录)

当需要创建的目录包含不存在的父目录时,使用 -p 选项可以一次性创建所有缺失的目录(无需手动逐级创建):

bash 复制代码
# 创建 "project/src/main" 三级目录,若 project 和 src 不存在则自动创建
mkdir -p project/src/main

# 递归创建嵌套更深的目录结构
mkdir -p /tmp/backup/{images,videos}/2024
# 上述命令会同时创建:
# /tmp/backup/images/2024
# /tmp/backup/videos/2024

{} 是 Shell 通配符,用于同时创建多个平行目录)

2.3 其他常用选项

  • -m :创建目录时指定权限(无需后续用 chmod 修改)

    bash 复制代码
    # 创建 "private" 目录,并设置权限为 "仅所有者可读写执行"(权限值 700)
    mkdir -m 700 private
  • -v:显示创建目录的详细过程(verbose 模式)

    bash 复制代码
    # 显示每个目录的创建信息
    mkdir -v docs reports
    # 输出示例:mkdir: 已创建目录 'docs';mkdir: 已创建目录 'reports'

2.4一次性创建多个目录

通过空格分隔多个目录名,可以同时创建多个平行目录:

bash 复制代码
# 在当前目录同时创建 "music"、"photos"、"videos" 三个目录
mkdir music photos videos

3.注意事项

  1. 需对目标目录的父目录有写入权限,否则会提示"权限不够"。
  2. 不能创建已存在的目录,否则会报错"文件已存在"。
  3. 目录名不能包含特殊字符(如 /*? 等),建议使用字母、数字、_-

4.总结

mkdir 是创建目录的核心指令,其中 -p 选项最为常用,可高效创建多级目录结构。结合权限控制(-m)和批量创建功能,能满足大部分目录管理需求。

5.mkdir指令与touch指令的区别

对比维度 mkdir指令 touch指令
基本功能 用于创建新的目录(文件夹) ,可以在指定路径下生成一个空的目录结构 主要用于创建新的空文件,也能修改已有文件的时间戳属性(访问时间和修改时间)
操作对象 操作对象是目录,在文件系统中构建新的目录层级 操作对象是文件,能够创建文件或者调整文件的时间属性
创建结果 创建出的是一个目录,在文件管理器中表现为文件夹,可用于存放文件和子目录 创建的是一个空文件,文件大小初始为0字节,后续可写入数据
使用场景 当需要整理文件,构建文件夹层级,如创建项目文件夹、分类存放文件的目录时使用 用于生成新的文本文件、配置文件等,或者更新文件的时间标记,比如在脚本中更新某些文件的时间戳来标记执行状态
常用选项 -p 用于递归创建多级目录,如 mkdir -p dir1/dir2/dir3-m 用于在创建目录时指定权限,如 mkdir -m 755 new_dir -a 仅修改文件的访问时间,如 touch -a file.txt-m 仅修改文件的修改时间,如 touch -m file.txt-t 自定义文件的时间戳,格式为 [[CC]YY]MMDDhhmm[.ss] ,如 touch -t 202410051430 file.txt-r 以参考文件的时间戳来设置目标文件的时间戳,如 touch -r ref_file.txt target_file.txt
权限要求 需要对目标目录的父目录具有写入权限,否则无法创建目录 需要对目标文件所在目录具有写入权限,若修改时间戳,对文件本身也需要有相应权限
相关推荐
ltl5 小时前
大多数「无锁」代码其实不是无锁的
linux
ltl5 小时前
Linux 内核的内存屏障:一个让我调了三天的 bug
linux
paopaokaka_luck6 小时前
基于springboot3+vue3的企业考勤管理系统(部门树递归、Echarts图形化分析)
开发语言·spring boot·学习·echarts·mybatis·需求分析·代码规范
minglie16 小时前
zynq高频小数据量PS闭环 抖动时间的测量
学习
long3166 小时前
MySQL 学习练习(配套 01 入门资料)
数据库·学习·mysql
Lonely 净土7 小时前
Rocky Linux 安装教程
linux·运维·服务器
梦雨生生7 小时前
java开发工具(学习第一天)
java·开发语言·学习
李白你好11 小时前
Windows 离线 Linux 提权辅助查询工具
linux
Lust Dusk11 小时前
记一次Linux应急响应题目解析
linux·运维·服务器·网络·安全·网络安全
ShineWinsu12 小时前
对于Linux:五种IO模型以及非阻塞IO的详细解析
linux·c++·面试·io·阻塞·非阻塞·fcntl