bash shell script that creates directories [closed]

Si creó el sistema de archivos en el dispositivo de bloque real, como parece que lo hizo, fdiskno será su amigo hasta que sus datos se hayan movido a otro lugar. Deberá montar el sistema de archivos, copiar los datos y luego desmontarlo. Luego puede usar fdiskpara particionar correctamente el dispositivo de bloque, usar mkfsen la partición, montarlo y mover sus datos:

$ sudo -s
# mkdir -p /mnt/export
# mount /dev/sdb /mnt/export
# exit
$ rsync -a /mnt/export/ /path/to/backup/
$ sudo -s
# umount /mnt/export
# fdisk /dev/sdb  # create your partitions
# mount /dev/sdb1 /mnt/export
# exit
$ rsync -za /path/to/backup/ /mnt/export/
-13
18.11.2018, 08:34
2 ответа

Это будет:

for i in {1..3}; do 
  mkdir dir$i
  touch dir$i/file1 
  date > dir$i/file2 
  if [ $i -eq 3 ]; then 
    grep $(hostname) /etc/hosts > dir$i/file3
  fi
done
0
28.01.2020, 05:21

Нет необходимости в каком-либо цикле. Фактически, это только сбивает с толку неэффективного.

mkdir dir{1..3}
touch dir{1..3}/file1
date | tee dir{1..3}/file2 >/dev/null
grep "$(hostname)" /etc/hosts >dir3/file3

Единственное, что немного продвинулось в этом ответе, - это использование тройника . Утилита tee принимает данные со стандартного ввода и дублирует их в несколько файлов, а затем снова в стандартный вывод. Я использую его здесь, чтобы записать дату из утилиты date в три файла file2 . Перенаправление на / dev / null в конце есть, чтобы мы также не получали дату, отображаемую в терминале.

В приведенном выше коде dir {1..3} будет расширен до dir1 dir2 dir3 и dir {1..3} / file1 будет расширен до dir1 / file1 dir2 / file1 dir3 / file1 до того, как утилита будет вызвана с этим в качестве аргументов.

2
28.01.2020, 05:21

Теги

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