echo vim cat 与 换行符

  • cat 一个文件,如果文件末尾没有换行符,那么你的 user@host 光标会直接跟在内容之后,而不是新起一行,看起来会比较乱。就像下面这样,hello是文件的内容,linyu是我的用户名,中间没有换行。
  • 使用 vim 编辑文件,在保存时,如果最后一行的末尾没有换行符,会自动添加换行符。 这里我第一次vim的时候,不修改,直接 :q ,发现末尾还是没有换行符。第二次vim的时候,不修改,但:wq保存,就有了换行符。
  • echo 'hello' 默认会在末尾添加换行符,因此user@host 光标会新起一行。注意, 即使通过多行字符串的方式,让字符串以换行结尾,echo还是会再添加一个换行符。导致最后会有一行空行。-n 选项可以让echo不添加换行符。
  • 如何判断一个文件结尾是否有换行符?取最后一个字符即可。

tail -c 1 your_file_name | hexdump -v -e '"%02x"'

如果结果是"0a"就代表有换行符,没有就不是。

  • shell 脚本中如何判断一个文件结尾是否有换行符 ?
bash 复制代码
if [ "$(tail -c 1 your_file_name | hexdump -v -e '"%02x"')" = "0a" ]; then
    echo "字符串以 0a 结尾"
else
    echo "字符串不以 0a 结尾"
fi

如果我们想要通过 echo XXXX >> file 的方式来修改一些配置文件,那么可能要了解好这个文件是否已经以换行符结尾。如果不以换行符结尾,直接echo的话会直接在最后一行上追加,可能会有意想不到的错误。

推荐的实践方式是echo的时候,在首行写一个空行,来规避掉这类问题。

echo '

write your content here'

相关推荐
不爱学英文的码字机器23 分钟前
[操作系统] 进程程序替换
linux·运维·服务器
酥暮沐40 分钟前
LVS集群
linux·服务器·lvs
阿昊真人2 小时前
node 程序占用处理方法与后台运行方法
linux·编辑器·vim
莲动渔舟2 小时前
国产编辑器EverEdit - 迷你查找
编辑器·emeditor·notepad·everedit
莲动渔舟3 小时前
国产编辑器EverEdit - 书签功能介绍
编辑器·emeditor·notepad·everedit
Lllongroad4 小时前
SPI通信及设备驱动
linux·stm32·单片机
Dragon水魅5 小时前
Ubuntu22.04 配置deepseek知识库
linux·服务器·深度学习·ubuntu
96777 小时前
如何将 Jupyter Notebook (.ipynb) 文件转换为 Python (.py) 文件
linux·python·jupyter
forestqq9 小时前
openEuler22.03LTS系统升级docker至26.1.4以支持启用ip6tables功能
linux·运维·docker
蓝创精英团队12 小时前
基于Ubuntu Ollama 部署 DeepSeek-R132B 聊天大模型(附带流式接口调用示例)
linux·运维·ubuntu·deepseek