Как работает эта сложная команда оболочки (содержащая |, && и sed)? - PullRequest
1 голос
/ 12 февраля 2010

Я пытаюсь понять, как работает git filter-branch, и мне нужна помощь с некоторыми базовыми командами сценариев Linux.

'git ls-files -s | sed "s-\t-&newsubdir/-" |
                GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
                        git update-index --index-info &&
         mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD

Может кто-нибудь объяснить это мне и объяснить каждую часть?

Меня больше всего интересует '|' нотация, нотация && и команда sed.

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

| подключает стандартный вывод предыдущей команды к стандартному вводу следующей команды.

&& выполняет следующую команду, если код возврата предыдущей команды равен 0 (то есть команда выполнена успешно).

Команда s в sed является заменой . Он ищет регулярное выражение для первого аргумента и заменяет его вторым. Разделитель аргументов традиционно /, но он будет использовать первый следующий символ, - в этом случае. & в замене заменяется полным совпадением.

1 голос
/ 12 февраля 2010

"|" команда unix pipe, которая соединяет команду на выходе слева с командой на входе справа.

"&&" - это команда unix "и", которая будет выполнять команду справа, если и только если команда слева будет успешно завершена

«sed» - это «потоковый редактор» Unix - мощный инструмент для редактирования, который анализирует и редактирует входные данные

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