Да. Во-первых, поле 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 отдельных значения, и это даже без добавления времени ожидания. Вы можете ожидать, что это поле будет меняться очень часто. Я не думаю, что какие-либо другие значения могут измениться, и ни одно из них не изменилось в моих тестах, но я не могу поклясться в этом.
Вы можете установить AixTools, набор инструментов gnu для AIX.http://www.aixtools.net/index.php/coreutils
Что включает в себя cp среди всех других инструментов, которые вы знаете и любите.
Собственная утилита cp
AIX, как вы заметили, не включает опцию --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
}
В качестве двухэтапного -процесса сначала создается целевой каталог (, если он еще не существует ), а затем копируется файл (, если 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