本文是《Linux 入门指南》的第十三篇文章,以 Ubuntu 21.10 为例,介绍了 Linux 文本编辑。
cat(查看文件内容)
描述:
"concatenate(连续)" 的缩写,查看文件内容。
用法:
cat [选项] [文件名]
选项:
选项 | 长选项 | 意义 |
---|---|---|
-A | --show-all | 等效于 -vET |
-b | --number-nonblank | 对非空输出行编号,同时取消 -n 选项效果 |
-e | 等效于 -vE | |
-E | --show-ends | 在每行结束处显示"$" |
-n | --number | 对输出的所有行编号 |
-s | --squeeze-blank | 不输出多行空行 |
-t | 与 -vT 等效 | |
-T | --show-tabs | 将跳格字符显示为^I |
-u | (被忽略) | |
-v | --show-nonprinting | 使用^ 和M- 引用,除了LFD和 TAB 之外 |
--help | 显示此帮助信息并退出 | |
--version | 显示版本信息并退出 |
实例:
查看文件内容(查看 /etc/issue
的内容)
cat /etc/issue
查看文件内容(查看 id_rsa.pub
的内容,并将内容追加到 authorized_keys
)
cat id_rsa.pub >> authorized_keys
head(查看文件的开头)
描述:
"head(头部)" 的全称,查看文件的开头。
用法:
head [选项] [文件名]
选项:
选项 | 长选项 | 意义 |
---|---|---|
-c | --bytes=[-]K | 显示每个文件的前 K 字节内容;如果数字前附加“-”字符,则除了每个文件的最后 K 字节数据外显示其余全部内容 |
-n | -lines=[-]K | 显示每个文件的前 K 行内容而非前 10 行内容;如果数字前附加“-”字符,则除了每个文件的最后 K 行数据外显示其余全部内容 |
-q | --quiet,--silent | 不显示包含给定文件名的文件头 |
-v | --verbose | 总是显示包含给定文件名的文件头 |
-z | --zero-terminated | 以 NUL 字符而非换行符作为行尾分隔符 |
--help | 显示此帮助信息并退出 | |
--version | 显示版本信息并退出 |
实例:
查看文件的开头(查看 .bash_history
的开头,默认查看前10行)
head .bash_history
查看文件的开头(查看 .bash_history
的开头,查看前20行)
head -n 20 .bash_history
tail(查看文件的结尾)
描述:
"tail(尾部)" 的全称,查看文件的结尾。
用法:
tail [选项] [文件名]
选项:
选项 | 长选项 | 意义 |
---|---|---|
-c | --bytes=[+]NUM | 输出最后 NUM 字节;或者使用 -c +NUM 以输出每个文件第 NUM 个字节之后的全部内容 |
-f | `--follow[={name | descriptor}]` |
-F | 和 --follow=name --retry 相同 | |
-n | --lines=[+]NUM | 输出最后 NUM 行,而不是最后 10 行;或使用 -n +NUM 输出从第 NUM 行开始 |
--max-unchanged-stats=N | 使用 --follow=name,重新打开一个在 N(默认 5)次迭代后没有改变大小的 FILE 以查看它是否已被取消链接或重命名(这是轮换日志文件的常见情况); 对于inotify,这个选项很少有用 | |
--pid=PID | 同 -f 一起使用,当所指定 |
|
-q | --quiet, --silent | 不输出给出文件名的头 |
--retry | 即使目标文件不可访问依然重复试图打开 | |
-s | --sleep-interval=N | 使用 -f,在迭代之间休眠大约 N 秒(默认为 1.0); 使用 inotify 和 --pid=P,每 N 秒至少检查一次进程 P |
-v | --verbose | 总是输出给出文件名的标题 |
-z | --zero-terminated | 以 NUL 字符而非换行符作为行尾分隔符 |
--help | 显示此帮助信息并退出 | |
--version | 显示版本信息并退出 |
实例:
查看文件的结尾(查看 .bash_history
的结尾,默认查看倒数10行)
tail .bash_history
查看文件的结尾(查看 .bash_history
的结尾,查看倒数20行)
tail -n 20 .bash_history
nano(文本编辑器)
描述:
nano 是一款文本编辑器,可以查看或编辑文本。
用法:
nano [选项] [行]/[列] [文件名]
选项:
选项 | 长选项 | 意义 |
---|---|---|
-A | --smarthome | 启用智能 HOME 键 |
-B | --backup | 储存既有文件的备份 |
-C <目录> | --backupdir=<目录> | 用以储存独一备份文件的目录 |
-D | --boldtext | 用粗体替代颜色反转 |
-E | --tabstospaces | 将已输入的制表符转换为空白 |
-F | --multibuffer | 默认从文件读入到一个新的缓冲区 |
-G | --locking | 使用(vim 风格)锁文件 |
-H | --historylog | 记录与读取搜索/替换的历史字符串 |
-I | --ignorercfiles | 不要参考 nanorc 文件 |
-J <数字> | --guidestripe=<数字> | 在此栏显示一个导引条 |
-K | --rawsequences | 修正数字键区按键混淆问题 |
-L | --nonewlines | 不要自动添加换行符 |
-M | --trimblanks | 强制折行时移除末尾空白 |
-N | --noconvert | 不要从 DOS/Mac 格式转换 |
-O | --bookstyle | 以空白字符起始表示新的段落 |
-P | --positionlog | 记录并读取光标位置 |
-Q | <正则表达式> --quotestr=<正则表达式> | 匹配引用的正则表达式 |
-R | --restricted | 限制对文件系统的访问 |
-S | --softwrap | 以多行显示过长的行 |
-T <数字> | --tabsize=<数字> | 令制表符宽度为指定行数 |
-U | --quickblank | 在下一次按键后清除状态栏内容 |
-V | --version | 显示版本信息并离开 |
-W | --wordbounds | 更正确地侦测单字边界 |
-X <字符串> | --wordchars=<字符串> | 指定哪些其它特殊字符也是单词的一部分 |
-Y <名称> | --syntax=<名称> | 用于加亮的语法定义 |
-Z | --zap | 让退格键和删除键清除选中的区域 |
-a | --atblanks | 软折行时在空白处进行 |
-b | --breaklonglines | 对过长的行自动强制换行 |
-c | --constantshow | 持续显示游标位置 |
-d | --rebinddelete | 修正退格键/删除键混淆问题 |
-e | --emptyline | 保持标题栏下面的行一直为空 |
-f <文件> | --rcfile=<文件> | 只使用这个文件配置 nano |
-g | --showcursor | 在文件浏览器和帮助文本中显示游标 |
-h | --help | 显示本帮助文本并退出 |
-i | --autoindent | 自动缩进新行 |
-j | --jumpyscrolling | 按半屏幕滚动文本,不按行 |
-k | --cutfromcursor | 从游标剪切至行尾 |
-l | --linenumbers | 在文本之前显示行号 |
-m | --mouse | 启用鼠标功能 |
-n | --noread | 不要读取文件(仅写入) |
-o <目录> | --operatingdir=<目录> | 设定操作目录 |
-p | --preserve | 保留XON (^Q) 和XOFF (^S) 按键 |
-q | --indicator | 显示位置+部分指示器 |
-r <数字> | --fill=<数字> | 设置强制换行宽度并进行重排 |
-s <程序> | --speller=<程序> | 使用此替代的拼写检查程序 |
-t | --saveonexit | 退出时自动保存修改,不要提示 |
-u | --unix | 默认将文件保存为 Unix 格式 |
-v | --view | 查看(只读)模式 |
-w | --nowrap | 不要为过长行强制折行 [默认] |
-x | --nohelp | 不要显示辅助区 |
-y | --afterends | 使 Ctrl+Right 在单词末尾处停止 |
-z | --suspendable | 启用挂起功能 |
-% | --stateflags | 在标题栏显示某些状态 |
-_ | --minibar | 在底部显示一个反馈条 |
快捷键:
↑↓←→(移动光标)
↑
光标向上移动
↓
光标向下移动
←
光标向左移动
→
光标向右移动
Ctrl + 6(标记)
按下 Ctrl + 6
键,开始标记。
再次按下 Ctrl + 6
键,取消标记。
移动光标,标记需要复制/剪贴的文本,被标记的文本的背景会变成白色。
Alt + 6(复制)
按下 Alt + 6
键,将被标记的文本复制到剪贴板。
Ctrl + K(剪贴)
按下 Ctrl + K
键,将被标记的文本剪贴到剪贴板。
Ctrl + U(粘贴)
按下 Ctrl + U
键,粘贴剪贴板中的文本。
Ctrl + W(搜索)
按下 Ctrl + W
键,输入关键字,会自动定位到第一个匹配的文本。
再次按下 Alt + W
键,会定位到下一个匹配的文本。
Ctrl + \(替换)
按下 Ctrl + \
键,先后两次输入关键字,会自动替换匹配的文本。
Ctrl + Y(上一页)
按下 Ctrl + Y
键,光标移动到上一页。
Ctrl + V(下一页)
按下 Ctrl + V
键,光标移动到下一页。
Ctrl + O(保存)
按下 Ctrl + O
键,保存已经修改的内容。
Ctrl + X(退出)
按下 Ctrl + X
键,退出文本编辑器。
如果你修改了内容,会提示你是否保存。
Ctrl + G(显示帮助)
按下 Ctrl + G
键,查看帮助文档。
实例:
编辑文本(编辑 .bash_history
文件)
nano .bash_history
vim(文本编辑器)
描述:
vim 是一款文本编辑器,可以查看或编辑文本。
用法:
vim [选项] [文件名]
选项:
选项 | 长选项 | 意义 |
---|---|---|
-- | 在这以后只有文件名 | |
-v | Vi 模式 (同 "vi") | |
-e | Ex 模式 (同 "ex") | |
-E | Improved Ex mode | |
-s | 安静(批处理)模式 (只能与 "ex" 一起使用) | |
-d | Diff 模式 (同 "vimdiff") | |
-y | 容易模式 (同 "evim",无模式) | |
-R | 只读模式 (同 "view") | |
-Z | 限制模式 (同 "rvim") | |
-m | 不可修改(写入文件) | |
-M | 文本不可修改 | |
-b | 二进制模式 | |
-l | Lisp 模式 | |
-C | 兼容传统的 Vi: 'compatible' | |
-N | 不完全兼容传统的 Vi: 'nocompatible' | |
-V[N][fname] | 显示 [level N] [log messages to fname] 的详细信息 | |
-D | 调试模式 | |
-n | 不使用交换文件,只使用内存 | |
-r | 列出交换文件并退出 | |
-r (跟文件名) | 恢复崩溃的会话 | |
-L | 同 -r | |
-A | 以 Arabic 模式启动 | |
-H | 以 Hebrew 模式启动 | |
-T |
设定终端类型为 |
|
--not-a-term | 跳过输入/输出不是终端的警告 | |
--ttyfail | 如果输入或输出不是终端则退出 | |
-u |
使用 |
|
--noplugin | 不加载 plugin 脚本 | |
-p[N] | 打开 N 个标签页 (默认值: 每个文件一个) | |
-o[N] | 打开 N 个窗口 (默认值: 每个文件一个) | |
-O[N] | 同 -o 但垂直分割 | |
+ | 启动后跳到文件末尾 | |
+ |
启动后跳到第 |
|
--cmd |
加载任何 vimrc 文件前执行 |
|
-c |
加载第一个文件后执行 |
|
-S |
加载第一个文件后执行文件 |
|
-s |
从文件 |
|
-w |
将所有输入的命令追加到文件 |
|
-W |
将所有输入的命令写入到文件 |
|
-x | 编辑加密的文件 | |
--startuptime |
将启动计时消息写入 |
|
-i |
使用 |
|
--clean | 'nocompatible',Vim 默认值,无插件,无 viminfo | |
-h 或 --help | 打印帮助(本信息)并退出 | |
--version | 打印版本信息并退出 |
模式:
Command mode(命令模式)
使用 vim
时,默认进入命令模式。
按下 i
键,会切换到输入模式。
按下 :
键,会切换到底线命令模式。
命令模式下,只能输入一些最基本的命令。
Insert mode(输入模式)
按下 Esc
键,会切换到命令模式。
输入模式下,可以编辑文本。
Last line mode(底线命令模式)
按下 Esc
键,会切换到命令模式。
底线命令模式下,可以输入更多的命令:
w
保存q
退出
实例:
编辑文本(编辑 .bash_history
文件)
vim .bash_history