Я не знаю, какой текст Ваше книжное использование, но руководство удара является четким (если Вы уже немного знакомы с перенаправлениями):
Если
|&
используется, стандартная погрешность command1, в дополнение к ее стандартному выводу, подключена к стандартному входу command2 через канал; это - сокращение от2>&1 |
. Это неявное перенаправление стандартной погрешности к стандартному выводу выполняется после любых перенаправлений, указанных командой.
Таким образом, если Вы не хотите смешивать стандартный вывод и стандартную погрешность, необходимо будет перенаправить стандартный вывод где-то в другом месте. Видеть Как к grep потоку стандартной погрешности (stderr)?
{ ./script.sh 2>&1 >&3 | sed 's:^:\t:'; } 3>&1
И fd 1 и 3 из script.sh
и sed
укажет исходному stdout месту назначения как бы то ни было. Если Вы хотите быть добропорядочным гражданином, можно закрыть их fd 3, в котором не нуждаются те команды:
{ ./script.sh 2>&1 >&3 3>&- | sed 's:^:\t:' 3>&-; } 3>&1
bash
и ksh93
может уплотнить >&3 3>&-
кому: >&3-
(fd перемещение).
Ваше изображение является образом диска, не изображением файловой системы. Файловая система находится на разделе в том изображении (если Вы не сделали что-то действительно необычное). Можно подтвердить это путем выполнения file Debian.raw
и fdisk -l Debian.raw
.
Самый легкий способ получить доступ к этому разделу состоит в том, чтобы связать его с циклическим устройством. Если Вы можете, удостовериться Ваш loop
поддержки драйвера и загружаются max_parts
опция; Вы, возможно, должны работать rmmod loop; modprobe loop max_part=63
. Затем свяжите образ диска с циклическим устройством и voilà:
losetup -fs Debian.raw # prints /dev/loop0 (or some other number)
mount /dev/loop0p1 /mnt # 0 as above, 1 is the partition number
Если Вы не можете заставить драйвер цикла использовать разделы, необходимо узнать смещение раздела в образе диска. Выполненный fdisk -lu Debian.raw
перечислить разделы и узнать его стартовый сектор S (сектор составляет 512 байтов). Затем скажите losetup
Вы хотите, чтобы циклическое устройство запустилось при этом смещении:
fdisk -lu Debian.raw # note starting sector $S
losetup -fs -o $(($S * 512)) Debian.raw
mount /dev/loop0 /mnt # /dev/loop0 or whatever losetup prints
Если Вы хотите скопировать раздел от образа виртуальной машины до Вашей системы, определите ее запуск ($S
) и окончание ($E
) смещения с fdisk -lu
как выше. Затем скопируйте просто раздел:
<Debian.raw tail -c +$((512*$S)) | dd of=/dev/sda5 bs=4M
(Если источник и место назначения не находятся на том же диске, не беспокойтесь dd
, просто перенаправление tail
вывод к /dev/sda5
. Если они находятся на том же диске, dd
с большим bs
параметр намного быстрее.)
losetup 2.21 -P option
losetup -P -f --show my.img
Создает один /dev/loopXpY
на раздел.
Преимущество: исполняемый файл предустановлен во многих дистрибутивах (пакет util-linux).
Недостаток: довольно новая опция, отсутствует в Ubuntu 14.04.
losetup -P
automation
Использование:
$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2
$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there
$ sudo losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO
/dev/loop1 0 0 0 0 /full/path/to/my.img
$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0
Источник:
los() (
img="$1"
dev="$(sudo losetup --show -f -P "$img")"
echo "$dev"
for part in "$dev"?*; do
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
dst="/mnt/$(basename "$part")"
echo "$dst"
sudo mkdir -p "$dst"
sudo mount "$part" "$dst"
done
)
losd() (
dev="/dev/loop$1"
for part in "$dev"?*; do
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
dst="/mnt/$(basename "$part")"
sudo umount "$dst"
done
sudo losetup -d "$dev"
)
kpartx
sudo apt-get install kpartx
losetup -fs my.raw
sudo kpartx -a my.img
ls /dev/mapper
Выход:
/dev/mapper/loop0
/dev/mapper/loop0p1
где loop0p1
- первый раздел, поэтому мы можем сделать:
mkdir -p d
sudo mount /dev/mapper/loop0p1 d
Преимущество этого метода: работает на Ubuntu 14.04 без перезагрузки.
/dev/loop0p1
), или указанное пользователями смещение (losetup -o
)? Из чего вывод<Debian.raw file -
, из<Debian.raw tail -c +$((512*s)) | file -
, илиfile -
на какой-либо соответствующей промежуточной стадии? – Gilles 'SO- stop being evil' 01.05.2011, 16:48proc
встроенный модуль, таким образом,rmmod
сбои.РедактированиеGRUB_CMDLINE_LINUX
на/etc/default/grub
работы: unix.stackexchange.com/a/87189/32558 – Ciro Santilli 新疆改造中心法轮功六四事件 12.09.2015, 13:49