Сопоставление с образцом в условном выражении zsh

Первый диск /dev/sdaявляется8:0(основным :второстепенным ), но старший номер 8 также содержит следующие 15 дисков(Documentation/devices.txtв исходном коде ядра):

  8 block       SCSI disk devices (0-15)
                  0 = /dev/sda          First SCSI disk whole disk
                 16 = /dev/sdb          Second SCSI disk whole disk
                 32 = /dev/sdc          Third SCSI disk whole disk
                   ...
                240 = /dev/sdp          Sixteenth SCSI disk whole disk

                Partitions are handled in the same way as for IDE
                disks (see major number 3) except that the limit on
                partitions is 15.

Остальные для остальных ваших дисков (старшие номера 66 -71 и 128 -134 аналогичны, и схема разбиения у всех одинаковая):

 65 block       SCSI disk devices (16-31)
                  0 = /dev/sdq          17th SCSI disk whole disk
                 16 = /dev/sdr          18th SCSI disk whole disk
                   ...


135 block       SCSI disk devices (240-255)
                  0 = /dev/sdig         241st SCSI disk whole disk
                   ...
                240 = /dev/sdiv         256th SCSI disk whole disk

Что ж, у вас, вероятно, не так много дисков, и система генерирует только те узлы, которые необходимы для устройств, которые у вас есть на самом деле, так что вы не видите ничего, кроме sdaи его разделов в /dev.


Что касается vcsaи друзей, то они связаны с виртуальными консолями:

  7 char        Virtual console capture devices
                  0 = /dev/vcs          Current vc text contents
                  1 = /dev/vcs1         tty1 text contents
                   ...
                128 = /dev/vcsa         Current vc text/attribute contents
                129 = /dev/vcsa1        tty1 text/attribute contents
                   ...

Также обратите внимание, что /dev/vcs*являются символьными, а не блочными устройствами. Первая буква в выводе lsуказывает, какой именно.

2
22.11.2019, 19:43
1 ответ

*test*не является допустимым шаблоном регулярного выражения. *— это оператор повторения, и ему нужно что-то повторять. Очень вероятно, что вы хотите .*test.*, хотя это не обязательно с регулярным выражением, так как оно не привязано по умолчанию. Вы можете просто поискатьtest

Однако вы не можете сопоставлять шаблоны регулярных выражений с оператором =, вам нужно =~.

precmd () {
   local x=test
   if [[ $x =~ test ]]; then
      echo 'hello'
   fi
}
5
27.01.2020, 21:51

Теги

Похожие вопросы