От человека:
-d
Report activity for each block device<....>Device names may also be pretty-printed if option -p is used
-p
Pretty-print device names. Use this option in conjunction with option -d. By default names are printed as dev m-n where m and n are the major and minor num- bers for the device. Use of this option displays the names of the devices as they (should) appear in /dev. Name mappings are controlled by /etc/syscon- fig/sysstat.ioconf.
sar -p -d 1 1
07:16:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
07:16:36 PM sda 13.00 0.00 120.00 9.23 0.04 3.08 1.38 1.80
07:16:36 PM vg_livecd-lv_root 15.00 0.00 120.00 8.00 0.05 3.07 1.27 1.90
07:16:36 PM vg_livecd-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:16:36 PM vg_livecd-lv_home 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Полагаясь на совет @ApolloXI относительно sudo -n
и проводя дополнительные эксперименты, я смог преодолеть недостаток, о котором упоминал в своем предыдущем комментарии .
Подводя итог, при автозаполнении docker …
команд загружается следующий код:
. /usr/share/bash-completion/bash_completion
; __load_completion docker
, . /usr/share/bash-completion/completions/docker
; docker version -f '{{.Client.Experimental}} {{.Server.Experimental}} {{.Server.Os}}
и др. docker
(или псевдоним, если он существует ). Таким образом, рабочим решением будет замена моего псевдонима функцией bash, определяющей, вызывается ли она из функции завершения -bash . Это можно сделать, прочитав массив BASH_SOURCE
.
В результате мы могли бы принять следующее решение:
docker() {
if [[ "${BASH_SOURCE[*]}" =~ "bash-completion" ]]; then
sudo -n docker "$@"
else
sudo docker "$@"
fi
}
или если мы хотим иметь возможность легко отключить обертку, напишите вместо этого:
__docker() {
if [[ "${BASH_SOURCE[*]}" =~ "bash-completion" ]]; then
docker "$@"
else
sudo docker "$@"
fi
}
alias docker=__docker
Тогда префикс sudo -n
больше не нужен, и можно запустить например:
$ \docker run --help