Подстановка из исторической команды оболочки - PullRequest
0 голосов
/ 18 ноября 2010

В моей истории есть такая команда (оболочка Linux bash):

1119 for dir in `ls -d MyMod.*`; \
    do echo $dir;  \
svn copy --parents $dir $REPO/tags/MyMod_20101115/$dir -m"MyMod tag for 20101115"; \
done

, где 1119 - номер команды.

(Обратите внимание, что на самом деле команда находится в одной строке и не содержит символов \. Я просто помещаю их, чтобы она поместилась здесь на странице)

Существует ли однострочник, который можно использовать для изменения вышеуказанного с 20101115 до 20101118 (представляющий тег сегодняшней даты). Очевидно, мы могли бы создать скрипт для этого.

Это не вопрос о SVN. Приведенный выше пример является примером SVN, но цель вопроса состоит в том, чтобы узнать, как выполнить подстановку, особенно учитывая, что она есть в истории и использует for. Мы попытались использовать echo! 1119 в смеси с sed и не получили желаемого результата.

Ответы [ 3 ]

2 голосов
/ 18 ноября 2010

!1119:gs/20101115/20101118

См. «Расширение истории» в руководстве по bash

1 голос
/ 18 ноября 2010
fc -s 20101115=20101118 1119
1 голос
/ 18 ноября 2010

tail +1119 ~/.bash_history | head -1 | sed -e "s/20101115/20101118/g"

или

history | tail +1119 | head -1 | awk -F" " '{print $3 $4}' | sed -e "s/$OLD/$NEW/g"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...