当前位置:首页>Linux>【Linux·基础篇】Shell基础|常用命令·文件与目录操作

【Linux·基础篇】Shell基础|常用命令·文件与目录操作

  • 2026-10-13 14:23:29
【Linux·基础篇】Shell基础|常用命令·文件与目录操作

本文主要介绍 Linux Shell 中的文件与目录操作命令,旨在帮助初学者克服对“黑屏终端”的陌生感,系统掌握文件与目录操作的核心命令,这通常是通向 Linux 世界的第一步。

[本文基于 CentOS Linux release 7 系统环境]

一、什么是 Shell

在开始具体命令前,我们需要理解 Shell 的本质——它是一个命令解释器,是用户与操作系统内核进行交互操作的桥梁(接口)。

Shell 不仅能解释命令,还提供编程能力,但这超出了今天的讨论范围。

我们把那个黑黑的窗口称为终端(Terminal),它是系统的图形用户界面(Graphical User Interface,简称 GUI,又称“图形用户接口”),用于人机交互。

当你打开终端时,系统会自动启动一个 Shell 进程。最常见的 Shell 是 Bash(Bourne Again Shell,由贝尔实验室开发),它是大多数 Linux 发行版的默认选择。

停留在终端一闪一闪的光标处就是用户输入 Shell 命令的地方。在闪烁的光标之前,通常有一串符号标识,这是操作系统在等待用户输入命令时显示的特定字符,称为“命令行提示标识”“命令列提示符号”“命令提示符”(Command Prompt Symbol),它本身不是命令,而是提示用户可以开始输入的标识。‌

一个典型的命令行提示标识格式为:[用户名@主机名 工作目录]$。其中:

  • • 用户名:当前登录的账户名。
  • • 主机名:计算机的名称。
  • • 工作目录:显示你当前所在的文件夹路径,~ 表示家目录。
  • • 最后一个字符:$ 或 #。
    • • $ 是普通用户的提示符符号‌;
    • • # 是超级用户(root)的提示符符号‌,表示拥有最高权限。‌

如果我们在命令提示符后随便输入一些乱七八糟的字符,那么我们通常会遇到“command not found”错误,这意味着我们尝试运行一个程序或命令,但是系统无法在其预设的路径中找到这个程序或命令。例如:

$ mengzuishiguang-bash: mengzuishiguang: command not found

接下来,我会介绍一些常用的文件与目录操作命令,以帮助大家更快地入门 Linux 世界。

二、文件系统导航

在操作文件前,你要先知道自己当前在哪,以及如何移动。这需要我们掌握以下命令。

pwd

  • • 名称: pwd - print name of current/working directory
  • • 语法:pwd [OPTION]...
  • • 描述:输出当前位置(当前工作目录的完整路径名,即绝对路径)。
  • • 示例:
    $ pwd/home/username

【注】绝对路径与相对路径

  • • 绝对路径:/home/user/file.txt(从根目录开始)
  • • 相对路径:../sibling/file.txt(从当前目录开始)

ls

  • • 名称:ls - list directory contents
  • • 语法:ls [OPTION]... [FILE]...
  • • 描述:列出指定目录(默认为当前目录)的内容。
  • • 常用选项:
    选项
    长选项
    描述
    -a--all
    显示所有内容,包括隐藏内容(以 . 开头)。
    -l
    ——
    使用长列表格式,即详细列表(显示文件类型与权限、硬链接数、所有者、所有组、文件大小、最后修改日期和时间、文件或目录名称)。
    -h--human-readable
    使用 -l 选项,以人类可读的格式输出大小(例如,1K、3M、5G)。
    -r--reverse
    排序时倒序。
    -t
    ——
    按修改时间排序,最新内容优先。
  • • 示例:
    $ lsdocuments  downloads  music  pictures$ ls /bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var# 按修改时间从早到晚排序,最旧的文件显示在列表顶部,最新的文件显示在底部。$ ls -lrth picturestotal 5.1M-rw-r--r--. 1 user group  224 May 26  2024 pic1-rw-r--r--. 1 user group  16K May 26  2024 pic2-rw-r--r--. 1 user group 637K May 26  2024 pic3drwxr-xr-x. 2 user group 4.4M May 26  2024 others

【注】文件权限基础

$ ls -ldrwxr-xr-x 2 user group 4096 Jan 1 12:00 directory-rw-r--r-- 1 user group  1024 Jan 1 12:00 file.txt
  • • 首字符标识类型:d(目录)、-(普通文件)、l(链接文件)。‌‌
  • • 后续 9 字符分三组 rwx(读、写、执行)权限,分别对应所有者、所属组、其他用户。其中,r 表示可读权限,w 表示可写权限,x 表示可执行权限,- 表示无权限。‌‌

cd

  • • 名称:cd - change the current directory to dir
  • • 语法:cd [OPTION]... [dir]
  • • 描述:切换当前目录(工作目录)
  • • 示例:
    $ cd /home/username/documents$ cd ..  # 返回上一级目录$ cd ~   # 返回家目录$ cd -   # 返回上一个工作目录

