在 Shell 环境中输入文字是文件操作和脚本交互的基础功能,以下是6 种核心方法及其详细操作指南,涵盖单行、多行、覆盖和追加等场景:
单行文字输入:echo
命令
适用场景:快速写入单行内容或变量值
# 追加到文件末尾 echo "New line" >> output.txt # 写入特殊字符(使用转义) echo -e "Line 1\nLine 2" > text.txt # -e 启用转义,\n 换行
格式化文字输入:printf
命令
适用场景:需要控制格式(如对齐、小数位)
# 格式化写入(类似C语言语法) printf "Name: %s\nAge: %d\n" "Alice" 25 > user.txt
Name: Alice
Age: 25
多行文本块输入:Here Document(<< EOF
)
适用场景:批量写入多行内容(如配置文件)
cat << EOF > config.conf server_ip=192.168.1.1 port=8080 timeout=30 EOF
关键点:
EOF
可替换为任意终止标记(如END
)- 若需忽略变量替换,用
<< 'EOF'
交互式输入:cat
与重定向
适用场景:手动输入多行后保存
cat > notes.txt
This is line 1
This is line 2 # 按 Ctrl+D 保存
>>
操作符
适用场景:保留原文件内容,新增文字
# 追加单行 echo "Additional info" >> log.txt # 追加多行 cat << END >> log.txt 2025-10-01: System updated 2025-10-02: Backup completed END
命令行直接编辑文件:tee
命令
适用场景:同时输出到屏幕和文件
echo "Critical error" | tee error.log # 覆盖写入 echo "Debug info" | tee -a error.log # -a 追加写入
⚠️ 重要安全提示
- 覆盖风险:
>
会清空目标文件,操作前确认文件是否重要 - 特殊字符处理:
- 空格/引号用转义:
echo "Price: \$100"
- 路径避免歧义:
echo "Path: /home/user" > dir_log
- 空格/引号用转义:
- 权限检查:
touch test.txt # 测试是否可写 ls -l test.txt # 查看权限
总结选择建议
场景 | 推荐命令 | 示例 |
---|---|---|
快速单行写入 | echo |
echo "Text" > file |
复杂格式 | printf |
printf "%s\n" "Text" |
多行模板 | << EOF |
cat << EOF > file |
交互式输入 | cat > file |
键盘输入后按 Ctrl+D |
日志追加 | >> |
echo "New" >> log |
实时输出+保存 | tee |
ls | tee dir_list.txt |
引用说明参考 Shell 行为标准(IEEE Std 1003.1-2017)及 GNU Coreutils 官方文档,已验证于 Bash 5.x 和 Zsh 5.8 环境,具体命令细节可通过
man [command]
(如man echo
)查阅手册。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6293.html