Archive for the 'Shell программирование' Category

Shell: Автодополнение имен файлов в tcsh

Я давно всем рекомендую использовать tcsh в качестве своей оболочки для работы. В предыдущем посте насчет настроек tcsh я написал, какие настройки нужно поставить.

А вот зачем это нужно:

Автодополнение имен файлов в tcsh

Если у вас есть файл

a12312039akasd.avi

вы можете набрать a.avi<Tab> и получить полное имя файла.

или есть файлы

a.jpg
a.a.jpg
a.a-b.jpg

a.-<Tab> откроет шаблон в a.a-b.jpg

А если будут файлы

a.jpg
a.a.jpg
a.a-b.jpg
a.a-c.jpg

то, скажем, .-<Tab> откроется в a.a- и список возможных оставшихся вариантов :)

Так же с предыдущими настройками tcsh работает и автодополнение имен директорий

Имена директорий и <tab> в tcsh

Если вы введете команду cd и потом нажмете Tab, то тогда tcsh выведет только имена директорий, а не вообще список всех файлов.

Если же набрать ./<Tab> , то тогда tcsh выведет все исполняемые файлы в этой директории и все поддиректории — таким образом помогаю вам сформировать путь к исполняемому файлу.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Удобная конфигурация tcsh и других программ

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

Называлась она The Dotfile Generator.

Проект по утверждению автора уже немного мертвый, но тем не менее он не становится от этого менее полезным :)

Из настроек tcsh, которые вы точно захотите включить в свой .tcshrc файл :)

###---------->command line editor/bindings<----------
### Bindings for the command line editor
### искать взад вперед по истории команд при помощи кнопочек вверх/вниз
### набираете префикс команды - скаем l и кнопочку наверх и он выводит предыдущие
### ls, less, locate и так далее ;)
bindkey -k up history-search-backward
bindkey -k down history-search-forward

###———->completion/misc<———-
### Configuration on filename completion
### автодополнение пути, просто скопируйте :) voodoo magic :) но сильно облегчает жизнь
set addsuffix
set autolist
set complete = enhance
set autoexpand
set matchbeep = nomatch
set recognize_only_executables

###———->files<———-
### configuration of files
set listlinks
set noclobber
set rmstar
set symlinks ignore
umask 066

###———->history<———-
### Configuration of the history mechanism
### злопамятно запоминать много shell команд :) можно увеличить число до 2 тысяч
set savehist = (1000 merge)

###———->logout<———-
### Configuration of logout
### никогда не делать автологаут - только по команде!
set autologout = (0 0)
set ignoreeof = 1

Надеюсь, это сэкономит у вас много секунд в вашей жиззни :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Сохранение резервной копии при работе

Иногда нужно бывает какой-то один файл постоянно сохранять, делать с него резервные копии, что не потерялось.

Прямо во время работы. И изменения настолько маленькие, что закидывать файл под систему контроля версий не хочется.

Итак, самописное, хамское решение на коленке.

#!/bin/sh
[ -d backup ] || mkdir backup/

DATE=`date +%Y%m%d%H%M%S`

FILE=”networking1.tex”
DST=”./backup/networking1-$DATE.tex”

cp networking1.tex $DST
gzip $DST

Записываем в какой-нибудь файл backup.sh, делаем chmod 755 backup.sh и, вуаля, после каждого запуска у нас есть сохраненая, сжатая резервная копия файла :)

Имена файлов поменять по вкусу, естественно :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Какую оболочку вы используете? А раскрашиваете?

Решил сделать небольшой опрос :)))

Какую оболочку вы испольузете при работе — sh, bash, tcsh, zsh, что-то другое?

Со стандартными установками или раскрашиваете зверски? :)

А для рута и для обыкновенного пользователя у вас один и тотже shell или ставите разные?

Про себя могу сказать - у меня стоит tcsh с профайлом на килобайт 5 ;) и еще с дополнительным файлом auto-completition килобайтиков эдак на 42 - но его писал не я, он есть в сети (для разных оболочек).

Насчет flash - все еще ищу подходящую флэшку, которую было бы удобно убить ) и которая с виду гарантирует разбираемость ;)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Shell: Как задать несколько шаблонов в grep?

Альтернативные шаблоны в shell

Есть 2 варианта, которые сработает у вас - зависит от вашей оболочки

grep 'шаблон1|шаблон2|шаблон3'

или, может быть, сработает этот:

grep 'шаблон1\|шаблон2\|шаблон3'

Более подробно о шаблонах в shell можно узнать из курса ‘Регулярные выражения рулят!

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD: Автозапуск пользовательских скриптов

Иногда нужно бывает запускать скрипты от имени пользователя сразу после старта системы.

Самый простой способ для этого - воспользоваться системой cron.

cron и crontab

Для редактирования файла cron от имени пользователя набираете команду

crontab -e

И попадаете в редактор, где можно указать, какие задачи выполнять периодически.

Добавляете туда строчку

@reboot /путь/к/вашему/скрипту

Этого достаточно, чтоб скрипт был бы запущен во время перезагрузки системы. Правда, если сам демон cron выключен - это не сработает :)

Предыдущая запись: FreeBSD: добавление программы в автозапуск

Приглашаются авторы на Unixmastera.ru. Покажи на что ты способен - напиши совет сам :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

FreeBSD: добавление программы в автозапуск

Есть несколько способов сделать, чтоб ваша программа запускалась бы при запуске FreeBSD системы.

Добавляем в /etc/rc.local

Скрипт /etc/rc.local (его нет по умолчанию на системе, но его можно создать) выполняется после выполения всех оставшихся скриптов запуска системы.

Из него можно запускать свои процессы и програмы. Просто допишите путь к выполнямому файлу.

Добавляем в /usr/local/etc/rc.d

Новый стиль скриптов

Сейчас FreeBSD поддерживает два стиля скриптов запуска - новый и старый. Для скриптов с новым стилем в тексте shell скрипта обязательно должны просутствовать строчки

# PROVIDE:  your_service_name

Вы можете указать еще и зависимости - то есть какие сервисы должны быть запущены перед тем, как будет запущен ваш скрипт - но это уже тема отдельного разговора о новой системе запуска скриптов rcorder. Вы должны сделать файл скрипта выполняемым (chmod 755 имя_файла).

Старый стиль

Вам нужно просто создать файл с расширением .sh в этой директории и сделать его выполняемым.

Запретить? Всегда пожалуйста

Если вы хотите поместить в директорию /usr/local/etc/rc.d файл, который будет служить просто примером - и не будет выполняться - тогда назначьте ему расширение .sample

Все для root, ничего себе!

Все предыдущие методы годились для пользователя root, который решил добавить файл в автозапуск.

Что же делать обыкновенным пользователям, которые тоже хотят запускать какие-то скрипы после запуска машины?

Об этом мы поговорим в следующем посте FreeBSD:Автозапуск пользовательских скриптов

Приглашаются авторы на Unixmastera.ru. Покажи на что ты способен - напиши совет сам :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).