Shell的基础知识和常用命令

📅 2026/7/4 20:07:28 👁️ 阅读次数 📝 编程学习
Shell的基础知识和常用命令

shell的基础知识和常用命令

访问命令行:在图形化桌面出现之前,与 Unix 系统进行交互的唯一方式就是借助由 shell 所提供的文本命令行界面(command line interface,CLI)。
CLI 只能接受文本输入,也只能显示出文本和基本的图形输出。

  • -可通过 Linux 控制台终端访问 CLI或让 Linux 系统退出图形化桌面模式,进入文本模式

  • Linux 发行版通常使用 Ctrl+Alt 组合键配合 F1 或 F7 来进入图形界面。
    • Ubuntu 使用 F7
    • RHEL 则使用 F1
    基本的 bash shell 命令

  • -shell 提示符:Docker 运行时,使用 /bin/bash 作为自己的默认 shell 程序。
    这意味着当我们登录 Linux 系统后,bash shell 会自动启动。
    尽管 bash shell 会在登录时自动启动,但是,是否会出现 shell 命令行界面(CLI)则
    依赖于所使用的登录方式。如果采用虚拟控制台终端登录,CLI 提示符会自动出现,你
    可以输入 shell 命令。
    但如果是通过图形化桌面环境登录 Linux 系统,你就需要启动一个图形化终端仿真器
    来访问shell CLI提示符。
    shell 提示符
    默认 bash shell 提示符是美元符号($),这个符号表明 shell 在等待用户输入。
    在输入 shell 命令之后,需要按回车键才能让 shell 执行你输入的命令。
    bash 手册:大多数 Linux 发行版自带用以查找 shell 命令及其他 GNU 工具信息的在线手册,帮助我们弄清各种命令行参数///man 命令用来访问存储在 Linux 系统上的手册页面。在想要查找的工具的名称前面输入man 命令,就可以找到那个工具相应的手册条目。输入命令 man man 就可以进入 man 工具的手册页面。

  • -

  • -

  • -

  • -
    浏览文件系统
    当登录系统并获得shell命令提示符后,你通常位于自己的主目录中。在Windows中,PC上安装的物理驱动器决定了文件的路径名。Windows会为每个物理磁盘驱动器分配一个盘符,每个驱动器都会有自己的目录结构,以便访问存储其中的文件
    Linux在路径名中不使用驱动器盘符。
    Linux将文件存储在单个目录结构中,这个目录被称为虚拟目录(virtual directory)。
    Linux虚拟目录结构只包含一个称为根(root)目录的基础目录。根目录下的目录和文件会按照访问它们的目录路径一一列出

Linux使用正斜线(/)而不是反斜线(\)在文件路径中划分目录

  • -根驱动器:在Linux PC上安装的第一块硬盘称为根驱动器。根驱动器包含了虚拟目录的核心,其他目录都是从那里开始构建的。
    挂载点(mount point):挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上它们却存储在另外一个驱动器中

    通常系统文件会存储在根驱动器中,
    而用户文件则存储在另一驱动器中
  • -通用的目录名用于表示一些常见的功能

遍历目录
在登录系统并获得一个shell CLI提示符后,会话将从主目录开始。主目录是分配给用户账户的一个特有目录。用户账户在创建之后,系统通常会为其分配一个特有的目录。
绝对文件路径:定义了在虚拟目录结构中该目录的确切位置,以虚拟目录的根目录开始,相当于目录的全名。
相对文件路径:允许用户指定一个基于当前位置的目标文件路径
使用cd命令在CLI提示符下切换虚拟目录。

  • 相对文件路径中的特殊字符
    单点符(.),表示当前目录
    双点符(…),表示当前目录的父目录

    文件和目录列表
    ls (list)命令最基本的形式会显示当前目录下的文件和目录:
    ls命令输出的列表是按字母列排序的
    在支持彩色的终端仿真器中,ls命令还可以用不同的颜色来区分不同类型的文件
    如果没安装彩色终端仿真器,可用带-F参数的ls命令轻松区分文件和目录

    -F参数在目录名后加了正斜线(/),以方便用户在输出中分辨
    Linux经常采用隐藏文件来保存配置信息。在Linux上,隐藏文件通常是文件名以点号开始的文件。ls -a把隐藏文件和普通文件及目录一起显示出来
  • -R参数是ls命令可用的另一个参数,叫递归选项.ls -R它列出了当前目录下包含的子目录中的文件。ls –FR / ls –F –R
    -l参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息。
    可以将多个参数结合起来使用获取更多信息。

过滤输出列表
ls 命令还支持在命令行中定义过滤器。它会用过滤器来决定应该在输出中显示哪些文
件或目录。
当你不知道要找的那个文件的确切名称。ls命令能够识别标准通配符,并在过滤器中
用它们进行模式匹配:
问号(?)代表一个字符;
星号(*)代表零个或多个字符。
方括号( [] )指定字符范围
感叹号(!)将不需要的内容排除在外
? * [] ! 等符号称为元字符通配符

处理文件
touch命令指定名称的新文件,文件的大小是零(空文件)
touch命令还可用来改变文件的修改时间,并不需要改变文件的内容

cp source_file destination _file 复制源文件(copy)
如果目标文件已经存在,cp命令不会提醒。
最好是加上-i选项,强制shell询问是否需要覆盖已有文件

处理文件
制表键(Tab)自动补全
制表键自动补全允许你在输入文件名或目录名时按一下制表键,让shell帮忙将内容补充完整。但是要给shell提供足够的文件名信息,使其能够将需要文件同其他文件区分开。
如果当前文件夹下同时test_1.txt 和 test_2.txt ,我们输入te后按Tab会补全至test_位置,再按一下制表键,shell就会列出所有以te开头的文件名为你提供信息

  • -链接文件
    如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可
    以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为链接。
    硬链接: ln
    Linux 下的文件是通过索引节点(Inode)来识别文件,ls –li可以查看索引节点。
    硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以
    防止“误删”的功能。
    符号链接(Symbolic links, 软连接): ln -s
    软链接文件有类似于Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文
    件实际上是一个文本文件,其中包含的有另一文件的位置信息
  • -重命名文件:
  • mv (moving)命令可以将文件和目录移动到另一个位置或重新命名。移动文件会将文件名从fall更改为fzll,但inode编号和时间戳保持不变。这是因为mv只影响文件名。和cp命令类似,也可以在mv命令中使用-i参数。这样在命令试图覆盖已有的文件时,你就会得到提示。也可以使用mv命令移动整个目录及其内容
  • 删除文件:bash shell中删除文件的命令是rm (removing)
    -i命令参数提示你是不是要真的删除该文件。bash shell中没有回收站或垃圾箱,文件一旦删除,就无法再找回。如果要删除很多文件且不受提示符的打扰,可以用-f参数强制删除

    处理目录
    在Linux中,有些命令(比如cp命令)对文件和目录都有效,而有些只对目录有效。创建新目录需要使用本节讲到的一个特别命令。创建目录mkdir 要想同时创建多个目录和子目录,需要加入-p参数, -p参数可以根据需要创建缺失的父目录

删除目录
rmdir
默认情况下,rmdir命令只删除空目录(没有-i选项来询问是否要删除目录)。目录下有内容时,rmdir命令拒绝删除目录。
删除非空目录时,可以先使用rm -i删除目录中的文件,再使用rmdir删除空目录也可以在整个非空目录上使用rm –r –f / -rf命令,使得命令可以向下进入目录,删除其中的文件,然后再删除目录本身。(没有警告信息,也没有声音提示)
查看文件内容

  • -查看文件类型:

  • file 命令不仅能确定文件中包含的文本信息,还能确定该文本文件的字符编码。可以使用file命令作为区分另一种目录的方法
    file能够展示文件链接到了哪个文件上

  • -查看整个文件本:

  • cat 显示文本文件中所有数据。
    -n 参数会给所有的行加上行号。
    -b 给有文的行加上行号。
    -T参数会用^I字符组合去替换文中的所有制表符

  • -查看整个文件:

  • 对大型文件来说,cat命令有点繁琐。文件的文本会在显示器上一晃而过,more 命令是分页工具,会显示文本文件的内容,但会在显示每页数据之后停下来。屏幕的底部more命令显示了一个标签,其表明你仍然在more程序中以及你现在在这
    个文本文件中的位置。浏览完之后,按q键退出
    less 为more命令的升级版;(“less is more”),能够实现
    在文本文件中前后翻动,而且还有一些高级搜索功能.

  • -查看部分文件:

  • tail 命令会显示文件最后几行的内容(文件的“尾部”)。默认情况下,它会显示文件的末尾10行。
    -n参数来修改所显示的行数
    -f参数是tail命令的一个突出特性。它允许你在其他进程使用该文件时查看文件的内容。tail命令会保持活动状态,并不断显示添加到文件中的内容。这是实时监测系统日志的绝妙方式
    head 命令会显示文件开头那些行的内容。默认情况下,它会显示文件前10行
    -n参数来修改所显示的行数
    练习

    进入项目根目录,目录结构包含 references/ 、 lectures/ 、 backups/ 子文件夹

文件操作:复制文件并重命名到references目录

cp commands_cheatsheet.txt references/command_reference.txt

重命名lectures内的文件
mv lectures/linux_basics.txt lectures/linux_fundamentals.txt

创建备份文件到backups目录

cp lectures/linux_fundamentals.txt backups/

更新文件时间(不修改内容)

touch commands_cheatsheet.txt

查看和分析文件内容
完整查看文件内容

cat linux_fundamentals.txt
less linux_fundamentals.txt

查看前两行

head -n 2 command_reference.txt

查看最后三行

tail -n 3 commands_cheatsheet.txt

交互式浏览器查看

less command_reference.txt

项目维护

切换到项目目录

cd /home/xxx/学习笔记项目

ls -R

删除指定文件

rm references/command_reference.txt

在根目录创建空文件

touch project_status.txt

更新全部文件访问时间

find . -type f -exec touch {} ;