特定のディレクトリ内のボリュームに制限して、タブ補完でアンマウントするにはどうすればよいでしょうか?

特定のディレクトリ内のボリュームに制限して、タブ補完でアンマウントするにはどうすればよいでしょうか?

私は で zsh を使用していますzimが、これは一般的に優れています。理想的には、 の umount のタブ補完で 内の項目のみを提案するようにしたいと思います/run/media/$USER。次の例では、これは という名前の単一のボリュームですL_drive

$ cd /run/media/sparhawk
$ ls
L_drive
$ umount <Tab>
 -- device label --
binfmt_misc  debugfs      fusectl      mqueue       run          systemd-1                          
cgroup       dev          gvfsd-fuse   proc         securityfs   tmpfs                              
configfs     devpts       hugetlbfs    pstore       sys                                           
 -- device path --
/dev/sda2                 /dev/sdb5                 /dev/sdb6                 /dev/sdc1               
 -- mount point --
/                                 /run/media/sparhawk/L_drive       /sys/fs/cgroup/pids             
/dev                              /run/user/1000                    /sys/fs/cgroup/systemd          
/dev/hugepages                    /run/user/1000/gvfs               /sys/fs/fuse/connections        
/dev/mqueue                       /sys                              /sys/fs/pstore                  
/dev/pts                          /sys/fs/cgroup                    /sys/kernel/config              
/dev/shm                          /sys/fs/cgroup/blkio              /sys/kernel/debug               
/HDD                              /sys/fs/cgroup/cpu,cpuacct        /sys/kernel/security            
/home                             /sys/fs/cgroup/cpuset             /tmp                            
L_drive                           /sys/fs/cgroup/devices            /var/cache                      
/proc                             /sys/fs/cgroup/freezer            /var/log                        
/proc/sys/fs/binfmt_misc          /sys/fs/cgroup/memory             /var/tmp                        
/run                              /sys/fs/cgroup/net_cls                                            

そこには、タブ補完したくないものがたくさんあります。これらの提案をすべて削除し、絶対パスに対してのみタブ補完を残したいと思います/run/media/sparhawk/L_drive

FWIW zimには次のものがありますバグ文字を入力しても相対パスが見つからない場合。

$ umount L<Tab>
 -- no matches found --

しかし、他のすべての提案を削除して、 の絶対パスのみを残すことができれば/run/media/$USER/*、このバグは意味をなさなくなります。

答え1

あなたはignored-patternsスタイルいくつかの補完を除外します。

zstyle ':completion:*:umount:*' ignored-patterns "^/run/media/$USER/*"

デフォルト設定では、無視されない候補がない場合でも、無視されたパターンの補完を取得できます。

(この回答は、補完システムを使用する単純な zsh 用ですcompinit。zim が何らかの理由で動作しなくなる可能性はありますが、その可能性は低いです。)

関連情報