三、文件操作:创建、查看与管理

touch

  • • 名称:touch - change file timestamps
  • • 语法:touch [OPTION]... FILE...
  • • 描述:创建空文件或更新文件时间戳。
  • • 示例:
    $ touch newfile.txt

cat

  • • 名称:cat - concatenate files and print on the standard output
  • • 语法:cat [OPTION]... [FILE]...
  • • 描述:查看文件内容。
  • • 示例:
    $ cat filename.txt$ cat -n filename.txt  # 查看文件并显示行号

more

  • • 名称:more - file perusal filter for crt viewing
  • • 语法:more [options] file [...]
  • • 描述:分页查看文件(不支持向上翻页)。
  • • 示例:
    # 按空格键翻页,q 键退出$ more longfile.txt$ more -10 filename.txt # 分页显示文件,每页 10 行$ more +20 filename.txt # 从第 20 行开始显示文件

less

  • • 名称:less - opposite of more
  • • 语法:less [options] file [...]
  • • 描述:分页查看文件(支持上下翻页、搜索、跳转)。
  • • 示例:
    # 按空格键翻页,q 键退出$ less longfile.txt$ less -N filename.txt   # 分页显示文件并显示行号$ less +20 filename.txt  # 从第 20 行开始显示文件

如果你要问:“为什么 less 命令比 more 命令功能更多?”这是因为“Less is more!”

head

  • • 名称:head - output the first part of files
  • • 语法:head [OPTION]... [FILE]...
  • • 描述:查看文件开头
  • • 示例:
    $ head -n 20 filename.txt  # 查看前 20 行

tail

  • • 名称:tail - output the last part of files
  • • 语法:tail [OPTION]... [FILE]...
  • • 描述:查看文件结尾
  • • 示例:
    $ tail -n 20 filename.txt  # 查看后 20 行$ tail -f logfile.log       # 实时查看日志

cp

  • • 名称:cp - copy files and directories
  • • 语法:cp [OPTION]... SOURCE... DIRECTORY
  • • 描述:复制文件或目录
  • • 示例:
    $ cp source.txt destination.txt$ cp -r sourcedir/ destdir/  # 递归复制目录

mv

  • • 名称:mv - move (rename) files
  • • 语法:mv [OPTION]... SOURCE... DIRECTORY
  • • 描述:移动或重命名文件或目录
  • • 示例:
    $ mv oldname.txt newname.txt$ mv file.txt destdir/$ mv sourcedir/ /target/directory/

rm

  • • 名称:rm - remove files or directories
  • • 语法:rm [OPTION]... FILE...
  • • 描述:删除文件或目录
  • • 示例:
    $ rm unwantedfile.txt$ rm -r directory/  # 递归删除目录

※注意: rm -rf / 这样的命令是极其危险的,会强制删除根目录下所有文件!执行删除操作前请务必仔细确认路径。

四、目录管理

mkdir

  • • 名称:mkdir - make directories
  • • 语法:mkdir [OPTION]... DIRECTORY...
  • • 描述:创建目录
  • • 示例:
    $ mkdir newfolder$ mkdir -p parent/child/grandchild  # 创建多级目录

rmdir

  • • 名称:rmdir - remove empty directories
  • • 语法:rmdir [OPTION]... DIRECTORY...
  • • 描述:删除空目录
  • • 示例:
    $ rmdir emptydir

tree

  • • 名称:tree - list contents of directories in a tree-like format
  • • 语法:tree [OPTION]... [Directory ...]
  • • 描述:以树状图显示目录结构
  • • 示例:
    $ tree.├── dir1│   ├── file1.txt│   └── file2.txt└── dir22 directories, 2 files

【注】如果遇到 -bash: tree: command not found 错误提示,你可以尝试通过运行以下命令来安装 tree:

$ sudo yum install tree

五、文件查找与定位

find

  • • 名称: find - search for files in a directory hierarchy
  • • 语法:find [OPTION]... [path...] [expression]
  • • 描述:文件查找工具
  • • 示例:
    $ find /home -name "*.txt"   # 查找所有后缀为“.txt”的文件$ find . -type f -size +1M   # 查找大于 1MB 的文件$ find . -mtime -7           # 查找 7 天内修改的文件

【注】常用通配符

  • • *:匹配任意数量任意字符。例如,*.txt 匹配所有后缀为“.txt”的文件。
  • • ?:匹配一个任意字符。例如,file?.log 可以匹配文件 file1.log、fileA.log,但不匹配 file10.log。
  • • [abc]:匹配方括号内的任意一个字符(例如,file[123].txt 可以匹配文件 file1.txt、file2.txt、file3.txt。)

locate

  • • 名称:locate - find files by name
  • • 语法:locate [OPTION]... PATTERN...
  • • 描述:快速文件查找(基于数据库)
  • • 示例:
    $ locate filename.txt$ locate -c "*.log"  # 显示系统中所有 .log 文件的总数$ locate -n 5 "httpd"  # 只显示前 5 个包含 "httpd" 的文件路径

