Уже года три(если не больше) пользуюсь подобными программами — начинал с Quake. А в последних полгода перестал(просто заметил, что ни разу не вызвал его за месяц и убрал из автозапуска в gnome) — просто по этим же клавишам запускаю обычный gnome-terminal, а с compiz'ом он так же(если не лучше) красиво выезжает.
Добавка:
1)Сигналы:
HUP – hangup(требуется переподключение, многие службы получив этот сигнал перечитывают свой конфиг);
INT – interrupt, прерывание с клавиатуры(что делать при нажатие Ctrl-C);
KILL – убить(безусловно — нет шанса отказатся умерать) процесс;
TERM – termination, завершить процесс — просьба процессу умереть;
STOP — застопить процесс (безусловно — нет шанса отказатся)
CONT — продолжить выполнение застопленного процеса
2) А еще есть: killall и xkill
3) У команды tee есть опция -a — означает append — то есть если указанный файл-логов существует то его не перезаписать. а дописывать в него
4) А про script — её часто просят запустить техподдержка в случае какой-нить проблемы и затем выполнить стандартный набор команд по списку, которые собирают информацию по системе — и затем прислать им собранный script'ом файл.
Пример1 Часто вижу линуксойдов, которые постоянно (когда хотят обратится к какому-то файлу) переходят в директорию(cd /home), затем смотрят её содержимое (ls), затем переходят дальше (cd /home/aonick), опять (ls) и тд… до достижения файла — для них:
lcd(){
echo "Директория: $1"
cd $1 && ls
}
После этого переходить в нужную директорию можно так:
lcd /home
это команда и в директорию перейдет и сразу содержимое покажет.
Пример 2
Так как функция выполняется в той же сессии (в отличии от скрипта) — удобно например для команд настраивать автозаполнение по Тab-клавиши, напимер для команды rpm чтобы дописывал из списка установленных пакетов:
обновляется список аргументов которые предлагаются по нажатию Tab.
И пользуясь командой rpm уже так, например:
rpm -ql apach<i><Нажимаю дважды Tab></i>
и вижу список установленных пакетов начинающихся с «apach»
Дополнение:
Функция задается только в текущей сессии и после закрытия терминал про неё система забудет. Чтобы навеки-вечные задать своему пользователю функцию — её прописывают в файл ".bashrc" в домашней директории пользователя.
Пример 1 Часто мои скрипты начинаются с такой строчки:
Dir=${1-.}
То есть скрипт запускается и в качестве параметра ему указывается директория, которую надо обработать. Если директория не указана, то обрабатывается текущая директория.
Пример 2 Для начала задам переменную
Pic=/usr/share/wallpapers/Wolf.jpg
Вывод без первых трех символов(любых)
echo ${Pic#???}
r/share/wallpapers/Wolf.jpg
Пример 3 Для той же переменной
Pic=/usr/share/wallpapers/Wolf.jpg
Вывод с пятого по 9ый символы (то есть пропустить от начала 4ре символа и напечатать следующие 5)
echo ${Pic:4:5}
/shar
Пример 4 Переименование всех jpg-файлов в текущей папке под общий шаблон: Image_число.jpg
N=10000; for i in *.jpg;do let N=N+1; mv -i "$i" Image_${N:1}.jpg;done
Работает для не более 9999 файлов в текущей директории
Пример 5
Pic=/usr/share/wallpapers/Wolf.jpg
Перейти в папку содержащую эту картинку
cd ${Pic%/*}
это соответствует
cd /usr/share/wallpapers
Пример 6 Если файл картинка(jpg), то просмотеть ей (например, при помощи програмки eog)
да лучше, но я хотел продемонстрировать связку «while read» на несложном для понимания примере — в bash_history ничего коротенького не нашел, поэтому придумывал на ходу.
echo -n "[Универсальный просмоторщик] Укажите имя файла: "; read File
case "$File" in
*.jpg|*.gif|*.png)
eog $File
;;
*.pdf) evince $File ;;
*.txt) less $File ;;
*.html) firefox $File
/dev/*) echo "Ну это страшные файлы."
*)
echo "Ну ладно, ладно - не такой уж и универсальный."
echo "Этот тип файлов мне не знаком. Не знаю, чем его просмотреть."
;;
esac
Немного моего соуса в блюдо Istergul'а:
>> Кодом успешного завершения является 0, а ошибочного 1
О — код успешного завершения команды, а не ноль — код ошибки.
Наглядный пример:
# ls
reiting.html script.sh
# echo $?
0
# ls /root/
ls: невозможно открыть каталог /root/: Отказано в доступе
# echo $?
2
# lsbebebetutut
bash: lsbebebetutut: команда не найдена
# echo $?
127
— много букоф, но текст подходит для новичка, чтобы научится пользоваться vi по серьёзному.
1)Сигналы:
HUP – hangup(требуется переподключение, многие службы получив этот сигнал перечитывают свой конфиг);
INT – interrupt, прерывание с клавиатуры(что делать при нажатие Ctrl-C);
KILL – убить(безусловно — нет шанса отказатся умерать) процесс;
TERM – termination, завершить процесс — просьба процессу умереть;
STOP — застопить процесс (безусловно — нет шанса отказатся)
CONT — продолжить выполнение застопленного процеса
2) А еще есть: killall и xkill
3) У команды tee есть опция -a — означает append — то есть если указанный файл-логов существует то его не перезаписать. а дописывать в него
4) А про script — её часто просят запустить техподдержка в случае какой-нить проблемы и затем выполнить стандартный набор команд по списку, которые собирают информацию по системе — и затем прислать им собранный script'ом файл.
Спасибо
Пример1
Часто вижу линуксойдов, которые постоянно (когда хотят обратится к какому-то файлу) переходят в директорию(cd /home), затем смотрят её содержимое (ls), затем переходят дальше (cd /home/aonick), опять (ls) и тд… до достижения файла — для них:
После этого переходить в нужную директорию можно так:
это команда и в директорию перейдет и сразу содержимое покажет.
Пример 2
Так как функция выполняется в той же сессии (в отличии от скрипта) — удобно например для команд настраивать автозаполнение по Тab-клавиши, напимер для команды rpm чтобы дописывал из списка установленных пакетов:
После этого — каждый раз когда запускаю функцию:
обновляется список аргументов которые предлагаются по нажатию Tab.
И пользуясь командой rpm уже так, например:
и вижу список установленных пакетов начинающихся с «apach»
Дополнение:
Функция задается только в текущей сессии и после закрытия терминал про неё система забудет. Чтобы навеки-вечные задать своему пользователю функцию — её прописывают в файл ".bashrc" в домашней директории пользователя.
Пример 1
Часто мои скрипты начинаются с такой строчки:
То есть скрипт запускается и в качестве параметра ему указывается директория, которую надо обработать. Если директория не указана, то обрабатывается текущая директория.
Пример 2
Для начала задам переменную
Вывод без первых трех символов(любых)
Пример 3
Для той же переменной
Вывод с пятого по 9ый символы (то есть пропустить от начала 4ре символа и напечатать следующие 5)
Пример 4
Переименование всех jpg-файлов в текущей папке под общий шаблон: Image_число.jpg
Работает для не более 9999 файлов в текущей директории
Пример 5
Перейти в папку содержащую эту картинку
это соответствует
Пример 6
Если файл картинка(jpg), то просмотеть ей (например, при помощи програмки eog)
Пример for — 1ый(простой):
#Создает html-галерейку из jpg-картинок в текущей папке
Пример for — 2ой(тоже простой, но из моего bash_history):
#Выкачевает рейтинг на сегодня с одного сайта
Пример while — 1ый(бесконечный цикл):
#Сидюк-хронометр
Пример while — 2ой(использование в построчной обработке файла)
#Подсчитать сумарный размер jpg-файлов в текущей папке
я так понял свой коммент здесь отредактировать позже нельзя
>> Кодом успешного завершения является 0, а ошибочного 1
О — код успешного завершения команды, а не ноль — код ошибки.
Наглядный пример:
Видно разные значения кода ошибки($?).
Литературный перевод:
если переменная «name» заданна — выведется её значение, если нет то присвоится(и выведется) значение «anonymous».
1)
Создает архив директории /etc с названием(сегодня) /backup/Четверг.tgz, а если выполню завтра то будет /backup/Пятница.tgz
2)
В приглашении командной строки добавился вывод последней строки из системного log-файла
Буду признателен. если и дальше будет, что комментировать :)
пробел лишний, надо так: