/./
необходимо всегда мочь выйти из строя к /
.
//
должно обычно быть разборным, НО я видел, настраивают проверку сценариев это так, я предполагаю, что могли быть системы, где это не то же. Проверьте его, но это будет, вероятно, прекрасно.
/../
будет только работать, если предыдущий каталог не будет символьной ссылкой (или, я верю, hardlink). С тех пор ..
hardlink к его родительскому каталогу, он подойдет к тому ответвлению, не тому в текстовом пути, который Вы используете. (N.B. Ваша оболочка может быть установлена не разрешить символьные ссылки на cd
s, в этом случае это понизится в каталог, где символьная ссылка; это поведение, однако, почти полностью ограничено cd
в оболочках с этим набором опции.)
Использовать readlink -f "$path"
, Я полагаю, что это разрешит все те случаи правильно.
Вопрос использования двойных кавычек и одинарных кавычек, где это имеет значение:
alias lsa="ls -l | awk '{print \$1}' "
Что Вы делаете, неправильно использует псевдоним для чего-то, что это более сложно, чем давание более короткого имени к команде или передающих параметров к команде автоматически. Используйте функцию вместо этого, и Вы не должны будете волноваться о заключении в кавычки.
intip () {
/sbin/ifconfig wlan0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
}
Обратите внимание, что Вам не нужен sudo здесь, ifconfig
не нуждается в полномочиях, когда Вы только смотрите. Но на многих дистрибутивах необходимо обеспечить полный путь как ifconfig
часто находится не в значении по умолчанию PATH
для некорневых пользователей.
Между прочим, можно сделать фильтрацию полностью в awk, хотя не стесняются использовать несколько инструментов, если Вы более удобны тот путь. Вот один путь:
intip () {
/sbin/ifconfig wlan0 | awk 'sub(/^.*inet addr:/,"") {sub(/ .*/,""); print}'
}
Можно легко сделать имя интерфейса дополнительный параметр функции.
intip () {
/sbin/ifconfig "${1:-wlan0}" |
awk 'sub(/^.*inet addr:/,"") {sub(/ .*/,""); print}'
}
Только для показа, почему псевдоним не работает: у Вас есть одинарные кавычки и для разграничивания псевдонима и в тексте псевдонима. Интерпретатор не может прочитать Ваши мысли и видеть, которые были предназначены, чтобы быть который. Посмотрите удар Вызова от sh (тире) с командами, считанными из args, и "Незавершенной заключенной в кавычки строки" / "неожиданный EOF" для некоторых случаев кавычек в кавычках и Почему эхо игнорирует мои символы кавычки? поскольку, как эффективно включать одинарную кавычку в единственно заключенную в кавычки строку путем ввода этих четырех символов '\''
.
Или Вы могли установить moreutils
(по крайней мере, если его доступное для Вашего дистрибутива) и использование ifdata
.
$ ifdata -pa br0
172.16.1.244
Вы использовали бы wlan0 вместо br0, конечно.
ifconfig
удерживается от использования в большинстве систем в пользу более нового ip
команда, но я не знаю намного больше об этом, чем это.
– jw013
29.06.2013, 01:00
ip
имеет многих, намного больше функций — требуемый в усовершенствованных сетях — чем ifconfig, который является, почему позже является устаревшим. Но ifdata
на самом деле не использует ifconfig, по крайней мере, не для получения интерфейсного адреса. Его использование ioctl(SIOCGIFADDR, …)
– derobert
29.06.2013, 01:06