禅道博客

分享专业技术知识,文章内容干货满满

《Linux命令行与shell脚本编程大全》第三章

2022-11-23 17:10:00
王肖蒙
原创 48
摘要:本书涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的shell脚本。

3.1 启动 shell

GNU bash shell能提供对Linux系统的交互式访问。它是作为普通程序运行的,通常是在用户登录终端时启动。登录时系统启动的shell依赖于用户账户的配置。

/etc/passwd文件包含了所有系统用户账户列表以及每个用户的基本配置信息

3.2 shell 提示符

默认bash shell提示符是美元符号($),这个符号表明shell在等待用户输入。

3.3 bash 手册

1.man命令用来访问存储在Linux系统上的手册页面。在想要查找的工具的名称前面输入man命令,就可以找到那个工具相应的手册条目

1.当使用man命令查看命令手册页的时候,这些手册页是由分页程序(pager)来显示的。可以通过点击空格键进行翻页,或是使用回车键逐行查看。读完了手册页,可以点击q键退出。

2.Linux手册页惯用的节名

Name:显示命令名和一段简短的描述

Synopsis:命令的语法

Confi guration:命令配置信息

Description:命令的一般性描述

Options :命令选项描述

Exit Status:命令的退出状态指示

Return Value:命令的返回值

Errors:命令的错误消息

Environment:描述所使用的环境变量

Files:命令用到的文件

Versions:命令的版本信息

Conforming To:命名所遵从的标准

Notes:其他有帮助的资料

Bugs:提供提交bug的途径

Example:展示命令的用法

Authors:命令开发人员的信息

Copyright:命令源代码的版权状况

See Also:与该命令类型的其他命令

如果不记得命令名怎么办?可以使用关键字搜索手册页。语法是:man -k 关键字。例如,要查找与终端相关的命令,可以输入man -k terminal。

3.Linux手册页的内容区域

区域号
所涵盖的内容

1

可执行程序或shell命令
2
系统调用
3
库调用
4
特殊文件
5
文件格式与约定
6
游戏
7
概览、约定及杂项
8
超级用户和系统和管理员命令
9
内核例程

3.4 浏览文件系统

当登录系统并获得shell命令提示符后,你通常位于自己的主目录中。一般情况下,你会想去

逛逛主目录之外的其他地方。本节将告诉你如何使用shell命令来实现这个目标。在开始前,先了

解一下Linux文件系统,为下一步作铺垫。

3.4.1 Linux 文件系统

1.Linux系统和Microsoft Windows操作系统的不同

Linux在路径名中不使用驱动器盘符。在Windows中,PC上安装的物理驱动器决定了文件的路径名。Windows会为每个物理磁盘驱动器分配一个盘符,每个驱动器都会有自己的目录结构,以便访问存储其中的文件。Linux将文件存储在单个目录结构中,这个目录被称为虚拟目录(virtual directory)。虚拟目录将安装在PC上的所有存储设备的文件路径纳入单个目录结构中。

2.常见Linux目录名称

目录
用途
/
虚拟目录的根目录。通常不会在这里存储文件
/bin
二进制目录,存放许多用户级的GNU工具
/boot
启动目录,存放启动文件
/dev
设备目录,Linux在这里创建设备节点
/etc
系统配置文件目录
/home
主目录,Linux在这里创建用户目录
/lib
库目录,存放系统和应用程序的库文件
/media
媒体目录,可移动媒体设备的常用挂载点
/mnt
挂载目录,另一个可移动媒体设备的常用挂载点
/opt
可选目录,常用于存放第三方软件包和数据文件
/proc
进程目录,存放现有硬件及当前进程的相关信息
/root
root用户的主目录
/sbin
系统二进制目录,存放许多GNU管理员级工具
/run
运行目录,存放系统运作时的运行时数据
/srv
服务目录,存放本地服务的相关文件
/sys
系统目录,存放系统硬件信息的相关文件
/tmp
临时目录,可以在该目录中创建和删除临时工作文件
/usr
用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里
var
可变目录,用以存放经常变化的文件,比如日志文件

3.4.2 遍历目录

1.可以使用切换目录命令cd将shell会话切换到另一个目录。

2.绝对文件路径

绝对文件路径总是以正斜线(/)作为起始,指明虚拟文件系统的根目录。

如果要指向usr目录所包含的bin目录下的用户二进制文件,可以使用如下绝对文件路径:/usr/bin

使用绝对文件路径可以清晰表明用户想切换到的确切位置。要用绝对文件路径来切换到文件系统中的某个特定位置,只需在cd命令后指定全路径名:

file-download-571750.json

pwd命令可以显示出shell会话的当前目录,这个目录被称为当前工作目录

3.相对文件路径

相对文件路径允许用户指定一个基于当前位置的目标文件路径。相对文件路径不以代表根目录的正斜线(/)开头,而是以目录名(如果用户准备切换到当前工作目录下的一个目录)或是 一个特殊字符开始。

