Bash 创建具有特定扩展名的临时文件,并在VS代码中打开它
我试图通过管道将bashBash 创建具有特定扩展名的临时文件,并在VS代码中打开它,bash,macos,visual-studio-code,Bash,Macos,Visual Studio Code,我试图通过管道将bashstdout上的一些输出传输到一个新的临时文件中,并使用VS-code打开该文件 文件内容可能不总是纯文本,但也可能是yaml,我想创建扩展名为yaml的临时文件,以便VS-code使用正确的语言模式 我尝试了这个方法,但最终得到了一个在VS代码中包含txt的文件 cat yaml > $(mktemp $TMPDIR$(uuidgen).yaml) | code - cat yaml只是一个命令示例,该命令可能会将yaml内容写入stdout mktemp--s
stdout
上的一些输出传输到一个新的临时文件中,并使用VS-code打开该文件
文件内容可能不总是纯文本,但也可能是yaml
,我想创建扩展名为yaml
的临时文件,以便VS-code使用正确的语言模式
我尝试了这个方法,但最终得到了一个在VS代码中包含txt
的文件
cat yaml > $(mktemp $TMPDIR$(uuidgen).yaml) | code -
cat yaml
只是一个命令示例,该命令可能会将yaml
内容写入stdout
mktemp--suffix=.yaml
是一种可行的方法,但macOS不支持这种方法。我找到了一个解决方案:
temp=$(mktemp $TMPDIR.XXXXXXXXXXXX.$(uuidgen).yaml) && ls -la > $temp && code $temp
当然可能会有更好的,我很期待。你可以这样做:
TMPDIR='/tmp'#为这个答案的目的给TMPDIR一个值
mktemp“${TMPDIR}/xxxxxxxxxxx_$(uuidgen.yaml”|
xargs-n1-I{}--\
代码--文件uri“file://{}”
:mktemp“${TMPDIR}/xxxxxxxxxxx_$(uuidgen.yaml”
将临时文件创建到
中,文件名包括:$TMPDIR
- 12个随机字母数字混合大小写字母
更换上外壳X
- 后跟下划线
。
- 后跟由
命令生成的随机UUIDuuidgen
- 并以
扩展名作为后缀.yaml
- 12个随机字母数字混合大小写字母
:| xargs-n1-I{}
将新创建的临时文件名传递给
,这将把它转换为参数:xargs
:每个命令一个参数-n1
:用参数替换占位符字符串-I{}
{}
:--
选项的末尾xargs
:code--file uri“file://{}”
由code
调用。xargs
打开一个包含给定文件uri的窗口--文件uri
:刚刚创建的临时文件的uri。“file://{}”
将用临时文件路径替换xargs
{}
cat>文件| pipe
是一个不明确的重定向。标准输出不能同时发送到文件和管道。