Но, скорее всего, вы захотите исправить локаль так, чтобы C.
sort -u[112776] не сообщал об уникальных строках, но по одной из каждого набора строк, которые сортируются одинаково. В локали C 2 разные строки обязательно не сортируются одинаково, но это не так в большинстве локалей на основе UTF-8 в системах GNU.
Кроме того, использование локали C позволяет избежать накладных расходов, связанных с разбором UTF-8 и обработкой сложных порядков сортировки, так что это значительно улучшило бы производительность. Так что:
Вы также можете улучшить производительность, используя более быстрый диск (или диск, отличный от того, на котором находятся входные и/или выходные файлы) для временных файлов (используя [112777]-T[112778] или [112779]$TMPDIR[112780] переменную окружения), или возясь с опцией [112781]-S[112782], поддерживаемой некоторыми реализациями [112783]сортировки [112784]).
Для некоторых типов входных данных или для медленного хранения данных использование опции [112785]--compress-program[112786] в GNU [112787]sort[112788] (например, с помощью [112789]lzop[112790]) может улучшить производительность в дополнение к использованию хранилища.
Компьютер [113365] [113366] хотел бы, чтобы [113367]Стефан[113368] сортировал после [113369]é[113370] (по крайней мере, когда он выражен как U+00E9) символ или байты его кодировки UTF-8 сортируются после (в терминах кодовой точки или значения байта). Такой порядок сортировки очень прост в реализации и является [113371]строгим полным порядком [113372] и не вызывает удивления.
Порядок сортировки в вашем регионе, скорее всего, не будет удовлетворительным во многих случаях даже для человека. Например, в моей системе со стандартной локалью en_GB.utf8:
Stéphane[113480] и [113481]Stéphane[113482] (один с U+00E9, другой с eU+0301) сортируются не так:
$ printf '%b\n' 'Ste\u0301phane' 'St\u00e9phane' | сортируются -u. Стефан Стефан
но ③, ①, ② все равно сортирует (очевидно, ошибка в этих определениях местопребывания¹):
$ printf '%s\n' ③ ① ② | сорт -u. ③ Вот, это ③, но с тем же успехом могли бы быть ① или ②Так что IMO, есть шанс, что вы всегда захотите [113207] сортировать -u[113208] с LC_ALL=C, если хотите уникальные строки. А если вы хотите, чтобы получившийся список сортировался в порядке сортировки пользователя, то отправьте его в [113209]сортировку[113210] еще раз:
LC_ALL=C сортировка -u | сортировка LC_ALL=Сортировка | LC_ALL=C uniq -c | сортировка -k2
¹ [113213]2019 edit[113214]. порядок ① ② ③ ④ ⑤... с тех пор зафиксирован в новых версиях GNU libc, но с 2,30 более 95% символов до сих пор не имеют установленного порядка, можно заменить ① ② ③ ④ ⑤, например, на
После долгого поиска я нашел ответ: https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/documentation/networking/alias.txt
выглядит как интерфейсы виртуального / псевдонима устаревают и следует избегать, и нужно предпочесть добавлять несколько IP-адресов непосредственно в eth0
-121--244201-Удалите пробел в конце определения псевдонима (как предложено RICI), и ваша проблема должна быть исправлена.
Но; В таких случаях, как у вас, где у вас есть не только синонимы или сокращения в вашем псевдоним, но и функциональный код с трубами, лучше определить функцию вместо псевдонима.
Похоже, что GD
также является псевдонимами, и это расширяется до -M
и что-то. Чтобы проиллюстрировать:
$ alias alg='alias | grep '
$ alias gd='-m foo'
$ alg gd
grep: invalid max count
Сообщение об ошибке, которое вы показываете, - это то, что принты Prints
принты, когда он дан опцию -M
(MAX Count) и не численный аргумент. Если вы запустите псевдоним | GREP GD
, держу пари, вы увидите, что он совпадает с тем, что я показал выше.
Как объяснено в Man Bash
:
Если последний символ значения псевдонима представляет собой пространство или вкладку символом, то следующее командное слово, следующее с псевдонимами, также проверяется для расширения псевдонима.
Итак, удаление пространства из ALG
псевдоним следует также исправить его.
Кроме того, вы уверены, что ~ / .bash_aliases.sh
даже читается? Имя файла ~ / .bash_aliases
без расширения. Если вы не явно источники ~ / .bash_aliases.sh
Он будет игнорироваться.