我不喜欢 Ranger 中档案的默认预览,我想更改它。
例如,对于.zip
文件,预览显示 的纯文本输出unzip -l <file>
。但是,使用自定义命令,可以显示存档的树状视图(例如,.zip
可以使用 以树的形式查看文件)unzip -l <file> | awk 'FNR>3 {$1=$2=$3=""; print substr($0,4)}' | tree --fromfile
。
如何配置 Ranger 以使用针对每种文件类型(.tar.gz
、、.zip
等.7z
...)的自定义 shell 命令预览/显示存档文件?
答案1
预览在 中定义.config/ranger/scope.sh
。如果您的配置中不存在它,请ranger --copy-config=scope
在您的 shell 中运行,它将弹出到您的.config
文件夹中。
之后,您可以scope.sh
根据需要更改文件。在档案的具体示例中,您可以更改handle_extension
功能。
以下是一些示例,将在预览中将 、 和 文件显示为.tar.gz
树.zip
:.7z
tar|gz)
tar -tf "${FILE_PATH}" | tree --fromfile && exit 5
exit 1;;
zip)
unzip -l -- "${FILE_PATH}" | awk 'FNR>3 {$1=$2=$3=""; print substr($0,4)}' | tree --fromfile && exit 5
exit 1;;
7z)
# This awk script finds out which character column "Name" is at.
awk_script='{if (ix == 0) {ix = index($0, "Name");}p = (body == 1);if (ix > 0) {body = (body + ($0 ~ / *-[ -]+/)) % 2;}if (p == 1 && body == 1) {print ix;}}'
7z l "${FILE_PATH}" | awk 'FNR>20 {print $0}' | head -n -2 | cut -c$(7z l "${FILE_PATH}" | awk "$awk_script")- | tree --fromfile && exit 5
exit 1;;