/dev
私のスクリプトでは、ブロックデバイスを完成させる必要があります。
my_script.sh <TAB>
これにより、リスト内のすべてのディスクが完了して提供されます/dev/
(サブディレクトリにはありません)。/dev
たとえば、
my_script.sh <TAB>
my_script.sh /dev/
my_script.sh /dev/<TAB>
sda sdb sdc mmcblk0p1
my_script.sh /dev/sd
sda sdb sdc
説明されているとおりに機能するように、完成をどのように変更する必要がありますか?
_arguments -S : \
'--foo' \
'--bar' \
'*:file:_files'
ベストアンサー1
努力する:
_arguments -S : \
'--foo' \
'--bar' \
'*:block devices:(( /dev/*(-%b:t) ))'
(-%b:t)
%b
シンボリックリンクの確認後に選択するブロックデバイスを選択するグローバル修飾子であり-
、修飾子はそのファイルのすべてのファイルのみを選択:t
します。t
_files
、を使用できます。特典たとえば、塗り絵から:
_arguments -S : \
'--foo' \
'--bar' \
'*:block devices:_files -W /dev -g "*(-%b)"'
-W
ここで_files
指定されたオプションを使用してW
これらのファイルを検索しますが、/dev
その中でより多くのブロックデバイスを見つけるためにサブディレクトリも提供します。
Linuxでは、次のものを使用できます。
'*:block devices:_files -W /sys/class/block'
または:
'*:block devices:(( /sys/class/block/*(:t) ))'
これらのブロックデバイスのカーネル名のみを取得します。