alias rm="mv -t /root/folder"
сделает это, если у вас есть mv
, который поддерживает нестандартную опцию -t
. См. mv (1)для получения дополнительных опций (вы, вероятно, также захотите --no-clobber
/ --interactive
).
Если вам нужно решение POSIX, вы можете полностью обойти базовоеrm
(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/rm.html#top)с помощью функции с именемrm
:
rm() { mv "$@" /root/folder; } # a start
Если говорить конкретно о том, почему ваш синтаксис sed
не работает, подстановка процесса не будет происходить внутри одинарных кавычек.
Этот синтаксис работает для меня:
sed -i.old "1s;^;$(cat random)\\
;" filename
Если вы используете GNU sed
, это также будет работать:
sed -i.old "1s;^;$(cat random)\n;" filename
Обращаясь к вашему редактированию и сосредотачиваясь на GNU sed
, на ум приходят два решения:
1 )избегайте синтаксиса внутри random
, который беспокоит sed
. В вашем конкретном случае это использование буквальной новой строки внутри файла.
Вместо:
/* line1
line2 */
Код новой строки (в конце строки 1 )как\n
:
/* line1\n line2 */
Последняя новая строка вrandom
(в конце строки 2 )— это , уже закодированная как \n
в командной строке sed
.
2 )отказаться от редактирования места -с помощью sed
и использовать подход «cat
- и -mv
»:
for f in filename; do
mv $f $f.old
cat random $f.old > $f
done