скопируйте файл и сохраните полный путь

Да. Во-первых, поле cpu MHz будет меняться очень часто, поскольку оно показывает текущую скорость вашего процессора. Например, в моей системе:

$ for i in {1..10}; do grep -m 1 MHz /proc/cpuinfo ; done
cpu MHz     : 1596.000
cpu MHz     : 1596.000
cpu MHz     : 1596.000
cpu MHz     : 1596.000
cpu MHz     : 2394.000
cpu MHz     : 2394.000
cpu MHz     : 1596.000
cpu MHz     : 1596.000
cpu MHz     : 2394.000
cpu MHz     : 2394.000

Команда выше выведет строку cpu MHz моего первого процессора 10 раз. Как вы можете видеть выше, в результате получилось 2 отдельных значения, и это даже без добавления времени ожидания. Вы можете ожидать, что это поле будет меняться очень часто. Я не думаю, что какие-либо другие значения могут измениться, и ни одно из них не изменилось в моих тестах, но я не могу поклясться в этом.

1
20.06.2018, 16:26
3 ответа

Вы можете установить AixTools, набор инструментов gnu для AIX.http://www.aixtools.net/index.php/coreutils

Что включает в себя cp среди всех других инструментов, которые вы знаете и любите.

0
27.01.2020, 23:23

Собственная утилита cpAIX, как вы заметили, не включает опцию --parent.

Одним из вариантов может быть установка и использование rsync из набора программного обеспечения AIX Toolbox for Linux Applications . Вам также необходимо установить popt RPM (в качестве зависимости от rsync ).

Тогда можно было бежать:

rsync -R /some/path/to/file /newdir/

Чтобы получить /newdir/some/path/to/file.


В качестве домашнего -выращенного варианта вы можете написать функцию-оболочку, используя ksh93 (для поддержки массива ), чтобы эмулировать поведение.Ниже в качестве примера показана функция голых -костей; предполагается, что вы хотите копировать файлы с относительными путями, и не поддерживает никаких параметров:

relcp() {
  typeset -a sources=()
  [ "$#" -lt 2 ] && return 1
  while [ "$#" -gt 1 ]
  do
    sources+=("$1")
    shift
  done
  destination=$1

  for s in "${sources[@]}"
  do
    if [ -d "$s" ]
    then
        printf "relcp: omitting directory '%s'\n" "$s"
        continue
    fi

    sdir=$(dirname "$s")
    if [ "$sdir" != "." ] && [ ! -d "$destination/$sdir" ]
    then
      mkdir -p "$destination/$sdir"
    fi
    cp "$s" "$destination/$sdir"
  done

  unset sources s sdir
}
4
27.01.2020, 23:23

В качестве двухэтапного -процесса сначала создается целевой каталог (, если он еще не существует ), а затем копируется файл (, если mkdirудалось ).

dir=/some/path/to
mkdir -p "/newdir/$dir" && cp "$dir/file" "/newdir/$dir"

В качестве функции оболочки (обрабатывает только копирование одного файла):

cp_parents () {
    source_pathname=$1
    target_topdir=$2

    mkdir -p "$target_topdir/${source_pathname%/*}" && cp "$source_pathname" "$target_topdir/$source_pathname"
}

Затем,

$ cp_parents /some/path/to/file /newdir
0
27.01.2020, 23:23

Теги

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