Почему я получаю «недопустимый максимальный счет» из grep в псевдониме?

Поэтому идея состоит в создании псевдонима, который будет искать мой псевдоним для меня. У меня их немало.

dude@gnarleybox:~$ grep alg .bash_aliases.sh alias alg='alias | grep ' dude@gnarleybox:~$ alias | grep alg alias alg='alias | grep ' dude@gnarleybox:~$ alg gd grep: invalid max count dude@gnarleybox:~$ 

А? Как grep получает два параметра? Как это возможно? Обратите внимание, что я также пробовал это без пробела в конце:

 alias alg='alias | grep' 

Вы должны просто иметь возможность вводить:

  alg gd 

… и получить псевдоним, который я использую, чтобы подключить GoogleDocs.

Удалите пробел в конце определения псевдонима (как предложено rici), и ваша проблема должна быть исправлена.

Но; в тех случаях, когда у вас есть не только синонимы или аббревиатуры в вашем псевдониме, но также и функциональный код с помощью труб, лучше определить функцию вместо псевдонима.

Похоже, что gd также является псевдонимом и расширяется до -m и что-то в этом роде. Проиллюстрировать:

 $ alias alg='alias | grep ' $ alias gd='-m foo' $ alg gd grep: invalid max count 

Сообщение об ошибке, которое вы показываете, является тем, что grep печатает, когда ему предоставляется опция -m (max count) и не численный аргумент. Если вы запустите alias | grep gd alias | grep gd , я уверен, вы увидите, что он соответствует чему-то вроде того, что я показал выше.

Как объясняется в man bash :

Если последним символом значения псевдонима является пробел или символ табуляции, тогда следующее командное слово, следующее за псевдонимом, также проверяется на расширение псевдонима.

Таким образом, удаление пространства из alg alias также должно исправить его.

Кроме того, вы уверены, что ~/.bash_aliases.sh даже читается? Имя файла по умолчанию – ~/.bash_aliases без расширения. Если вы явно не используете ~/.bash_aliases.sh он будет проигнорирован.