将特殊字符回显到 bash 中的文件
echo special characters to a file in bash
我正在尝试制作一个脚本来帮助我将源代码移植回 debian 文件。
正在尝试写入 debian/rules 文件
~$ echo -e "#!/usr/bin/make -f\n%:\n\tdh $@" > debian/rules
bash: !/usr/bin/make: event not found
我认为 # 和 !搞砸了。如何在不让 shell 尝试执行它们的情况下回显字符串的这些组件?
我试过使用“#”和“!”但后来我会得到确切的信息:“!”
我想要一个完全像这样的规则文件:
#!/usr/bin/make -f
%:
dh $@
我该怎么办?
!没有被双引号转义
'#!/usr/bin/make -f\n%:\n\tdh \'"$@"
应该没问题。但是,请查看这里的文档:
cat <<MAKEFILE
#!/usr/bin/make -f
%:
dh $@
MAKEFILE
我有一个替代方法,使用 ANSI 十六进制代码(如果你聪明的话,甚至是 Unicode 十六进制代码)。
$ echo -e "\x23\x21/usr/bin/make -f\n\x25:\n\tdh \x24\x40"
#!/usr/bin/make -f
%:
dh $@
虽然@sehe 对 here documents 的使用很巧妙,但我的方法对我来说更直观。 (如果您对 ANSI 不是很熟悉,它也需要较少的查找。)我需要知道 #
是 U+0023
; !
是 U+0021
;等。我一直使用 Unicode 代码点,所以它很快。
我正在尝试制作一个脚本来帮助我将源代码移植回 debian 文件。
正在尝试写入 debian/rules 文件
~$ echo -e "#!/usr/bin/make -f\n%:\n\tdh $@" > debian/rules
bash: !/usr/bin/make: event not found
我认为 # 和 !搞砸了。如何在不让 shell 尝试执行它们的情况下回显字符串的这些组件? 我试过使用“#”和“!”但后来我会得到确切的信息:“!”
我想要一个完全像这样的规则文件:
#!/usr/bin/make -f
%:
dh $@
我该怎么办?
!没有被双引号转义
'#!/usr/bin/make -f\n%:\n\tdh \'"$@"
应该没问题。但是,请查看这里的文档:
cat <<MAKEFILE
#!/usr/bin/make -f
%:
dh $@
MAKEFILE
我有一个替代方法,使用 ANSI 十六进制代码(如果你聪明的话,甚至是 Unicode 十六进制代码)。
$ echo -e "\x23\x21/usr/bin/make -f\n\x25:\n\tdh \x24\x40"
#!/usr/bin/make -f
%:
dh $@
虽然@sehe 对 here documents 的使用很巧妙,但我的方法对我来说更直观。 (如果您对 ANSI 不是很熟悉,它也需要较少的查找。)我需要知道 #
是 U+0023
; !
是 U+0021
;等。我一直使用 Unicode 代码点,所以它很快。