我需要一个命令来创建/更改某个文件,然后在 Bash 中将所有操作都放在一行中获取该文件。
对我来说,知道它是否可能(或者为什么不可能)很重要,因为这可以通过防止需要 in source
or来帮助在一些长脚本中节省几行./
。
例如,我有这个代码模板可以将别名添加到/etc/bash.bashrc
:
cat <<-"APPENDIX" >> /etc/bash.bashrc
alias shortcut="command"
alias shortcut="command"
APPENDIX
source /etc/bash.bashrc
如何source /etc/bash.bashrc
通过使文件在更改时立即获取来保存该行?
注意:我确实拥有有关 的完整权限/etc/bash.bashrc
。
答案1
您可以使用流程替代,tee
, 和sponge
来自 moreutils:
source <(cat /etc/bash.bashrc - <<-"APPENDIX" | tee >(sponge /etc/bash.bashrc)
alias shortcut="command"
alias shortcut="command"
APPENDIX
)
不过,可能不要这样做。
或者,只需命令替换,从文件本身读取:
source $(cat <<-"APPENDIX" >> /etc/bash.bashrc ; echo /etc/bash.bashrc
alias shortcut="command"
alias shortcut="command"
APPENDIX
)
也许也不要这样做。