Bash 零基础教程

Bash 基础命令

理解基础的 Bash 命令(lscdpwdmkdirrm)是使用命令行与 Linux 文件系统进行交互的根本。

这些命令允许你列出文件、切换目录、确定当前位置、创建新目录以及删除文件或目录。无论你是从事系统管理、软件开发,还是仅仅进行日常的命令行操作,都应该熟练掌握它们。

1. ls 命令:列出文件和目录

ls (List) 命令用于列出指定位置的文件和目录。在默认情况下,它会显示你当前工作目录中的内容。

1.1 基本用法

直接输入 ls 就会列出当前目录的内容。

ls

这会输出一个简单的文件和目录名称列表。

1.2 常用选项

当与各种“选项(Options)”结合使用时,ls 命令会变得异常强大。以下是一些最常用的选项:

  • -l: 提供长格式(long format)列表,显示每个文件和目录的详细信息,包括:权限、链接数、所有者、所属用户组、文件大小以及最后修改时间。
  • -a: (All) 列出所有文件和目录,包括隐藏文件(那些以 . 开头的文件)。
  • -t: (Time) 根据修改时间对输出结果进行排序,最近修改的文件会排在最前面。
  • -r: (Reverse) 反转列表的排序顺序。当与 -t 结合使用时,它会把最旧的文件排在最前面。
  • -h: (Human-readable) 以人类易读的格式显示文件大小(例如 1K、234M、2G),通常配合 -l 使用。
  • -R: (Recursive) 递归地列出所有子目录及其内部的内容。

1.3 实例演示

列出包含详细信息的所有文件:

ls -l

此命令将以长格式显示当前目录的内容。输出的每一行代表一个文件或目录,并包含诸如权限、硬链接数量、所有者和组、以字节为单位的文件大小、最后修改时间以及文件/目录名称等详细信息。

列出所有文件(包括隐藏文件)的详细信息:

ls -la

此命令结合了 -l(长格式)和 -a(所有文件)选项。它将显示当前目录中的所有内容,包括名称以点 (.) 开头的通常被隐藏的文件。

按修改时间排序文件(最新的在前):

ls -lt

此命令将文件和目录按最后修改时间排序,最近修改的排在列表顶部。这对于快速找到你刚刚操作过的文件非常有用。

按修改时间排序文件(最旧的在前):

ls -ltr

此命令结合了 -l-t-r(反转顺序)选项。它同样按时间排序,但倒序显示,因此最旧的文件会出现在列表顶部。

以人类易读的方式显示文件大小:

ls -lh

此命令以 K(千字节)、M(兆字节)或 G(吉字节)等直观格式显示文件大小,让你一目了然。

递归列出所有文件和目录:

ls -R

此命令从当前目录开始,递归列出所有内容。这意味着它会先列出当前目录,然后深入每个子目录并列出它们的内容,以此类推。

递归列出带有详细信息和易读大小的所有内容:

ls -lR -h

这结合了详细列表、递归和易读大小的选项。在包含大量子目录的层级中,输出内容可能会非常庞大。提示: -lR -h 也可以简写为 -lRh

1.4 实战应用

想象一下你正在管理一个 Web 服务器,需要快速找出某个目录中最大的文件以清理磁盘空间。你可以使用 ls -lhS 来以易读格式列出文件,并按文件大小降序排列(最大的排在最前面)。(注:这里的 -S 选项代表按大小 Size 排序)

2. cd 命令:切换目录

cd (Change Directory) 命令允许你通过更改当前工作目录,在文件系统中进行导航。

2.1 基本用法

要切换到特定的目录,只需输入 cd 加上目标目录的路径即可。

cd /path/to/directory

2.2 特殊情况与快捷操作

  • cd: 如果不加任何参数直接回车,cd 会直接带你回到你的家目录(Home directory)。
  • cd ..: 向上移动一层,进入父目录。
  • cd -: 返回到你跳转之前的上一个目录。

2.3 实例演示

切换到家目录:

cd

无论你当前在文件系统中的哪个位置,这个命令都会带你回家。

切换到指定目录:

cd /var/log

