Вопрос:
Мне немного надоело использовать двойные кавычки, когда я использую git commit
git commit -a -m «fix xxx error»
когда я устанавливаю псевдоним следующим образом:
coam = «!f() { git commit -a -m $1; }; f»
Он работает, когда я печатаю
git coam fix
он фиксируется как
git commit -a -m «fix»
но как установить команду, которая может обрабатывать
git commit -a -m «fix xxx error»
когда я просто набираю
git coam fix xxx error
Я тестирую
coam = «!f() { git commit -a -m $*; }; f»
но это не сработает!
спасибо!
Лучший ответ:
“Я немного устал от использования двойных кавычек”, < – но у вас нет выбора.
Вот как работает оболочка: у него есть механизмы, чтобы сделать так, чтобы если аргумент содержал символы, которые обычно являются разделителями полей ввода (подсказка: вот почему переменная среды IFS называется так, как она есть), она по-прежнему принимается за аргумент командой, которая будет выполнена.
И параметр git commit -m принимает один аргумент. Эти двойные кавычки необходимы.
Единственный способ, которым вы можете обойти это, – это иметь свою небольшую оболочку script, которая соберет эти аргументы для вас:
#!/bin/bash exec git commit -a -m «$*»
Если script выше называется mygitcm и на вашем пути, вы можете:
mygitcm my commit message here
Цитата из ваших примеров, я думаю, это сработало бы:
coam = «!f() { git commit -a -m «$*»; }; f»
(другая хорошая идея заключалась бы в том, чтобы делать сообщения с пояснительными сообщениями, конечно;))