Как скопировать файлы с одинаковыми именами из одного места в другое несколько раз с помощью команды linux?

Используйте тонкую обертку оболочки:

#!/bin/sh
exec /usr/local/bin/mvim -v "$@"

И спрячьте ее где-нибудь (где-нибудь в PATH или, может быть, в ~/libexec или еще где-нибудь), а затем установите эту обертку в качестве значения EDITOR.

С помощью ZSH можно принудительно расширить:

% EDITOR='echo -E'
% $EDITOR /etc/passwd
zsh: command not found: echo -E
% $=EDITOR /etc/passwd
/etc/passwd
% 

Как подробно описано в zshexpn(1):

   ${=spec}
          Perform  word splitting using the rules for SH_WORD_SPLIT during

Обратите внимание, что ZSH противоречит другим оболочкам в вопросе не выполнения SH_WORD_SPLIT по умолчанию. Умолчание POSIX, между прочим, является прекрасными граблями, которые многие использовали неправильно и, таким образом, наступили на них и получили удар:

% DERP="/var /nish"
% ls $DERP
ls: cannot access /var /nish: No such file or directory
% sudo bash
# DERP="/var /nish"
# rm -rf $DERP 
...

Однако различные другие программы, возможно, те, которые не знают, как выполнять разделение слов в оболочке, могут вызывать EDITOR. Поэтому наиболее переносимым вариантом для EDITOR является то, что может быть выполнено непосредственно вызовом exec(3), и при необходимости этот сценарий может добавить любые флаги для собственно редактора. Следовательно, это тонкая обертка.

1
29.06.2017, 13:51
1 ответ

Если это записывает ожидаемые команды cp, удалите echoиз строки:

find . -name '*.html' -exec /bin/sh -c 'file="{}"; echo cp -prv "$file" "projects/html_files/${file##*/}(${file%/*})"' \;
2
27.01.2020, 23:45

Теги

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