fish:从 $argv 吞下标志(上下文:用 KDE 垃圾替换 rm)
fish: swallow flags from $argv (context: replace rm with KDE trash)
我已经完成了大部分工作,但我想吞下标志,这样我就不会收到这样的错误:
/t/temp-5969 $ trash -rf fish-functions/
kioclient: Unknown option 'rf'.
kioclient: Use --help to get a list of available command line options.
到目前为止我有这个:
/t/temp-5969 $ type trash
trash is a function with definition
function trash
kioclient move $argv trash:/
end
(替换 rm:abbr rm trash
)
我希望它忽略 -rf
,这样它仍然可以正常工作,这样当我在 bash 和 fish
之间切换时,我的肌肉记忆不会混乱
为此,我想构建一个函数来吞下 $argv
中的标志
我创建了一个这样的函数:
function swallowFlags
sed 's/-\w\+//'
end
function trash
kioclient move (echo $argv | swallowFlags) trash:/
end
但也许有一种不那么奇怪的方法可以做到这一点,所以我不必使用 echo?
啊..我可能需要一个更好的正则表达式,这样我就可以删除其中有破折号的文件哈哈
我会这样做
function trash
while test (count $argv) -gt 0
switch $argv[1]
case --
set argv $argv[2..-1]
break
case '-*'
set argv $argv[2..-1]
case '*'
break
end
end
kioclient move $argv trash:/
end
如果 argparse
可以提供帮助,那就太好了,但是当您明确知道需要解析哪些选项时,这会起作用。
请注意,您可能仍然是 "vulnerable":要处理以破折号开头的文件名,您可以这样做
rm -- -filename-starts-with-a-dash
rm ./-filename-starts-with-a-dash
使用你的函数,你将不得不使用第二个。
我已经完成了大部分工作,但我想吞下标志,这样我就不会收到这样的错误:
/t/temp-5969 $ trash -rf fish-functions/
kioclient: Unknown option 'rf'.
kioclient: Use --help to get a list of available command line options.
到目前为止我有这个:
/t/temp-5969 $ type trash
trash is a function with definition
function trash
kioclient move $argv trash:/
end
(替换 rm:abbr rm trash
)
我希望它忽略 -rf
,这样它仍然可以正常工作,这样当我在 bash 和 fish
为此,我想构建一个函数来吞下 $argv
我创建了一个这样的函数:
function swallowFlags
sed 's/-\w\+//'
end
function trash
kioclient move (echo $argv | swallowFlags) trash:/
end
但也许有一种不那么奇怪的方法可以做到这一点,所以我不必使用 echo?
啊..我可能需要一个更好的正则表达式,这样我就可以删除其中有破折号的文件哈哈
我会这样做
function trash
while test (count $argv) -gt 0
switch $argv[1]
case --
set argv $argv[2..-1]
break
case '-*'
set argv $argv[2..-1]
case '*'
break
end
end
kioclient move $argv trash:/
end
如果 argparse
可以提供帮助,那就太好了,但是当您明确知道需要解析哪些选项时,这会起作用。
请注意,您可能仍然是 "vulnerable":要处理以破折号开头的文件名,您可以这样做
rm -- -filename-starts-with-a-dash
rm ./-filename-starts-with-a-dash
使用你的函数,你将不得不使用第二个。