Почему используется git с & amp; & amp; сбой, когда внутри .sh, но не из командной строки?

С gnome-screenshot мы не можем масштабировать вывод.

Чтобы сделать это автоматически, мы можем назначить другое приложение для экрана экрана для ярлыка.

Примеры скриншотов с размером 50% :

Изображение Магия import -resize в процентах от оригинала снимает снимок экрана всего рабочего стола:
import -window root -resize 50% [-delay <value>] shot.png
снимает снимок экрана (выбирается мышью):
import -window $(xdotool selectwindow) resize 50% shot.png
делает снимок экрана окна и Результат отображения:
import -window $(xdotool selectwindow) -resize 50% shot.png && display shot.png
загружает скриншот любого другого внешнего зрителя (например, eog) выход
import -window $(xdotool selectwindow) -resize 50% shot.png && eog shot.png
scrot (manpage) в Image Magic convert для выбора области экрана
scrot <options> -e "convert \$f -resize 50% shot.png && rm \$f"
<options>
-s select window or rectangle with mouse
-u use currently focused windows
Ниже приведен пример, затем сохраните половину (50%) снимок экрана выбранной области или окна с использованием имени файла по умолчанию для файла scrot (дата / час / минута / секунда / размер) в каталоге наших фотографий:
scrot -s -e "convert \$f -resize 50% ~/Pictures/\$f && display \$f && rm \$f"
2
задан 9 August 2017 в 20:57

2 ответа

Вы также можете создать псевдоним, чтобы соединить все команды, а затем выполнить сам объект псевдонима.

git config alias.op '!git fetch --all && git reset --hard && git merge' git op

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

Ваш пример с && может быть эквивалентно перефразирован как

if git fetch --all ; then if git reset --hard; then git merge fi fi
3
ответ дан 18 July 2018 в 08:48

Вы также можете создать псевдоним, чтобы соединить все команды, а затем выполнить сам объект псевдонима.

git config alias.op '!git fetch --all && git reset --hard && git merge' git op

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

Ваш пример с && может быть эквивалентно перефразирован как

if git fetch --all ; then if git reset --hard; then git merge fi fi
3
ответ дан 24 July 2018 в 19:10
  • 1
    Я понимаю этот аспект &&, по крайней мере, мне кажется странным, почему, когда я запускаю 3 команды с &&, тогда git reset --hard терпит неудачу, однако, когда я запускаю их в своих собственных линиях, эта же команда преуспевает ( не производя никаких ошибок, также я попробовал ; и команда reset все еще не удалось (хотя из-за ; она теперь пыталась запустить git merge) – Jason Sperske 9 August 2017 в 20:40
  • 2
    Это связано с тем, что, пока выполняется первый процесс извлечения ветви, следующая команда git reset --hard запускается одновременно, что в свою очередь приводит к конфликту. – Brijesh Shah 9 August 2017 в 20:43
  • 3
    Я не думаю, что && работает одновременно ( stackoverflow.com/questions/4510640/… ) – Jason Sperske 9 August 2017 в 20:45
  • 4
    Виноват! Проверьте обновления и проверьте, подходит ли это для вас. – Brijesh Shah 9 August 2017 в 21:02
  • 5
    Я понятия не имел, что это возможно. Я попробую, но мне не нравится идея настройки git таким образом, похоже, что такой вариант конфигурации будет потерян, так как этот проект изменил руки. Все еще увлекательный подход. – Jason Sperske 9 August 2017 в 21:09

Другие вопросы по тегам:

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