Linux入门1(2/2)
6、查找命令
在 Linux/Unix 系统中,which 和 find 是两个常用的查找命令,但它们的用途和功能有显著区别。
6.1、which
which - 查找可执行文件的路径
①、功能
用于定位 可执行程序(命令)的绝对路径。
在
$PATH环境变量指定的目录中搜索。
②、示例
# 基本语法which [选项] 命令名which ls # 查找 `ls` 命令的路径(通常输出 `/bin/ls`)which python # 查找当前使用的 Python 解释器路径which -a git # 显示所有匹配的路径(如果有多个同名命令)③、特点
仅搜索
$PATH中的目录。只能查找可执行文件(二进制文件或脚本)。
不支持模糊匹配(如通配符
*)。
6.2、find
find - 递归查找文件或目录
要想在整个系统完成搜索可以通过命令:su进入超级管理员模式(root用户)来获取更大的权限
①、功能
在指定目录及其子目录中 递归搜索文件或目录。
支持按名称、类型、大小、时间等条件过滤。
②、示例
# 基本语法find [搜索路径] [选项] [操作]# 按名称查找文件find /home -name "*.txt" # 查找 `/home` 下所有 `.txt` 文件find . -name "file*" # 当前目录下文件名以 `file` 开头的文件# 按类型查找文件find /var/log -type f # 查找 `/var/log` 下的所有文件(不包括目录)find ~ -type d -name "docs" # 查找用户主目录下名为 `docs` 的目录# 按时间查找文件find /tmp -mtime +30 # 查找 `/tmp` 下 30 天前修改的文件find . -newer reference.txt # 查找比 `reference.txt` 更新的文件③、常用选项
| 选项 | 作用 |
|---|---|
-name | 按文件名匹配(支持通配符 * ?) |
-type | 按类型过滤(f 文件,d 目录) |
-size | 按文件大小(如 +1M 表示大于 1MB) |
-mtime | 按修改时间(如 -7 表示 7 天内) |
-exec | 对搜索结果执行命令(如删除、压缩) |
④、特点
功能强大,支持复杂条件组合。
可以搜索任意文件类型(包括隐藏文件)。
递归搜索子目录。
支持模糊匹配(如-name 、通配符"*.txt"等)。
7、grep、wc和管道符
在 Linux/Unix 系统中,grep、wc 和管道符 | 是文本处理和数据统计的常用工具,它们可以单独使用,也可以组合起来实现强大的功能
7.1、grep
grep - 文本搜索工具
①、功能
在文件或输入流中搜索匹配指定模式(正则表达式或普通字符串)的行。
②、示例
# 基本语法grep [选项] "搜索模式" 文件名grep "error" log.txt # 查找包含 "error" 的行grep -i "warning" log.txt # 忽略大小写搜索 "warning"grep -v "#" config.conf # 显示不包含 `#` 的行(过滤注释)grep -r "main" /src # 递归搜索 `/src` 目录下所有文件# 如果在要过滤的关键字中含有特殊符号或者空格,建议使用双引号“”引起来③、常用选项
| 选项 | 作用 |
|---|---|
-i | 忽略大小写 |
-v | 反向匹配(显示不包含模式的行) |
-n | 显示匹配行的行号 |
-c | 统计匹配的行数 |
-r | 递归搜索目录 |
-E | 使用扩展正则表达式(等同于 egrep) |
7.2、wc
wc - 统计行数、单词数、字符数
①、功能
统计文件或输入流的行数(
-l)、单词数(-w)、字符数(-c)。
②、示例
# 基本语法wc [选项] 文件名wc log.txt # 输出:行数 单词数 字节数 文件名wc -l log.txt # 只统计行数wc -w *.txt # 统计所有 `.txt` 文件的单词数③、常用选项
| 选项 | 作用 |
|---|---|
-l | 只统计行数 |
-w | 只统计单词数 |
-c | 只统计字节数 |
-m | 只统计字符数(与 -c 区别在于多字节字符) |
7.3、管道符
管道符 | - 组合命令
左边内容的输出作为右边指令的输入
①、功能
将前一个命令的输出作为后一个命令的输入。
②、示例
# 基本语法命令1 | 命令2 | 命令3...# 统计日志中错误出现的次数grep -i "error" log.txt | wc -l # 先通过 grep 过滤出包含 "error" 的行,再通过 wc -l 统计行数# 统计代码中函数定义的行数grep -n "def " script.py | wc -l # 查找 script.py 中所有 def开头的行(函数定义),并统计数量。# 过滤注释后统计有效代码行数grep -v "^#" config.conf | wc -l # 排除以 # 开头的行(注释),统计剩余行数。# 统计当前目录下 .sh 文件的总行数find . -name "*.sh" -exec cat {} \; | wc -l # 查找所有 .sh 文件,cat 合并内容后统计总行数。# 统计文件中每个单词的频率cat text.txt | tr -s ' ' '\n' | sort | uniq -c | sort -nr# - tr -s ' ' '\n':将空格替换为换行(每行一个单词)# - sort:排序# - uniq -c:统计重复次数# - sort -nr:按频率降序排列8、echo、tail、重定向符
在 Linux/Unix 系统中,echo、tail 和重定向符(>、>>、< 等)是处理文本输出和文件操作的基础工具
8.1、echo
echo - 输出文本
①、功能
在终端打印文本或变量内容。
常用于脚本调试、生成文件内容或传递数据给其他命令。
②、示例
# 基本语法echo [选项] "文本内容"echo "Hello World" # 输出文本(自动换行)# 示例输出:Hello Worldecho -n "No newline"; echo "Continued" # 两行合并为一行# 示例输出:No newlineContinuedecho -e "Line1\nLine2" # 输出多行(启用转义符)# 示例输出:# Line1# Line2echo $PATH # 打印环境变量③、常用选项
| 选项 | 作用 |
|---|---|
-n | 不自动换行(默认 echo 会在末尾加换行符) |
-e | 启用转义字符(如 \n 换行、\t 制表符) |
④、补充:反引号
反引号是使用英文输出时的tap上方,数字1的左方那个键,中文输出是~
正常使用echo pwd时会默认将pwd当成普通字符,我们要想将其作为命令执行,只需将pwd用反引号``包裹即可
echo pwd# 示例输出:pwdecho `pwd`# 示例输出:/home/user8.2、tail
tail - 查看文件尾部内容
①、功能
显示文件的末尾部分(默认最后 10 行)。
常用于实时监控日志文件更新。
②、示例
# 基本语法tail [选项] 文件名tail log.txt # 查看文件最后 10 行tail -n 20 log.txt # 查看最后 20 行tail -f /var/log/syslog # 实时监控日志更新(按 `Ctrl+C` 退出)tail -F /var/log/nginx/access.log # 即使文件被重建也能继续跟踪# 注意;(路径下必须包含该文件)③、常用选项
| 选项 | 作用 |
|---|---|
-n <行数> | 指定显示的行数(如 -n 5) |
-f | 实时追踪文件变化(日志监控) |
-F | 类似 -f,但会处理文件被轮替(如日志切割)的情况 |
-q | 不显示文件名(多文件时默认会显示) |
8.3、重定向
重定向符 - 控制输入/输出流向
①、功能
将命令的输入/输出重定向到文件或其他设备。
②、常用符号
| 符号 | 作用 |
|---|---|
> | 符号左侧命令结果覆盖输出到符号右侧文件(若文件不存在则创建) |
>> | 符号左侧命令结果追加输出到符号右侧文件(不覆盖原有内容) |
< | 从文件读取输入(代替键盘输入) |
2> | 重定向错误输出(如 2> error.log) |
&> | 重定向标准输出和错误输出(如 &> all.log) |
③、示例
# 输出重定向echo "Hello" > output.txt # 覆盖写入文件(文件原有内容丢失)# 原来的文件内容清空消失,output.txt只剩下 Helloecho "World" >> output.txt # 追加到文件末尾# 原来的文件内容仍在,output.txt内容为 Hello World# 只要是左边有输出结果的都可以通过>或>>写入右边文件中wc test1.txt >> input.txt # 将 test1.txt 文件的行数 单词数 字节数 文件名追加到 output.txt 中# 输入重定向wc -l < input.txt # 统计文件行数(从文件读取输入)# 错误重定向ls /nonexistent 2> error.log # 将错误信息保存到文件# 合并输出和错误ls /tmp /nonexistent &> all.log # 所有输出(正常+错误)保存到文件9、文本编辑器
9.1、vi/vim编辑器
vi 和 vim 是 Unix/Linux 系统上最常见的文本编辑器之一
vim编辑器是vi编辑器的增强版
工作模式
①、 普通模式(Normal Mode)
默认模式,启动后自动进入。
功能:执行命令、导航文本、删除/复制/粘贴等操作。
常用操作:
h/j/k/l:左/下/上/右移动光标。dd:删除整行;yy:复制整行;p:粘贴。u:撤销;Ctrl + r:重做。:w:保存;:q:退出(需组合使用,如:wq)。
②、插入模式(Insert Mode)
输入文本的模式,类似常规编辑器。
进入方式(在 Normal 模式下):
i:光标前插入;a:光标后插入。o:下方新行插入;O:上方新行插入。
退出:按
Esc返回 Normal 模式。
③、可视模式(Visual Mode)
选择文本以进行操作。
子模式:
v:字符可视模式(按字符选择)。V:行可视模式(按行选择)。Ctrl + v:块可视模式(矩形选择)。
操作:选中后可用
d(删除)、y(复制)等命令。
④、命令行模式(Command-Line Mode)
执行复杂命令,如保存、退出、搜索替换等。
进入方式:Normal 模式下按
:。常用命令:
:w:保存;:q!:强制退出不保存;:q:仅退出。:%s/old/new/g:全局替换文本。:set nu:显示行号;:set nonu:隐藏行号。
⑤、替换模式(Replace Mode)
直接覆盖文本而非插入。
进入方式:Normal 模式下按
R。退出:按
Esc。
模式切换总结:
Normal → Insert:按
i、a、o等。Insert → Normal:按
Esc。Normal → Visual:按
v、V、Ctrl + v。Normal → Command-Line:按
:。Normal → Replace:按
R。
9.2、nano编辑器
在 Linux 中,nano 是一个简单易用的命令行文本编辑器,适合快速编辑配置文件。以下是使用 nano 的完整指南:
# 打开/创建文件nano 文件名 # 打开或新建文件sudo nano /etc/ssh/sshd_config # 编辑系统文件(需root权限)常用快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl + O | 保存文件(需按回车确认) |
Ctrl + X | 退出(若未保存会提示) |
Ctrl + K | 剪切当前行 |
Ctrl + U | 粘贴 |
Ctrl + W | 搜索文本 |
Ctrl + \ | 替换文本 |
Ctrl + G | 打开帮助菜单 |
Alt + U | 撤销操作 |
Ctrl + _ | 跳转到指定行号 |
