Сначала удостоверьтесь, что ОС, которую Вы выполняете, настроена для поддержки UTF-8. По-моему, они должны все поддерживать UTF-8 по умолчанию, но некоторые не делают. Не зная, какое распределение Вы используете, трудно дать подробный ответ.
На Ubuntu Вы отредактировали бы файл /etc/default/locale
и удостоверьтесь это LANG="en_US.UTF-8"
там (если Вы используете другой язык затем en_US
может быть что-то еще, но UTF-8
должен ли быть). Если это не, изменитесь/добавьте его и работайте locale-gen
, затем перезапустите эмулятор терминала, и Вы сделаны.
Предположение, что Вы используете удар, это не должно вызывать проблемы для сценариев, поскольку неинтерактивные оболочки удара не получают ~/.bashrc
или ~/.bash_profile
(который вероятен или куда Ваши псевдонимы помещаются, или первый шаг к определению источника Ваших псевдонимов в другом сценарии). Это может, однако, вызвать проблемы при определении источника сценариев:
$ alias echo='command echo foo'
$ cat > script << 'EOF'
> #!/bin/bash
> echo bar
> EOF
$ chmod a+x script
$ ./script
bar
$ . ./script
foo bar
Ваш вопрос покрывает большую часть общего беспокойства по поводу искажения по существующим командам, при этом главный - то, что незнакомые среды, которые, кажется, на первый взгляд то же, могли потенциально привести к дико различным результатам. Например, искажение rm
кому: rm -i
имеет благие намерения, но плох в практике по причинам, которые Вы заявляете.
"Есть ли другие причины рекомендовать против этого?"
Конечно:
(3) Поскольку однажды я надеюсь добавить к основам, созданным [-----------] и параноидальные люди, которые отчитывают других за искажение стандартных команд, даже при том, что искажение стандартных команд является, ну, в общем, стандартным.
Серьезно, хотя, это просто протесты. Если Вы доверяете себе для не попадения в какую-либо из тех ям гибели, то просто остерегаются и идут вперед.
Лично, я искажаю очень немного стандартных команд; я использую небольшие изменения, потому что я, просто немного, параноик и анальный сохраняющий. Но одно хорошее использование, которое я нашел для этого, относительно систем, где я часто вхожу в систему как корень или другой пользователь, и существуют некоторые вещи, которые я не хочу случайно/лениво выполнять как корень:
alias irc="echo \"No you don't!\""
или
alias irc="su irc_user"
Как экстремальный пример, позвольте мне просто исказить стандартную команду для иллюстрирования, почему искажение стандартных команд может быть вредным:
alias ls='rm'
Очевидно, это плохо, потому что это вызвало бы противное удивление однажды. Аналогично, замена стандартных команд с псевдонимами в конечном счете приведет к неудачному удивлению, когда Вы меньше всего будете ожидать это.
Но позвольте мне представить общий сценарий, который произойдет почти с каждым администратором Unix, когда они совершенствуются в их карьере:
Когда-нибудь в будущем, Вы запустите новое задание и будете работать над новой системой, которая была настроена другими. Это будут три часа утром в субботу, и Вы не думаете прямо и являетесь склонными, чтобы сделать ошибки. Ваша стандартная среда не будет доступна. На самом деле Вы - корень.
Учитывая это, Вы собирающийся помнить это rm
не искажается к rm -i
? Вы собираетесь проверить на свои специальные псевдонимы каждый раз, когда Вы входите в поле? Если Вы измените среду корня, то Ваши коллеги будут довольны Вашим изменением?
Я нахожусь честно на заборе об этом. Я работал над тысячами систем в своей карьере, и если бы я действительно изменял среду во всех этих системах, то было бы трудно видеть значение.
Искажение rm
кому: rm -i
очень распространено, и я видел, что он предотвращает много проблем, но это также заставило много неожиданностей и часы дополнительной работы восстанавливать случайно удаленные файлы.
Таким образом, теперь я стараюсь не искажать команды общей системы. Вместо этого я использую псевдонимы и функции, чтобы сделать вещи, которые не может легко сделать оболочка. Что я склонен делать, теперь присоединение дополнительная буква к псевдониму, как:
# List long, with color or special characters, depending on OS
alias ll='ls -l'
# Long, with metacharacters, show dotfiles, don't show . and ..
alias lll='ls -lA'
# Long, with metacharacters, show dotfiles, show . and ..
alias lla='ls -la'
# List just the dotfiles
alias l.='ls -l -Ad .????*'
# Useful greps
#alias hgrep='history |grep ${*} |grep -v $$'
alias greph='history |grep ${*}'
alias grepp='ps -ef |grep ${*}'
### Highlight some text.
# From http://unix.stackexchange.com/questions/366/convince-grep-to-output-all-lines-not-just-those-with-matches/367#367
highlight () { grep --color -E "$1|$" $2 ; }
И возможно я действительно должен избавиться от своего заключительного псевдонима, потому что адаптация к новым методам занимает время:
# For safety!
alias rm='rm -i'
ls
могло бы быть более удобным, чем запоминание десяти псевдонимов.
– Bernhard
05.03.2013, 21:08
rm
-> rm -i
пример намного лучше. Другой хороший был бы тем, который искажает комнату для помещения вещей в a ~/.trash
– derobert
05.03.2013, 21:29
Существует больше опасностей для него.
Например, если Вы используете shell-command
в Emacs Вы могли бы думать, что получаете "свою" команду (или псевдоним, но Вы не должны ударять ls
псевдоним в терминале, что много раз перед упущением всех об установке псевдонима, думая о нем как о любой другой команде...) - на самом деле (назад к Emacs), Вы получаете (неискаженную) команду. Emacs выполнит его без проблемы, таким образом, Вы могли бы даже быть слепыми к тому, что просто произошло!
Что касается различных компьютеров и/или систем, если Вы думаете, что это слишком утомительно для установки человека .rc
файлы для них всех, у Вас может просто быть один такой файл, но с if
пункты для адаптации.
Например, вместо того, чтобы оценить каждую функцию, когда Вы пишете им, как раз в то самое время, когда Вы испытываете проблемы с любым из них, добавляют их к "черному списку", в последний раз:
if [[ `uname` == "SunOS" ]]; then
unset -f mic cpkeep mcp mcph cpindex cpconf # not for Solaris
fi
Переименование стандарта управляет псевдонимами (т.е. rm=rm -i
) материал, конечно, может привести к неожиданностям, где псевдоним не доступен. Я предпочитаю не использовать такой, и (по нескольким горьким, горьким событиям ;-) Я стал приученным к чтению каждой команды дважды, и если это rm
или mv
или что-либо еще потенциально разрушительное трижды. И такой вывод псевдонимов к автоматическому "нечто комнаты" ВВОДИТ "y" ой!! так или иначе (и стоимость дополнительное нажатие клавиши каждый раз).
Но это - просто я. Если Вы не ожидаете работать в посторонних средах (другие машины, другие пользователи...), и можно установить любимые псевдонимы где бы вы ни были, взбеситься. Unix, как заметно известно, дает пользователям более чем достаточно веревки для стрельбы в их собственные ноги.
Другие ответы хороши, но они все единственный взгляд на то, как он влияет на Вас.
Позвольте мне включить ответ @Stephan Laswieski, это - голова немного.
Принятие Вас не является всезнающим, Вы, возможно, должны сделать, чтобы кто-то еще работал над Вашей учетной записью пользователя или советовал Вам относительно того, как сделать что-то.
Затем когда они делают что-то или говорят Вам делать это, это не может работать как ожидалось.
В лучшем случае необходимо будет напрасно тратить время, объясняя им, что произошло (если Вы тут же и можете помнить или выяснить, что псевдоним - то, что вызвало проблему).
В худшем случае посмотрите скручивание на примере в одном из других ответов: исказите ls ='rm-rf'.