Я знаю решение, но, к сожалению, оно требует полномочия пользователя root. Так или иначе Вы могли бы все еще найти это полезным:
sudo lshw -class disk -class storage
Для каждого устройства это распечатает логическое имя (например, /dev/sda
) и информация о шине, которая в случае USB-устройства была бы чем-то как 'usb@1:2'.
Демонстрационный вывод:
[...]
*-storage
description: SATA controller
physical id: d
bus info: pci@0000:00:0d.0
configuration: driver=ahci latency=64
[...]
*-disk:0
description: ATA Disk
physical id: 0
bus info: scsi@2:0.0.0
logical name: /dev/sda
[...]
*-scsi
physical id: 3
bus info: usb@1:2
configuration: driver=usb-storage
*-disk
description: SCSI Disk
physical id: 0.0.0
bus info: scsi@6:0.0.0
logical name: /dev/sdc
[...]
true
не был встроен в Оболочку Bourne. :
всегда был (это был способ ввести комментарии прежде #
был представлен).
Это, и потому что это короче для ввода, является, вероятно, главной причиной, которую предпочитают люди :
true
.
Отметьте другое различие в оболочках POSIX (для bash
, только в режиме POSIX): в то время как true
встроенный постоянный клиент (не должно даже быть встроено), :
встроенное специальное предложение. Это имеет несколько последствий, большинство которых вряд ли окажет любое влияние в данном случае:
Если a :
управляйте сбоями, включая из-за неудавшегося перенаправления, которое заставляет оболочку выходить. На практике это, вероятно, не будет иметь значения, если Вы не передадите перенаправления :
$ sh -c ': > / ; echo HERE'
sh: 1: cannot create /: Is a directory
$ sh -c 'true > /; echo HERE'
sh: 1: cannot create /: Is a directory
HERE
в var=value :
, var
остается установленным на value
после :
возвраты, не в случае true
:
$ var=1; var=2 : ; echo "$var"
2
$ var=1; var=2 true; echo "$var"
1
Также отметьте это || true
работы в оболочках rc
и csh
семейства, но нет || :
(но не отменять set -e
в csh
).
|| :
не то же как :
. Это означает или выполненный :
иначе (то есть, если предыдущий конвейер перестал работать).
set -e
false
Заставил бы оболочку выходить из-за set -e
и false
имеет ненулевое (отказ) статус выхода. set -e
эффект отменяется, если команда, которая возвращает ненулевой статус выхода, используется в качестве условия как в:
if false; then ...
while false; do ...
false && : ...
false || : ...
false && :
только отмены set -e
. false || :
отмены set -e
и устанавливает статус выхода на 0
так более идиоматично, чтобы сказать, что мы хотим проигнорировать код выхода отказа команды. Большинство обсудило бы это || true
является более четким (передает намерение более ясно).
Обычно в ударе, двоеточии :
и true
эквивалентно.
||: считавшийся более идиоматичным?
Я думаю, что это основано на контексте.
Если Вы хотите a return value
, или a condition
всегда верно, необходимо использовать true
ключевое слово, это, сделает Ваш код более ясно и позволит средствам просмотра знать, что Вы хотите, подчеркивают верное значение, т.е.:
while true; do something
или
<commnad>
RETURN_VALUE= $? || true
И если Вы хотите ничего не сделать, или NOP
в оболочке необходимо использовать двоеточие :
if condition
then
: # DO NOTHING HERE
else
do something
fi
или
while conditon
do
: # DO NOTHING HERE
done
Большинству этих ответов не удается обратиться к наиболее популярному способу использования :
.
Во-первых, это обсуждение не связано ни с какой оболочкой, которая не является Оболочкой Bourne (sh
) производная. Тем не менее все оболочки производной Bourne видят true
и :
как то же самое. Программисты раньше поощрялись использовать :
вместо true
, потому что :
всегда встроенное, в то время как раньше были случаи где true
было не всегда встроенное.
:
имеет два использования. Это не синоним для #
, но это имеет другую функцию. При отладке сценария под a set -x
, строки, где #
используется отбрасываются синтаксическим анализатором и полностью игнорируются, тогда как строки с :
проанализированы и оценены. Это действительно полезно в отладке с тех пор под -x
те строки показывают и их значение после того, как оценка будет отображена. Это похоже на помещение print
операторы в Вашем коде то единственное шоу под -x
режим. Будьте осторожны со значениями после :
так как они - реальный код, и побочные эффекты могут влиять на Вашу программу.
&& :
является блестящим, там какие-либо документы или дополнительные материалы для чтения на этом? Google терпит неудачу в отношении меня пытающийся найти этот вид ключевых слов … – Ian Bytchek 08.10.2015, 11:11