Online video hd

Смотреть узбекча видео

Официальный сайт ejnews 24/7/365

Смотреть видео бесплатно

zz 30.10.2010 15:21

Tips & tricksИспользование функций() bash

Для упрощения работы, bash позволяет добавлять функции в .bash_profile (или .bashrc), которые будут доступны для использования наравне с прочими командами.
На примере я покажу, как это работает.



Я добавлю в .bash_profile функцию для быстрого запуска файлов-заметок vimoutliner. Вкратце, vimoutliner - это набор плагинов и подсветка синтаксиса файлов с расширением .otl для vim, которые позволяют вести древовидные заметки.

Вот код функции в .bash_profile:

$ cat .bash_profile
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
outliner() {
# путь к директории с файлами заметок; "$username" следует заменить на имя пользователя
OUTLINER_DIR="/home/$username/outliner"
# вложенная функция для вывода справки
outliner_help () {
# опция -e в echo включает отображение "backslash escapes"; например \n - переход на следующую строку, \t -табуляция
echo -e "Usage:"
echo -e "\toutliner FILE\topen or create outliner FILE"
echo -e "\toutliner -l\tlist outliner directory"
}
# если отсутствуют аргументы при запуске функции (т.е. отсутствует $1), вывести справку и завершить выполнение функции с кодом возврата 1 ("ошибка")
if < -z $1 >; then
outliner_help;
return 1;
# если в качестве аргумента выступает "-l", вывести список файлов в директории $OUTLINER_DIR
elif << "$1" == "-l" >>; then
ls $OUTLINER_DIR;
# если существует файл "$1.otl" в директории $OUTLINER_DIR, запустить vim, передав ему в качестве аргумента путь к этому файлу
elif < -e "$OUTLINER_DIR/$1.otl" >; then
vim "$OUTLINER_DIR/$1.otl";
# если файл не существует, предложить его создание и запуск vim с путем к созданному файлу в качестве аргумента (фактически файл создаст vim, при сохранении, а не эта функция)
else
echo "No such file "$OUTLINER_DIR/$1.otl""
echo "Create new file "$OUTLINER_DIR/$1.otl" (y/N)?"
# считываем ответ пользователя; если "y" или "Y" - создаем файл, если что либо другое - нет; по-умолчанию "нет" (если просто нажать Enter)
read CREATE_NEW
if << "$CREATE_NEW" == "y" || "$CREATE_NEW" == "Y" >>; then
vim "$OUTLINER_DIR/$1.otl" || echo -e "\tSomething is wrong!" ;
else
echo "exit"
fi
fi
}



В результате, вместо того, что бы запускать команду
1
$ vim outliner/file.otl


достаточно выполнить
1
$ outliner file



При этом предполагается, что все файлы с заметками будут хранится в одной директории и, если вы забыли имя нужного файла, можно его посмотреть, запустив функцию с параметром "-l".

Следует учитывать, что данная функция будет подгружаться к каждой копии bash и это может повлечь за собой дополнительные расходы памяти (незначительные), так что, для избежания этого, лучше реализовать вышеописанный метод не в виде bash-функции, а bash-скриптом. Так же следует помнить, что после добавления функций в .bash_profile они будут доступны только для новых копий bash (т.е. в том же терминале, в котором редактировался .bash_profile функции работать не будут, но в новосозданном терминале - да). Напоследок добавлю, что автодополнение ввода работает для bash-функций так же, как и для обычных команд.

Ну и итогом нашей лабораторной работы)) можно считать то, что мы научились использовать bash-функции, которые можно считать неким аналогом bash-alias'ов, но которые позволяют выполнять сразу несколько команд и обладают всеми возможностями bash-скриптов, тем самым упрощая себе работу в терминале.

P.S. Это моя первая публикация на данном ресурсе, критику выслушаю и, если требуется, внесу в текст правки, но сильно ногами не пинайте, пожалуйста)) Так же мне показалось, что тематика заметки подходит для блога "Tips & tricks", но у меня нет возможности опубликовать что-то в нём, поэтому пишу в персональном.


Тэги: bash
+ 11 -
Похожие Поделиться

DobrijZmej 30.10.2010 15:37 #
+ 2 -
Так же мне показалось, что тематика заметки подходит для блога "Tips & tricks", но у меня нет возможности опубликовать что-то в нём, поэтому пишу в персональном.

Чтоб иметь возможность что-то писать в блог - нужно зайти в него (например зайти в http://welinux.ru/blog/38/), и нажать кнопку "Вступить".
zz 30.10.2010 15:39 #
+ 0 -
Благодарю, перенес.
K-9 30.10.2010 18:25 #
+ 2 -
Не vim file, а outliner file
zz 30.10.2010 18:35 #
+ 0 -
Спасибо, исправил.
digiwhite 30.10.2010 22:18 #
+ -2 -
Интересно, не знал. Спасибо :)
digiwhite 30.10.2010 22:20 #
+ 2 -
Да кстати, вместо $username достаточно вписать $USER. Это переменная окружения, куда прописывается имя текущего пользователя.
thoughtful_fox 30.10.2010 23:30 #
+ 2 -
так может тогда уже сразу завместо /home/$USER/ писать просто ~ или $HOME?
digiwhite 31.10.2010 00:16 #
+ 0 -
Ну да, можно кстати и так.

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн