blackraven 05.08.2011 02:09
Есть вопрос! — Zsh - хочу невозможного?
Привет народонаселение!Вопрос возник такой... Я человек сильно ленивый, и иногда бывают случаи, что нужно прочитать файл в папке, которую только что от-ls-ил. В этом случае нужно нажать стрелку вверх, и исправить команду в начале строки. (ну и допечатать/дотабать имя файла).
Я конечно понимаю, что это - три клавиши (в моем случае - исправить ll на l, то есть Ctrl+A и Del), но хочется и этого избежать...
Можно ли нарисовать алиас (или функцию) в zsh, которая бы сама думала, чего я хочу сделать? Т.е. чтобы когда я говорю:
1 |
|
а когда я говорю
1 |
|
ЗЫ да, я гуглил. С ходу ничего не нашел - или не придумал, что именно гуглить...
blackraven 05.08.2011 02:10 #
+ 0 -
Ой... А чего такое жуткое отображение code-тегов?.. Откуда такая отбивка снизу?..
ищите как определить является ли параметр в функции дирой или файлом.
в баше это [ -f $NAME ] и [ -d $NAME ]
в баше это [ -f $NAME ] и [ -d $NAME ]
> в баше это [ -f $NAME ] и [ -d $NAME ]
Это не bash, а test(/usr/bin/test).
Это не bash, а test(/usr/bin/test).
test или [ - встроенная команда bash еще со 2-й версии. man bash, раздел SHELL BUILTIN COMMANDS
test из coreutils нужен для всяких ash и прочих posix-compatible shells. в баше-же не продублировали функционал, а избавились от кучи лишних fork-ов. if [...] - одна из самых распространенных конструкций в скриптах, и каждый раз дергать ради нее внешнюю утилиту - жуткий оверхед
Специально залез в ман и проверил, ибо всегда считал по другому...
Встроенная команда баш - [[]]. [] - это test. Кстати, я неоднократно натыкался на это, ибо например:
в баше не работает ибо вызывается test, который не знает об ==, однако
работает точно так же как
Встроенная команда баш - [[]]. [] - это test. Кстати, я неоднократно натыкался на это, ибо например:
1 |
в баше не работает ибо вызывается test, который не знает об ==, однако
1 |
работает точно так же как
1 |
Перечитал ман еще раз.. Беру свои слова обратно - был пьян :)
[] и test оказывается тоже builtin... Однако это не отменяет разницы между [] и [[]].
[] и test оказывается тоже builtin... Однако это не отменяет разницы между [] и [[]].
проще function l () { [[ -f "$1" ]] && less "$1" || ls -la "${1:-.}" }
Ну значит и эту конструкцию забудешь через пару дней, раз не помнишь (ибо похоже на практике эти фичи не используешь). Все (у меня кстати 3381) строки помнить совершенно необязательно, достаточно знать, что такая-то возможность есть и как её найти.