Linux 常见命令行导航与文本文件处理详解
工作目录查询
使用 pwd 指令能够获取当前终端会话所在的具体路径。该功能常用于确认操作上下文,避免误入错误目录。
[admin@linux-server ~]$ pwd
/home/admin
目录跳转指令
cd 是用于变更活动目录的核心命令。以下是几种常用的模式:
- 回退上一步:
cd -会立即跳回到上一次操作的目录位置。 - 上级目录:
cd ..进入父级文件夹。 - 用户主目录:
cd ~或单独输入cd均直接返回当前用户的家目录。 - 切换至他人目录:
cd ~username可跳转到指定用户的主目录空间。
文件列表详情
借助 ls 指令可以枚举当前目录下的对象信息。通过组合参数可以获得更丰富的数据:
-a:列出所有条目,包含以.开头的隐藏项。-l:展示详细列表,包括权限、所有者、大小及修改时间。-d:仅显示目录本身的元数据,而非目录内部的内容。
示例代码展示了如何查看某关键配置目录的属性:
[admin@linux-server ~]$ ls -ld /etc/resolv.conf
-rw-r--r-- 1 root root 86 Oct 25 10:00 /etc/resolv.conf
内容预览工具
针对不同类型的文本体量,有不同的查看策略:
小型文件查看 (cat)
适合阅读篇幅较短的资料。若开启 -n 标志,每行输出前将增加行号标记。
[admin@linux-server ~]$ cat -n /etc/motd
1 Welcome to Ubuntu Server LTS
2 System uptime is available via uptime command.
分页浏览 (more)
适用于较长文档的阅读控制:
- 空格键:向前翻动一屏。
- 回车键:默认滚动单行(可通过环境变量调整行数)。
- =:打印光标所在的行号。
- q:立即退出查看器。
首尾截取 (head/tail)
这两个命令分别提取文件的头部或尾部数据:
- head:取前 N 行。
head -n 5 filename。 - tail:取后 N 行。最强大的功能在于
-f参数,可模拟实时日志监控。
实时跟踪认证日志的示例:
[admin@linux-server ~]$ tail -f /var/log/auth.log
Oct 25 14:20:01 server sshd[1234]: Accepted password for admin from 192.168.1.1
Oct 25 14:21:15 server systemd[1]: Started Session 500 of user admin.
文本转换与统计
tr 工具主要用于字符集转换。它能管道接收标准输入并进行符号映射:
[admin@linux-server ~]$ echo "debug_mode=true" | tr a-z A-Z
DEBUG_MODE=TRUE
wc 则负责字数统计,可精确计算行数、单词数和字节数。
[admin@linux-server ~]$ wc -l /etc/shadow
24 /etc/shadow
元数据与列处理
stat 提供比 ls 更底层的文件系统状态信息,涵盖 inode 编号、存储块大小及各项时间戳(访问、修改、变更):
[admin@linux-server ~]$ stat /opt/app/config.yaml
File: '/opt/app/config.yaml'
Size: 1248 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 44125 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ admin) Gid: ( 1000/ admin)
在处理结构化数据(如分隔符分割的文件)时,cut 极为高效。通过 -d 设定分隔符,-f 选定字段:
[admin@linux-server ~]$ head -1 /etc/hosts
127.0.0.1 localhost
[admin@linux-server ~]$ cut -f 1 -d $'\t' /etc/hosts
127.0.0.1
::1 localhost
差异比对
diff 用于检测两个文本内容的异同。常用选项如下:
--brief:仅提示是否存在差异,不展示具体差别。-c:输出统一格式的差异对比,标注上下文行。
简易比对场景演示:
[admin@linux-server test]# diff --brief v1.conf v2.conf
Files v1.conf and v2.conf differ
[admin@linux-server test]# diff -c v1.conf v2.conf
*** v1.conf 2023-01-01 12:00:00.000000000 +0800
--- v2.conf 2023-01-02 12:00:00.000000000 +0800
***************
*** 1,3 ****
setting=A
option=false
! version=1.0
status=ok
--- 1,3 ----
setting=A
option=false
! version=1.1
status=ok