【技术积累】Linux中的命令行【理论篇】【二】
ag命令
命令介绍
ag命令是一个用于在Linux系统中进行文本搜索的工具。它是基于Silver Searcher的改进版本,具有更快的搜索速度和更强大的功能。
ag命令的基本用法是在指定的目录中搜索指定的关键字。例如,要在当前目录中搜索关键字"example",可以使用以下命令:
ag example
ag命令会递归地搜索指定目录下的所有文件,并显示包含关键字的行。搜索结果会以文件名和行号的形式显示,方便用户快速定位到关键字所在的位置。
- 它比ack快一个数量级。
- 它忽略了你的
.gitignore
和.hgignore
中的文件模式。 - 如果你的源码库里有你不想搜索的文件,只要把它们的模式添加到一个.ignore文件里。(cough .min.jscough*)
- 这个命令的名字比ack短33%,而且所有的键都在主行上!
ag [options] pattern [path ...]
ag [可选项] 匹配模式 [路径...]
命令说明
输出选项:
--ackmate 以 AckMate-parseable 的格式显示结果
-A --after [LINES] 显示匹配行之后的行(默认2行)
-B --before [LINES] 显示匹配行之前的行(默认2行)
--[no]break 不同文件中匹配到的内容新建一行显示(默认开启)
-c --count 只显示每个文件中匹配到的数量 (通常与匹配行数不同)
--[no]color 在结果中打印颜色代码(默认启用)
--color-line-number 行号的颜色代码(默认值为:1;33)。
--color-match 匹配结果的颜色代码(默认值为:30;43)。
--color-path 路径名称的颜色代码(默认值为:1;32)
--column 打印结果中的列号
--[no]filename 打印文件名(除非搜索单个文件,否则启用)。
-H --[no]heading 在每个文件匹配前输出文件名(默认开启)
-C --context [LINES] 显示匹配行上下两行(默认2行)
--[no]group 和这些一样: --[no]break --[no]heading
-g --filename-pattern PATTERN 打印匹配PATTERN的文件名
-l --files-with-matches 显示包含匹配的文件名(不显示匹配的行)
-L --files-without-matches 只显示不包含匹配项的文件名
--print-all-files 打印所有搜索到的文件的标题,甚至那些不包含匹配的文件。
--[no]numbers 打印行号。默认情况是在搜索流时省略行号。
-o --only-matching 只输出每行匹配的部分
--print-long-lines 在很长的行上打印匹配信息(默认:>2k字符)。
--passthrough 当搜索一个流时,打印所有的行,即使它们不匹配。
--silent 抑制所有的日志信息,包括错误
--stats 打印统计(扫描的文件、花费的时间等)。
--stats-only 打印统计信息,不打印其他信息(与搜索单个文件时的--计数相同)。
--vimgrep 像vim的:vimgrep /pattern/g那样打印结果(它报告每一行的匹配结果)
-0 --null --print0 用null分隔文件名(用于'xargs -0')。
搜索选项:
-a --all-types 搜索所有文件(包括隐藏文件)
-D --debug 可笑的调试(可能没有用)
--depth NUM 目录搜索最大深度(默认25)
-f --follow 跟随链接进行搜索
-F --fixed-strings 为了与grep兼容,--literal的别名。
-G --file-search-regex 根据正则匹配搜索指定类型的文件
--hidden 搜索隐藏文件 (但遵从 .*ignore 文件)
-i --ignore-case 不区分大小写匹配
--ignore PATTERN 忽略匹配 PATTERN 的文件/目录(也允许使用文字文件/目录名称)
--ignore-dir NAME 为了与ack兼容,--ignore的别名
-m --max-count NUM 在一个文件中最大匹配的数量(默认: 10,000)
--one-device 不跟随其他设备的链接搜索
-p --path-to-ignore STRING 在STRING使用.ignore文件
-Q --literal 不要将PATTERN解析为正则表达式
-s --case-sensitive 敏感地匹配案例
-S --smart-case 不区分大小写匹配,除非 PATTERN 包含大写字符
--search-binary 搜索二进制文件
-t --all-text 搜索所有文本文件(不包括隐藏文件)
-u --unrestricted 搜索所有文件 (忽略 .ignore, .gitignore, 比如:搜索二进制和隐藏文件)
-U --skip-vcs-ignores 忽略VCS的忽略文件(指的是 .gitignore,.hgignore;仍然遵从.ignore)。
-v --invert-match 反向匹配
-w --word-regexp 只匹配整个单词
-W --width NUM 在NUM字符后截断匹配行
-z --search-zip 搜索压缩文件中的内容
文件类型:
搜索可以限制在某些类型的文件中,例如:
ag --html needle 结果输出到指定类型文件
- 在后缀为 .htm、.html、.shtml 或 .xhtml 的文件中搜索“needle”
有关支持的文件类型的列表,可以运行:
ag --list-file-types 列出支持的文件类型
alias命令
命令介绍
在Linux中,alias命令用于创建命令别名。它允许用户为常用的命令创建简短、易记的别名,从而提高工作效率。
alias命令的语法如下:
alias [别名]='命令'
- 简化较长的命令。
- 定义、修改或者显示一个或多个别名。
命令说明
-p:显示全部已定义的别名。
name(可选):指定要(定义、修改、显示)的别名。
value(可选):别名的值。
alias 返回 true 除非您要显示的别名未定义。
- 要显示的别名未定义。
- 当您定义(修改)别名的值的时候,由于值的字符串有空格但您没有用单引号扩起,那么会导致严重的问题:
# 为方便演示,删除全部别名
unalias -a
# 没有用单引号扩起
alias rm=rm -rf
# 执行命令后报错 bash: alias: -rf: not found
# 这时使用alias查看rm的别名时返回 alias rm='rm'
# 更具有迷惑性的例子
# 为方便演示,删除全部别名
unalias -a
# 仍然没有用单引号括起
alias ls=ls --color=never
# 执行命令后看起来没有报错
# 使用alias查看全部别名会发现运行结果如下:
# alias --color=never
# alias ls='ls'
# alias处理时将它们看成了两组
Q:如果我要显示一到多个别名,但不知道其中是否有未定义的该怎么办?
A:正常执行就是了,alias不会因为有一个未定义的别名就结束对剩余参数的执行。
Q:如果我这么定义alias cd='ls' ls='cd'
,会有什么后果?
A:运行cd依然会切换目录,运行ls依然会列出文件夹的内容;不要这样定义。
- 执行脚本时请注意:
- 使用
source
命令执行的bash脚本如果执行了alias
或unalias
命令,那么有可能会对终端环境的别名设置产生影响;终端环境的别名设置也可能改变运行结果; - 通过
sh
方式调用的 bash 脚本或直接运行当前用户有执行权限的脚本不受终端环境的别名影响。
- 使用
- 删除别名,请查看
unalias
命令。 - 建议您不要对
mv cp rm
等命令的别名设置危险的-f
选项,比如alias rm='rm -f'
。 - 需要注意别名是否和其他命令有冲突的情况。
- 该命令是 bash 内建命令,相关的帮助信息请查看
help
命令。
apachectl命令
命令介绍
apachectl命令是用于管理Apache HTTP服务器的命令行工具。它提供了一些常用的操作,如启动、停止、重启和重新加载Apache服务器。
命令说明
apachectl(参数)
以下是apachectl命令的一些常用选项和功能:
-
start:启动Apache服务器。它会启动Apache进程,并开始监听指定的端口,以便接受来自客户端的HTTP请求。
-
stop:停止Apache服务器。它会停止正在运行的Apache进程,并不再接受新的HTTP请求。
-
restart:重启Apache服务器。它会先停止正在运行的Apache进程,然后再启动一个新的Apache进程,以便重新加载配置文件和更新服务器。
-
graceful:优雅地重启Apache服务器。它会先启动一个新的Apache进程,然后再停止旧的Apache进程。这样可以确保在重启过程中不会中断正在处理的HTTP请求。
-
configtest:检查Apache配置文件的语法错误。它会验证配置文件的正确性,并输出任何错误或警告信息。
-
status:显示Apache服务器的当前状态。它会输出正在运行的Apache进程的信息,包括进程ID、启动时间和处理的请求数等。
-
fullstatus:显示详细的Apache服务器状态。它会输出每个正在运行的Apache进程的详细信息,包括进程ID、启动时间、处理的请求数和当前请求的URL等。
-
graceful-stop:优雅地停止Apache服务器。它会停止正在运行的Apache进程,但会等待当前正在处理的HTTP请求完成后再停止。
-
help:显示apachectl命令的帮助信息。它会列出所有可用的选项和功能,并提供简要的说明。
总之,apachectl命令是一个方便的工具,用于管理和控制Apache HTTP服务器的运行。它提供了一些常用的操作,如启动、停止、重启和重新加载服务器,以及检查配置文件的语法错误和显示服务器状态等功能。
apk命令
命令介绍
APK是Alpine Linux包管理器的命令行工具,用于处理Alpine Linux的软件包。
它用于安装、升级、删除和管理软件包。
命令说明
以下是 APK 命令行的一些常见用法:
-
apk add:安装包或包组。例如,要安装一个名为 'httpd'的软件包,你需要运行 "apk add httpd"。
-
apk del:删除包或包组。例如,要删除一个名为'httpd'的包,你需要运行 "apk del httpd"。
-
apk update:更新包索引。这会从你在Alpine Linux中配置的所有仓库中获取最新的包索引。
-
apk upgrade:升级所有已安装的包到它们最新的版本。
-
apk search:检索可用的包。这个功能类似于 apt-cache search 或 yum search,在软件仓库中查找软件包。
-
apk info:显示关于已安装的包的信息。例如, "apk info httpd" 将显示有关'httpd'包的信息。
-
apk cache:管理本地缓存的软件包。你可以使用 'apk cache clean' 来清除所有没有在使用的软件包。
-
apk version:显示所有已安装包的版本。
APK 配置文件一般位于/etc/apk/目录下,主配置文件是/etc/apk/repositories,其中包含了可以下载的软件仓库源列表。可以手动编辑此文件以添加,删除或更改软件源。
apropos命令
命令介绍
apropos命令是Linux系统中的一个非常有用的命令,用于搜索系统中的帮助文档。它可以根据关键字搜索系统中的man页(manual page)和其他帮助文档,以便用户快速找到所需的信息。
使用apropos命令非常简单,只需要在命令后面跟上要搜索的关键字即可。例如,要搜索关于文件操作的帮助文档,可以使用以下命令:
apropos file
命令说明
apropos命令会在系统的man页数据库中搜索包含关键字"file"的所有帮助文档,并将结果显示出来。搜索结果通常包括命令、函数、配置文件等相关的文档。
apropos命令的搜索结果通常包括以下几个字段:
- 名称(Name):搜索结果的名称,通常是命令、函数或配置文件的名称。
- 描述(Description):搜索结果的简要描述,通常包含关键字的上下文信息。
- 所属节(Section):搜索结果所属的man页节号,用于指定具体的帮助文档。
- 所属包(Package):搜索结果所属的软件包,用于指定具体的软件。
通过apropos命令,用户可以快速查找到与关键字相关的帮助文档,并进一步使用man命令查看详细的帮助信息。例如,要查看关于"file"命令的帮助文档,可以使用以下命令:
man file
apropos命令还支持使用通配符进行模糊搜索。例如,要搜索以"file"开头的所有命令,可以使用以下命令:
apropos file*
总之,apropos命令是Linux系统中一个非常有用的工具,可以帮助用户快速搜索并找到所需的帮助文档。它可以提高用户的工作效率,并且非常适合在命令行环境下使用。
apropos [-dalhvV] -e|-[w|-r] [-s section] [-m system[,...]] [-M path] [-L locale] -C [file] keyword ...
-d, --debug:输出调试信息。
-v, --verbose:输出详细的警告信息。
-r, -- regex:将每个keyword作为正则表达式解释。这是默认行为。每个keyword将匹配手册页和描述。
-w, --wildcard:将每个keyword作为shell样式的通配符解释。
-e, --exact:每个keyword将精确匹配手册页名字和描述。
-a, --and:只显示匹配所有keyword的手册页和描述。默认显示匹配任何keyword的项。
-l, --long:不根据终端宽度缩减输出。
-s section, --section section:只查找指定的手册section。
-m system[,...], --systems=system[,...]:用于查找其它操作系统的手册页。
-M path, --manpath=path:指定从其它以冒号分隔的手册页层次查找。默认使用 $MANPATH 环境变量。这个选项覆盖 $MANPATH 的内容。
-L locale, --locale=locale:apropos调用C函数setlocale来得到当前本地化信息,包括 $LC_MESSAGE 和 $LANG 。使用该选项提供一个locale字符串来临时更改本地化信息。
-C file, --config-file=file:使用这个用户配置文件而不是默认的~/.manpath。
-h, --help:打印帮助信息并退出。
-V, --version:打印版本信息并退出。
返回0表示成功,1表示用法、语法或配置文件错误,2表示操作错误,16表示没有找到匹配的内容。