创建/更改文件并获取它 - 都在一行中

创建/更改文件并获取它 - 都在一行中

我需要一个命令来创建/更改某个文件,然后在 Bash 中将所有操作都放在一行中获取该文件。

对我来说,知道它是否可能(或者为什么不可能)很重要,因为这可以通过防止需要 in sourceor来帮助在一些长脚本中节省几行./

例如,我有这个代码模板可以将别名添加到/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
)

也许也不要这样做。

相关内容