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'

相关推荐
XH-hui9 分钟前
【打靶日记】THL 之 Facultad
linux·网络安全·1024程序员节·thehackerlabs
熙xi.12 分钟前
DHT11温湿度传感器Linux驱动开发完整流程
linux·运维·驱动开发
.NET修仙日记27 分钟前
Visual Studio 演进之路:从集成套件到AI驱动的开发平台
ide·编辑器·ai编程·visual studio·1024程序员节
Yyyy4821 小时前
Ubuntu部署 Kubernetes1.23
linux·运维·ubuntu
人工智能训练1 小时前
在 Ubuntu 系统中利用 conda 创建虚拟环境安装 sglang 大模型引擎的完整步骤、版本查看方法、启动指令及验证方式
linux·运维·服务器·人工智能·ubuntu·conda·sglang
☆璇1 小时前
【Linux】网络层协议IP
linux·服务器·tcp/ip
Xの哲學2 小时前
Linux ioctl 深度剖析:从原理到实践
linux·网络·算法·架构·边缘计算
孙同学要努力2 小时前
《Linux篇》进程控制——进程创建(写时拷贝)、进程终止(退出码,exit,_exit)
linux·运维·服务器
AC是你的谎言3 小时前
c++仿muduo库实现高并发服务器--connection类
linux·服务器·c++·学习
风123456789~3 小时前
【Linux专栏】多层变量的重定向赋值
linux·运维·服务器