这会将当前目录更改为 /var/log(通常存放系统日志文件)。注意:你需要有相应的权限才能进入该目录。

向上移动一级目录:

cd ..

假设你原本在 /var/log,然后 cd 到了 /tmp。执行这个命令后,你会瞬间切回 /var/log

3. pwd 命令:打印工作目录

pwd (Print Working Directory) 命令用于在终端上显示你当前所在工作目录的绝对路径

3.1 基本用法

只需输入 pwd 并按下回车。

pwd

终端会输出你当前在文件系统中的完整路径。

3.2 选项

pwd 的选项非常少,但有一个很有用的选项是 -P (Physical),它会显示物理路径,解析并绕过任何符号链接(软链接)。

3.3 实例演示

显示当前工作目录:

pwd

如果你在 /home/user/documents 目录下,输出结果就会是 /home/user/documents

显示解析了符号链接后的物理路径:

首先,我们创建一个符号链接:

ln -s /home/user/documents link_to_documents
cd link_to_documents
pwd
pwd -P

如果你进入了 /home/user/link_to_documents 目录,单独执行 pwd 很可能直接输出 /home/user/link_to_documents。但是,因为 link_to_documents 其实只是一个指向别处的快捷方式(符号链接),执行 pwd -P 则会输出它真实指向的底层物理路径:/home/user/documents

4. mkdir 命令:创建目录

mkdir (Make Directory) 命令专门用于创建新的文件夹/目录。

4.1 基本用法

要新建目录,输入 mkdir 加上你想要的目录名称。

mkdir directory_name

4.2 常用选项

  • -p: (Parents) 按需创建父目录。如果指定的父级目录不存在,mkdir -p 会自动一并创建它们,且不会报错。
  • -v: (Verbose) 详细模式,在创建每个目录时在屏幕上打印提示信息。
  • -m: (Mode) 在创建目录的同时设置其权限级别(例如:mkdir -m 755 directory_name)。

4.3 实例演示

创建一个普通目录:

mkdir my_new_directory

这将在当前工作目录下创建一个名为 my_new_directory 的文件夹。

一次性创建多个并列目录:

mkdir dir1 dir2 dir3

此命令会同时在当前目录下生成三个目录。

按需创建嵌套的父子目录:

mkdir -p /path/to/new/directory

如果 /path/to/new 这一连串的路径原本都不存在,这个命令会依次自动创建 /path/path/to/path/to/new,最后在里面创建目标 directory

创建目录并赋予特定权限:

mkdir -m 755 my_directory

此命令创建 my_directory 的同时,将其权限设置为 755(采用八进制格式指定)。

5. rm 命令:删除文件和目录

rm (Remove) 命令用于删除文件和目录。请务必谨慎使用此命令,因为在 Linux 中删除的文件通常是无法恢复的(没有回收站)!

5.1 基本用法

要删除一个文件,输入 rm 加上文件名。

rm file_name

5.2 常用选项

  • -r-R: (Recursive) 递归删除,用于删除整个目录及其内部的所有内容。
  • -f: (Force) 强制删除。忽略不存在的文件,并且绝不弹出任何确认提示。
  • -i: (Interactive) 交互模式。在删除每一个文件或目录前都会停下来询问你是否确认操作。
  • -v: (Verbose) 详细模式,在屏幕上显示正在被删除的文件名单。

5.3 实例演示

删除单个文件:

rm myfile.txt

这会从当前目录永久抹除 myfile.txt

删除多个文件:

rm file1.txt file2.txt file3.txt

递归删除整个目录及其内容:

rm -r my_directory

危险操作提醒: 此命令会彻底销毁 my_directory 及其包含的所有文件和子目录。

强制删除文件且不提示:

rm -f myfile.txt

这会不带任何警告地删除文件,即使你对该文件没有写权限(前提是你对其所在的目录有写权限)。

交互式安全删除:

rm -i file1.txt file2.txt

系统会逐一询问你是否真的要删除 file1.txtfile2.txt,你需要输入 y (yes) 或 n (no) 来确认。

显示详细的删除过程:

rm -v myfile.txt