簡體   English   中英

使用FZF列出按日期排序的git文件(並在bash中設置默認值)

[英]Use FZF to list git files sorted by date (and set default in bash)

我想使用fzf列出git中的所有文件,並按修改日期排序。 (我在vim中使用此輸出)

此命令似乎有效:

(while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort -k1,1n | awk {"print \$3"}) 2> /dev/nul

但是,如何將其作為默認的FZF命令呢? 我試過了,但是變量FZF_DEFAULT_COMMAND仍然為空:

export FZF_DEFAULT_COMMAND='
    (while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort -k1,1n | awk {"print \$3"}) 2> /dev/null'

也許我需要逃脫嗎?

編輯:這是我現在使用的命令:

export FZF_DEFAULT_COMMAND='(git ls-tree -r --name-only HEAD)|(while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- "$file") $file; done | sort -r | awk {"print \$3"}) 2> /dev/null'

fzf使用/bin/sh (Posix shell)執行命令。 即使/bin/sh鏈接到/bin/bash它也將在非posix功能上失敗(例如您的情況下的進程替換)。 您可以強制執行GNU / bash支持:

export FZF_DEFAULT_COMMAND='set +o posix
    (while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort -k1,1n | awk {"print \$3"}) 2> /dev/null'

如果您沒有將bash符號鏈接到/bin/sh ,則必須擺脫進程替換:

export FZF_DEFAULT_COMMAND='
    (git ls-tree -r --name-only HEAD)|(while read file; do echo $(git log --pretty=format:%ad -n 1 --date=raw -- $file) $file; done | sort -k1,1n | awk {"print \$3"}) 2> /dev/null'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM