gpt4 book ai didi

bash - 如果存在于 fish 中则移除

转载 作者:行者123 更新时间:2023-11-29 09:37:33 25 4
gpt4 key购买 nike

我已经开始使用 fish 并且我知道 fish 和常规 bash(我使用过 mac 终端)之间有几个主要区别。

我的一些别名不起作用,但我能够修复。但是,我无法修复以下问题。基本上,我想删除所有与给定扩展名匹配的文件。

alias texclr=rm -v *.aux *.log *.out *.spl *.bbl *.synctex.gz *.blg *.lof *.lot *.tdo *.toc *.idx *.nav *.snm *.a* *.g* *.l* *.ist *.run.xml *-blx.* *.fff *.bcf

但是,它似乎不起作用,并且在第一次出现不匹配文件时会产生错误。

我的问题是:

  1. 有什么方法可以删除文件(如果存在)(最好是一个衬垫)?
  2. 它在概念上是错误的吗?

任何指针都会有所帮助。

最佳答案

Fish,自版本 2.3.0 起,将打印错误并且不执行除 forsetcount< 之外的每个命令的不匹配 globs 命令.

这意味着你应该将匹配的文件分配给一个变量

set -l files *.aux *.log # and so on

因为这需要第二个命令,所以它应该是一个完整的函数而不是一个别名(无论如何在 fish 中它只是函数的语法糖):

function texclr
set -l files *.aux *.log *.out *.spl *.bbl *.synctex.gz *.blg *.lof *.lot *.tdo *.toc *.idx *.nav *.snm *.a* *.g* *.l* *.ist *.run.xml *-blx.* *.fff *.bcf
rm -v $files
end

如果你想在没有匹配文件的情况下根本不执行 rm(为了避免丑陋的错误消息),你可以使用 set -q files[1];和 rm -v $files

关于bash - 如果存在于 fish 中则移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47155549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com