系统管理与行政任务实用指南
在系统管理和日常行政任务中,我们常常会遇到各种挑战,比如编辑文件时不改变inode和权限、使用sudo执行一组命令、比较两个文件的差异等。下面将详细探讨这些问题及相应的解决方案。
1. 原地编辑文件
在编辑现有文件时,我们可能希望不影响其inode或权限。然而,像sed这样常用的工具,即便尽力保留其他属性,也会写入新文件,从而改变inode。
解决办法是使用ed工具,它是sed的前身,可在不改变inode的情况下编辑文件,并且支持脚本化操作。以下是一个“在文件开头添加标题”的示例:
# 显示inode $ ls -i data_file 306189 data_file # 使用printf "%b"避免'echo -e'的问题 $ printf "%b" '1\ni\nHeader Line1\nHeader Line2\n.\nw\nq\n' | ed -s data_file 1 foo $ cat data_file Header Line1 Header Line2 1 foo 2 bar 3 baz # 验证inode未改变 $ ls -i data_file 306189 data_file我们也可以将ed脚本存储在文件中,例如:
$ cat ed_script 1 i Header Line1 Header Line2 . w q $ ed -s data_file < ed_script 1 foo $ cat data_file He