用 touch、echo、cat 等命令快速创建和查看纯文本文件,以下均经 WSL2 实测。
一、TL;DR:按场景选命令
- 新建空 txt:
touch 文件名.txt,瞬间生成空文件 [1]。 - 写入单行文本:
echo "内容" > 文件.txt,注意>会覆盖已有内容 [2]。 - 写入多行或格式化文本:
printf "第1行\n第2行\n" > 文件.txt或cat > 文件.txt <<EOF ... EOF[3]。 - 查看全文:
cat 文件.txt,适合小文件;less 文件.txt可翻页,适合大文件 [4] [5]。 - 查看首尾:
head -n5 文件.txt/tail -n5 文件.txt,日志场景常用 [6] [7]。 - 同时写入终端和文件:
echo "日志" | tee 文件.txt,调试时有用 [8]。
二、创建 txt 文件:从空文件到多行内容
touch notes.txt
echo "第一行内容" > notes.txt
printf "行1\n行2\n行3\n" > notes.txt
cat > heredoc.txt <<EOF
第一行
第二行
EOF
touch 在不指定内容时,只创建空文件或更新时间戳 [1]。echo 和 printf 通过 shell 重定向 > 写入,单行用 echo,多行或需要转义控制符时用 printf [2] [3]。cat > file <<EOF 是 shell 的 heredoc,适合粘贴大段文本,结束符必须顶格写。以上方式在 Ubuntu 24.04 的 bash 和 dash 下均正常。
echo "追加一行" >> notes.txt
echo "同时写入终端和文件" | tee copy.txt
>> 是追加重定向,不会覆盖已有内容。tee 会把标准输入同时写到文件和标准输出 [8];加 -a 参数可追加到文件末尾。
实测输出:
notes.txt 内容:
第一行内容
heredoc.txt 内容:
第一行
第二行
三、查看 txt 内容:按文件大小选工具
cat -n notes.txt
less -N notes.txt
head -n2 notes.txt
tail -n2 notes.txt
cat 把文件内容全部输出到终端,加 -n 显示行号,小文件(如配置、脚本)直接用 [4]。less 支持上下翻页、搜索,大文件或日志文件推荐用它 [5],q 退出。head 默认输出前 10 行,-n 指定行数;tail 输出后 10 行,tail -f 可跟踪文件追加,常用于监控日志 [6] [7]。
四、权限、权限与文本编码注意
| 场景 | 影响 | 处理 |
|---|---|---|
| 文件不可读 | Permission denied |
ls -l 检查权限,必要时 chmod +r |
用 > 写入系统目录 |
Permission denied |
用 sudo 或写入家目录 |
Windows 换行符 ^M |
脚本报错 | dos2unix 文件.txt 转换 |
| 含中文或特殊字符 | 显示乱码 | file 文件.txt 确认编码 |
echo 写入时,如果字符串以 - 开头(如 -n),某些 shell 会把后面内容当成参数;用 echo -- "-n test" 或 printf '%s\n' "-n test" 规避 [2]。printf 没有这个问题。
五、回滚、排错与局限性
排错速查
| 现象 | 原因 | 处理 |
|---|---|---|
cat: 文件.txt: No such file or directory |
文件不存在或路径写错 | ls 确认当前目录,用绝对路径 |
cat: 文件.txt: Permission denied |
文件无读取权限 | chmod +r 文件.txt |
| 写入后文件是空的 | 重定向 > 写到了别的路径 |
pwd + ls 确认实际位置 |
less 显示乱码 |
非 UTF-8 编码 | export LESSCHARSET=utf-8 |
dos2unix 命令不存在 |
未安装该包 | apt-get install dos2unix |
局限性
- 以上命令在 WSL2 Ubuntu 24.04 实测通过;真实 Linux 服务器上的行为一致。
vi、nano等编辑器也能创建和编辑 txt,本文侧重命令行的非交互式用法。- 二进制文件用
cat会输出乱码,判断方法:file 文件名,显示 “data” 而非 “ASCII text” 即为二进制。
实测记录
- 环境:WSL2 Ubuntu 24.04.4 LTS,内核 6.6.114.1-microsoft-standard-WSL2,GNU coreutils 9.11。
touch创建空文件正常;echo/printf/cat <<EOF写入均正常。cat -n显示行号,less -N显示行号并可翻页,head/tail截断正确。tee将输入同时输出到终端和文件,实测正常。
参考资料
- [1] touch(1) – Linux manual page (man7.org)(touch(1))
- [2] echo(1) – Linux manual page (man7.org)(echo(1))
- [3] printf(1) – Linux manual page (man7.org)(printf(1))
- [4] cat(1) – Linux manual page (man7.org)(cat(1))
- [5] less(1) – Linux manual page (man7.org)(less(1))
- [6] head(1) – Linux manual page (man7.org)(head(1))
- [7] tail(1) – Linux manual page (man7.org)(tail(1))
- [8] tee(1) – Linux manual page (man7.org)(tee(1))
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。