Причина -X
не работает то, потому что это - a screen
команда, которую Вы выполняете - чтобы заставить ее работать mcStart.sh
и tsStart.sh
, необходимо использовать:
screen -dmS test -t win1 mcStart.sh
screen -rS test -X screen -t win2 tsStart.sh
Можно использовать строковые функции замены удара для этого:
for file in /tmp/p/DSC*.JPG; do
cp "$file" "${file%.JPG}"_orig.JPG
done
Общий формат ${string%substring}
который удалит substring
от конца string
. Например:
$ f=foobar.JPG; echo "${f%.JPG}"
foobar
zcp -o -p '/tmp/p/DSC*.JPG' '$f:r_orig.JPG'
или эквивалентно
zcp -o -p '/tmp/p/(DSC*).JPG' '/tmp/p/${1}_orig.JPG'
Это требует, чтобы Вы выполнили zsh (другие оболочки не имеют ничего как это), и вставьте это Ваш ~/.zshrc
:
autoload -U zmv
alias zcp='zmv -C'
alias zln='zmv -L'
-o -p
говорит zcp
передать опцию -p
к cp
команда, для сохранения метаданных файла (особенно время изменения).
"${file%.JPG}"
вместо этого.f
не определяется,file
. Кроме того (поскольку Вы упомянули),/%.abc/
синтаксис является функцией удара. Отбрасывание наклонных черт работает на этот случай и делает его POSIX совместимый, который имеет смысл, так как сценарии преобразования часто используют оболочку POSIX. – Marco 29.09.2013, 20:47f
была просто опечатка, перенесенная от примера, который я пробовал. Спасибо за то, что сообщили мне о стороне POSIX, хотя, я думал, целая вещь замены была характерна для удара. – terdon♦ 29.09.2013, 20:50