获取Fish shell中的随机文件

时间:2014-01-02 04:51:10

标签: fish

我正在将这个Zsh功能翻译成Fish

function random_quote() {
  QUOTE_FILES=( $PREFS_ROOT/quotes/* )
  cat $QUOTE_FILES[$RANDOM%$#QUOTE_FILES+1]
}

这是我到目前为止所得到的:

function random_quote
  set QUOTE_FILES $PREFS_ROOT/quotes/*
  cat $QUOTE_FILES[$RANDOM%$#QUOTE_FILES+1]
end

cat行还需要修复。我知道RANDOM应该被random取代,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:3)

怎么样

function random_quote
  set -l QUOTE_FILES $PREFS_ROOT/quotes/*
  set -l n (math 'scale=0;'(random)'%'(count $QUOTE_FILES)'+1')
  cat $QUOTE_FILES[$n]
end

这个答案已经过时了。请关注@ Niklas的正确答案。

答案 1 :(得分:2)

只是发现这很简单,随机本身支持从列表中获取随机条目!

只需使用cat (random choice $QUOTE_FILES)

它也可以在没有变量random choice /path/to/some/folder/*

的情况下工作

或带有一堆参数random choice option1 option2 option3

您可以在这里找到random的文档: https://fishshell.com/docs/current/commands.html#random