Эта строка
var1='more ods2.sql | egrep -e "test" | cut -c 5-7'
должен быть
var1=`more ods2.sql | egrep -e "test" | cut -c 5-7`
т.е. необходимо использовать обратные галочки вместо одинарных кавычек (апострофы).
Вы можете с помощью debugfs
программа e2fsprogs. Несмотря на его историческое имя, это будет работать над ext2/3/4 файловыми системами. Использование просто:
# debugfs -R "ls -l" /dev/sda6
2 40755 (2) 1001 1001 4096 17-Sep-2013 04:03 .
2 40755 (2) 1001 1001 4096 17-Sep-2013 04:03 ..
16 100644 (1) 1001 1001 9085 17-Sep-2013 04:03 avserver.conf
17 100644 (1) 1001 1001 2177 17-Sep-2013 04:03 bash.bashrc
26 100644 (1) 1001 1001 722 17-Sep-2013 04:03 crontab
…
где "ls-l" a debugfs
определенная команда, которая действует главным образом как ls -l
; Вы не можете использовать произвольную команду оболочки там. По умолчанию debugfs открывает диск в режиме только для чтения, таким образом, это относительно безопасно; например, примерение этого не ext2/3/4 раздел просто дает диагностику:
# debugfs -R "ls -l" /dev/sda2
/dev/sda2: Bad magic number in super-block while opening filesystem
ls: Filesystem not open
Я не могу сказать, что рассматриваю эту рекомендуемую практику, но она сделает то, что Вы спрашиваете.
Смысл монтирования файловой системы должен получить доступ к своим файлам. Так не, в целом, Вы не можете получить доступ к файлам файловой системы, не монтируя его.
Существует несколько утилит, которые получают доступ к файлу непосредственно без монтирования, такого как debugfs для ext2/ext3/ext4 файловых систем и mtools для файловых систем FAT.
Для ext2/ext3/ext4, вместо того, чтобы вызвать опасное и твердое для использования программы debugfs
, можно перечислить его последнее местоположение монтирования:
tune2fs -l /dev/sda1 | grep 'Last mounted'
Однако это только полезно, если последнее местоположение монтирования было зарегистрировано.
Большая часть файловой системы вводит поддержку, дающую маркировки файловых систем (например. tune2fs -L foo
). Поэтому дайте всем Вашим файловым системам уникальную маркировку. Затем смонтируйте файловую систему маркировкой:
mount /dev/disks/by-label/foo /media/foo
или
mount LABEL=foo /media/foo
Простой ответ: Вы не можете. ls
стандарт использования libc стандартные программы, которые переводят в системные вызовы, которые подаются драйвером файловой системы, следовательно не возможно использовать ls
(или что-либо с помощью тех системных вызовов в этом отношении), не монтируя файловую систему.
Вы могли записать утилиту, которая обойдет это при наличии ее собственной копии некоторых частей драйвера файловой системы (такая вещь существует, например, для чтения файловых систем Ext2 из Windows), но это довольно непрактично.
Если Ваша проблема просто определяет разделы, вероятно, необходимо начать использовать GPT, который имеет пространство для имен раздела (72 байта за раздел). Некоторые лежащие решения (Linux MD или LVM, например) позволяют называть также.