有两个特殊字符可用于相对文件路径中:

1. 单点符(.),表示当前目录;

2. 双点符(..),表示当前目录的父目录

file-download-571752.json

3.5 文件和目录列表

3.5.1 基本功能列表

1.ls命令最基本的形式会显示当前目录下的文件和目录:

file-download-571753.json

注意,ls命令输出的列表是按字母排序的(按列排序而不是按行排序)。

2.可用带-F参数的ls命令轻松区分文件和目录。使用-F参数可以得到如下输出:

file-download-571754.json

-F参数在目录名后加了正斜线(/),以方便用户在输出中分辨它们

3.要把隐藏文件和普通文件及目录一起显示出来,就得用到-a参数

file-download-571756.json

4.-R参数是ls命令可用的另一个参数,叫作递归选项。它列出了当前目录下包含的子目录中的文件。如果目录很多,这个输出就会很长。可以合并为:ls –FR

file-download-571759.json

3.5.2显示长列表

常用的参数是-l。-l参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息。

这种长列表格式的输出在每一行中列出了单个文件或目录。

1.文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b);

2.文件的权限(参见第6章);

3.文件的硬链接总数;

4.文件属主的用户名;

5.文件属组的组名;

6.文件的大小(以字节为单位);

7.文件的上次修改时间;

8.文件名或目录名。

3.5.3 过滤输出列表

进行简单文本匹配的字符串

当用户指定特定文件的名称作为过滤器时,ls命令只会显示该文件的信息。ls命令能够识别标准通配符,并在过滤器中用它们进行模式匹配:

1.问号(?)代表一个字符;

2.星号(*)代表零个或多个字符。

3.6 处理文件

3.6.1 创建文件

可用touch命令轻松创建空文件, 并将你的用户名作为文件的属主, 文件的大小是零。

3.6.2 复制文件

1.cp命令需要两个参数--源对象和目标对象。

2.cp命令将源文件复制成一个新文件。

3.cp命令的-R参数威力强大。可以用它在一条命令中递归的复制整个目录的内容。

3.6.3 制表键自动补全

在使用命令行时,很容易输错命令、目录名或文件名。实际上,对长目录名或文件名来说, 输错的几率还是蛮高的。 这正是制表键自动补全挺身而出的时候。制表键自动补全允许你在输入文件名或目录名时按 一下制表键,让shell帮忙将内容补充完整

3.6.4 制表键自动补全

链接文件是Linux文件系统的一个优势。如需要在系统上维护同一文件的两份或多份副本, 除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方 法。这种虚拟的副本就称为链接。链接是目录中指向文件真实位置的占位符。

在Linux中有两种 不同类型的文件链接:

1. 符号链接: 就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。

2. 硬链接: 接会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言 是同一个文件。

说明: 接会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言 是同一个文件。

3.6.5 重命名文件

mv命令可以将文件和目录移动到另一个位置 或重新命名。

可以在mv命令中使用-i参数。这样在命令试图覆盖已有的文件时,你 就会得到提示。

3.6.6 删除文件

删除文件的命令是rm。

-i命令参数提示你是不是要真的删除该文件 。

如果要删除很多文件且不受提示符的打扰,可以用-f参数强制删除。

3.7 处理目录

3.7.1 创建目录

用mkdir命令创建目录。

mkdir命令的-p参数可以根据需要创建缺失的父目录。

3.7.2 删除目录

删除目录的基本命令是rmdir。

对rm命令而言,-r参数和-R参数的效果是一样的。-R参数同样可以递归地删除目录中的文件。

一口气删除目录及其所有内容的终极大法就是使用带有-r参数和-f参数的rm命令。

3.8 查看文件内容

3.8.1 查看文件类型

file命令是一个随手可得的便捷工具。它能够探测文件的内部,并决定文件是什么类型的。

3.8.2 查看整个文件

1.cat命令

cat命令是显示文本文件中所有数据的得力工具。

-n参数会给所有的行加上行号。

-T参数会用^I字符组合去替换文中的所有制表符。

2.more命令

cat命令的主要缺陷是:一旦运行,你就无法控制后面的操作。

more命令会显示文本文件的内容,但会在显示每页数据之后停下来。

3.less命令

less命令的操作和more命令基本一样,一次显示一屏的文件文本。

其中一组特性就是less命令能够识别上下键以及上下翻页键(假设你的终端配置正确)。在 查看文件内容时,这给了你全面的控制权。

3.8.3 查看部分文件

1. tail命令

tail命令会显示文件最后几行的内容(文件的“尾部”)。默认情况下,它会显示文件的末 尾10行。

2. head命令

会显示文件开头那些行的内容。默认情况下,它会显示文件前10行的文本。

发表评论
评论通过审核后显示。