我获得了一个自定义 bash 脚本,它可以提取所有存档文件并等待输入。如下所示:
#!/bin/bash
GET="."
SCRIPTNAME="${0##*/}"
err() {
printf >&2 "$SCRIPTNAME: $*\n"
exit 1
}
ARC="$1"
[[ -f $ARC ]] || err $"'$ARC' does not exist"
ARC="$(readlink -f "$ARC")"
read -p "Extract to [default: $DEFAULT_TARGET]: " TARGET
[[ -z $TARGET ]] &&\
TARGET="$DEFAULT_TARGET"
[[ -d $TARGET ]] || err $"Directory '$TARGET' does not exist"
[[ -w $TARGET ]] || err $"Permission denied: '$TARGET' is not writable"
cd "$TARGET"
case "$ARC" in
*.tar.bz2) tar xjf "$ARC" ;;
*.tar.gz) tar xzf "$ARC" ;;
*.bz2) bunzip2 "$ARC" ;;
*.rar) unrar e "$ARC" ;;
*.gz) gunzip "$ARC" ;;
*.tar) tar xf "$ARC" ;;
*.tbz2) tar xjf "$ARC" ;;
*.tgz) tar xzf "$ARC" ;;
*.zip) unzip "$ARC" ;;
*.Z) uncompress "$ARC" ;;
*.7z) 7z x "$ARC" ;;
*) echo "'$ARC' cannot be extracted by $SCRIPTNAME" ;;
esac
我正在使用 Ranger FM。我试图让它使用脚本 /usr/bin/extract.sh 打开所有存档文件。从终端运行脚本没有问题,但当我尝试在 Ranger 中使用它时,我得到了:
/usr/bin/extract.sh — 标签未定义。
我已将以下内容添加到我的 .config/ranger/rifle.conf 中:
标签提取,ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz,= /usr/bin/extract.sh -- "$@"
但它不起作用。我做错了什么?
先感谢您。
答案1
我已经解决了。对于任何感兴趣的人,这是一个简单的语法错误和必须做的结合:
将名为 extract.sh 的脚本放在 /bin/extract 中(不带 .sh)
向 .zshrc 添加一个别名:alias extract="/bin/extract"
.config/ranger/rifle.conf 中包含以下几行(语法错误:):
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz,有 aunpack = 提取“$@”
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip,有 tar,'标志 f = 提取“$@”
标签提取,ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz,= /bin/extract