【注】如果遇到 -bash: locate: command not found 错误提示,你可以尝试通过运行以下命令来安装 locate:

$ sudo yum install mlocate$ sudo updatedb

which

  • • 名称:which - shows the full path of (shell) commands
  • • 语法:which [options] [--] programname [...]
  • • 描述:查找命令位置(想要快速知道一个命令在哪儿并能直接执行)
  • • 示例:
    # which 只显示在 PATH 中找到的第一个 python 可执行文件$ which python/usr/bin/python

whereis

  • • 名称:whereis - locate the binary, source, and manual page files for a command
  • • 语法:whereis [options] [-BMS directory... -f] name...
  • • 描述:查找命令位置(‌想要了解一个命令的二进制文件、帮助文档、源码都在哪儿)
  • • 示例:
    # whereis 显示所有 python 相关的二进制文件、手册页等$ whereis pythonpython: /usr/bin/python /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /usr/include/python2.7 /usr/share/man/man1/python.1.gz

六、实用技巧

  1. 1. 使用 Tab 键自动补全命令:输入部分命令或文件名后按 Tab 键,Shell 会尝试补全命令。
  2. 2. 命令历史:按上下箭头(↑/↓)浏览历史命令,使用 history 命令可以查看完整历史。
  3. 3. 命令帮助:使用 man 命令可以查看一个命令的帮助文档,例如 man ls。

七、命令速查表

我将本文中的 Linux 命令整理如下,供大家查阅。

类别
命令
语法/描述
备注/示例
目录操作pwdpwd [OPTION]...
 打印当前工作目录的完整路径。
示例:$ pwd
lsls [OPTION]... [FILE]...
 列出目录内容。
常用选项:-a 显示所有文件(含隐藏)-l 长列表格式-h 人类可读大小 示例:$ ls -lh
cdcd [dir]
 切换当前工作目录。
常用路径:.. 上级目录~ 家目录- 上一个目录
文件操作touchtouch [OPTION]... FILE...
 创建空文件或更新文件时间戳。
示例:$ touch file.txt
catcat [OPTION]... [FILE]...
 连接文件并打印到标准输出(查看整个文件)。
示例:$ cat -n file.txt
moremore [options] file
 分页查看文件(仅向下翻页)。
空格键翻页,q 键退出。
lessless [options] file
 分页查看文件(可上下翻页、搜索)。
比 more 功能更强。快捷键:/ 搜索,q 退出。
headhead [OPTION]... [FILE]...
 显示文件开头部分。
示例:$ head -n 20 file.log
tailtail [OPTION]... [FILE]...
 显示文件结尾部分。
示例:$ tail -f app.log (实时跟踪日志)
cpcp [OPTION]... SOURCE... DIRECTORY
 复制文件或目录。
示例:$ cp -r dir1/ dir2/ (递归复制目录)
mvmv [OPTION]... SOURCE... DIRECTORY
 移动(重命名)文件或目录。
示例:$ mv old.txt new.txt
rmrm [OPTION]... FILE...
 删除文件或目录。
注意:-r 递归,-f 强制,切忌使用 rm -rf /。
目录管理mkdirmkdir [OPTION]... DIRECTORY...
 创建目录。
示例:$ mkdir -p a/b/c (创建多级目录)
rmdirrmdir [OPTION]... DIRECTORY...
 删除空目录。
与 rm -r 区别:此命令只能删空目录。
treetree [OPTION]... [Directory ...]
 以树状图列出目录结构。
非系统默认安装,需手动安装:sudo yum install tree
文件查找findfind [path...] [expression]
 在目录层次结构中搜索文件。
功能强大。示例:$ find . -name "*.log"
locatelocate [OPTION]... PATTERN...
 通过文件名快速查找文件(基于数据库)。
速度更快。非系统默认安装,需手动安装:sudo yum install mlocate初始使用 locate 命令时,需先执行 sudo updatedb 更新数据库。
whichwhich [options] programname
 查找命令的完整路径。
查找在 PATH 中找到的第一个可执行文件。
whereiswhereis [options] name
 定位命令的二进制、源码和帮助手册位置。
查找与命令相关的所有文件,信息更全。

结语:从基础到精通

“一切皆文件”是 Linux 的基本哲学理念。目录是一种特殊的文件类型。今天介绍的命令只是 Linux 文件操作的入门基础,但足够应对一些日常任务。俗话说:“最好的学习方法是实践。”学习之初,建议经常打开终端,创建一些测试文件和目录,尝试各种命令组合,观察它们的行为,不要只停留在阅读上。

当使用这些命令变得像呼吸一样自然时,你已经为学习更高级的 Shell 技巧、脚本编程和系统管理打下了坚实基础。


此番炼器手札,炉火尚未全熄。若道友观之有趣,或可暂留此间,结一尘缘。待下回开炉铸器,新得感悟,必先与同道分享。

最新文章

随机文章