Горячие клавиши bash

Горячие клавиши bash можно разделить на несколько больших групп:

CTRL-команды:

Ctrl + a — переход к началу строки
Ctrl + b — аналог стрелки влево (ну, если не работает)
Ctrl + c — отменить редактирование команды или прекратить работу (если запущена)
Ctrl + d — аналог Delete. Если строка пустая — выход из shell
Ctrl + e — переход к концу строки
Ctrl + f — аналог стрелки вправо
Ctrl + g — выход из режима дополнения
Ctrl + h — аналог BackSpace
Ctrl + i — аналог Tab
Ctrl + k — удалить всё до конца строки
Ctrl + l — Очистить экран (набранная строка и даже позиция курсора остаётся)
Ctrl + r — (ну, это все знают) — поиск по истории набранных команд
Ctrl + R — поиск по истории набранных команд назад (это когда есть несколько вариантов и проскочили нужный)
Ctrl + t — поменять местами текущий символ с предыдущим
Ctrl + u — удалить всё до начала строки
Ctrl + v — преобразует следующую клавишу в её символьное отображение (Enter — ^M, Esc — ^[ и т.д.)
Ctrl + w — удалить от курсора до начала слова
Ctrl + x дважды — скачок между началом строки и текущей позицией курсора.
Ctrl + x @ — Показывает возможные варианты дополнения доменного имени (вот это мне воспроизвести не удалось).
Ctrl + y — вставить из буфера (все удаляемое по горячим клавишам удаляется не просто так, а в буфер)
Ctrl + z — притормозить/остановить выполнение команды в фон
Ctrl + _ — отмена последнего изменения

ALT-команды
Alt + < — к первой команде в истории (вообще к самой первой в .bash_history)
Alt + > — к последней команде в истории
Alt + ? — показать весь список вариантов дополнения (аналог 2Т — см. ниже)
Alt + * — вставить все возможные варианты дополнения
Alt + / — попытатся дополнить имя файла (из имеющихся в текущем каталоге)
Alt + . — вставить последний аргумент из предыдущей команды
Alt + b — влево на слово
Alt + c — сделать первую букву слова заглавной (и перейти к следующему слову)
Alt + d — удалить от текущей позиции до конца слова
Alt + f — вправо на слово
Alt + l — сделать первую букву слова строчной (и перейти к следующему слову)
Alt + n — искать по истории (но не сразу, а после полного ввода и нажатия Ентер)
Alt + p — искать по истории назад
Alt + r — очистить всю строку
Alt + t — поменять слова местами
Alt + u — сделать все буквы заглавными от текущей позиции до конца слова
Alt + BackSpace — Удалить от текущей позиции до начала слова

Esc-команды
Esc+d — удалить от курсора до конца слова
Esc+f — вправо на слово
Esc+b — влево на слово
Esc+t — поменять местами слова

Tab-команды

2T обозначает дважды нажатый Tab
2T — все доступные команды (это тоже все знают)
(string)2T — все доступные команды начинающиеся на string
/2T — все каталоги, включая скрытые. Для текущего надо набрать ./2Т
*2T — каталоги, кроме скрытых
~2T — все пользователи, присутствющие в /etc/passwd
~f2T — все пользователи, присутствющие в /etc/passwd, начинающиеся на f
$2T — все системные переменные
@2T — все записи в /etc/hosts
=2T — вывод наподобии ls или dir

Просто команды
!! — выполнить последнюю команду в истории
!abc — выполнить последнюю команду в истории, начинающуюся на abc
!a:p — напечатать последнюю команду в истории, начинающуюся на a
!n — выполнить n-ную команду в истории
!$ — посдедний аргумент последней команды
!^ — первый аргумент последней команды
^abc^xyz — заменить abc на xyz в последней команде и выполнить результат

Find out top 10 directories eating up your disk space

Find out top 10 directories eating up your disk space:

du -cks * | sort -rn | head -10

Using pw to add a group and user in FreeBSD

Using «textdrive» as an example

pw groupadd textdrive
pw useradd textdrive -m -c "Main Textdrive account" -d /home/textdrive -s /bin/tcsh -G textdrive -k /usr/share/skel/

Then set the password:

passwd textdrive

FreeBSD для обслуживания 100-200 тысяч соединений (freebsd tcp optimization tune speed socket mbuf sendfile sysctl)

Стенограмма выступления Игоря Сысоева с конференции РИТ-2007.

mbuf clusters

FreeBSD хранит сетевые данные в mbuf clusters, размер каждого 2Кб, но из
них используется только около 1500 байт (по размеру Ethernet пакета).

mbufs

Для каждого mbuf кластера нужен «mbuf», который имеет размер 256 байт и
нужен для организации связи цепочек из mbuf кластеров. В mbuf можно поместить
полезную информацию в районе 100 байт, но это не всегда используется.

Если в машине 1Гб и больше памяти, то по умолчанию будет создано 25 тыс. mbuf кластеров,
что не всегда достаточно.

При ситуации исчерпания числа свободных mbuf кластеров FreeBSD попадает в
состояние zonelimit и перестает отвечать на запросы по сети,
в top это выглядит как «zoneli». Единственная возможность как-то повлиять на
ситуацию — это зайти с локальной консоли и перезагрузить систему, уничтожить
процесс находящийся в состоянии «zoneli» невозможно. Для Linux 2.6.x данная проблема
тоже характерна, причем работать переставала даже консоль.

PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
13654 nobody 1 4 0 59912K 59484K zoneli 209:26 0.00% nginx

Read the rest of this entry »

Команда watch в Linux и во FreeBSD

root@jupiter:~$ uname -a
Linux jupiter 2.6.15-26-386 #1 PREEMPT Thu Aug 3 02:52:00 UTC 2006 i686 GNU/Linux
nexus@jupiter:~$ whatis watch
watch (1) — execute a program periodically, showing output fullscreen

root@cod:~# uname -a
FreeBSD cod 5.10-STABLE FreeBSD 5.10-STABLE #1: Mon Jul 26 09:54:43 EEST 2006
root@cod:~# whatis watch
watch(8) — snoop on another tty line

Ну а если хотите такую же функциональность watch в FreeBSD как и в Linux, то portinstall cmdwatch
и используйте cmdwatch.

Типичный случай: cmdwatch df

HowTo fix command history in MC under Ubuntu

The program which I setup first of all after the Linux installation is mc (Midnight Commander).
It is very friendly and useful for me.

But in Ubuntu there is one problem with mc: shell’s commands history is flooded with a garbage and with many ESC-symbols when I use mc.

E.g.:

cd "`echo -e '\057usr'`"
cd "`echo -e '\057usr\057X\061\061R\066\057bin'`"
cd "`echo -e '\057home'`"

I found the way how to fix this problem.
In the file .bashrc string:

export HISTCONTROL=ignoredups

should be replaced with:

export HISTCONTROL=ignoreboth

5 способов сделать использование bash более продуктивным

Перевод статьи Richard Bradshaw «5 ways to make using bash more productive»
Если вы используете Linux или Mac, то вы, скорее всего, используете bash в качестве командного интерпретатора по умолчанию. Обычно у него есть несколько неплохих возможностей (табы, история и т.п.), но существуют также несколько советов и трюков, которые могут сделать его более приятным в использовании. Ниже следует 5 моих любимых.Перечисленные вещи следует добавлять в ваш файл .bashrc. Откройте его с помощью

nano ~/.bashrc

вы можете заменить «nano» на ваш любимый текстовый редактор (vi, emacs, pico, gedit, kate и т.п.)

Эффективный поиск по истории
Нажмите ctrl+R для начала поиска, затем наберите фразу, которую следует найти в истории. Этот совет несложный, но он является отправной точкой, которую все должны знать!

history | grep "искомоевыражение"

Вы найдете выражение в вашей истории с использованием немного более гибкого способа.

Улучшите историю bash
Если вы используете две сессии bash в одно и то же время, закрыв вторую, вы будете писать поверх команд, набранных в первой. Это означает, что история одной из сессий будет утеряна. По меньшей мере, это раздражает. К счастью, есть способ исправить это.Откройте ваш файл .bashrc, как указано выше, и добавьте строки:

shopt -s histappend PROMPT_COMMAND='history -a'

Новая история будет добавляться в конец существующей, вместо того, чтобы переписывать неё. Теперь вся ваша история будет сохранена!

Исправьте распространенные ошибки написания
Добавьте в файл .bashrc:

shopt -s cdspell

Простые ошибки, такие как «otp» вместо «opt», или «ect» вместо «etc», будут игнорироваться.

Уберите дубликаты в истории
Когда-нибудь читали свою историю команд и находили, что она в основном состоит из ls, pwd и exit? А как насчет набора одних и тех же команд вновь и вновь, таких как считывание содержимого лога?Добавьте

export HISTCONTROL="ignoredups"export HISTIGNORE="&:ls:[bf]g:exit”

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

Исправьте многострочные команды
Добавьте

shopt -s cmdhist

к .bashrc.Это позволит вам быть уверенным в том, что команды в несколько строк будут оставаться едиными в истории.

Заключение
Итак, вот 5 вещей, которые сэкономили мое время, — если вы знаете другие трюки, дайте мне знать о них в комментариях.

Опции CFLAGS FreeBSD

Опции CFLAGS FreeBSD:
1. «-О» Компилятор пытается сократить как размер кода, так и время его выполнения. И при этом не выполняет модификаций, которые могут затруднить отладку программы. Включает опции -fno-optimize-size, -fdefer-pop, -fthread-jumps, -fguess-branch-probability, -cprop-registers и-fdelayed-branch. Флаг -fomit-frame-pointer устанавливается только если применяемый отладчик способен работать без использования регистра указателя кадра стека.

2. “-О0″ Действует по умолчанию. Отключает любые оптимизации размера кода и устанавливает флаг -fno-merge-constants.

3. “-О1″ То же, что -О

4. “-О2″ На этом уровне применяются все виды оптимизации, которые не требуют вычисления оптимального выбора между размером и скоростью кода. Кроме флагов, устанавливаемых при -О, дополнительно задействует следующие опции -foptimize-sibling-calls, -fcse-follow-jumps, -fcse-skip-blocks, -fgcae, -expensive-optimizations, -fstrength-reduce, -frerun-cse-after-loop, -frerun-loop-opt, -fcaller-aaves, -fforce-mem, -fpeephole2, -fshedule-insns, -fshedule-insns-after-reload, -fregmove, -fstrict-aliasing, -fdelete-null-pointer-checks и -freorder-blocka. Этот уровень оптимизации не разворачивает циклы, не выполняет оптимизацию подстановок (inlining) и переназначение регистров.

5. “-О3″ В дополнение к опциям, включаемым при -О2, устанавливает также -finline-functions и -frename-registers.

6. “-Os” Оптимизирует размер программы. Устанавливает все опции, действующие при -О3. Устанавливает опции -falign-loops, -falign-jumps, -falign-labels и -falign-functions с параметром =1, что не допускает вставку пустого пространства для применения выравнивания.

Выдернуто из комментариев на http://www.lissyara.su/?id=1326 .

Как удалять старые бэкапы?

один из способов:

/usr/bin/find /var/backup/ -name “*” -mtime +10 -print | /usr/bin/xargs rm -rf

Итого: удаляем из папки /var/backup/ все то, что были изменено более 10 дней назад.

Шпаргалка по Unix (FreeBSD, Linux and etc…)

Такой… Мини-справочник для начинающих.

http://cb.vu/unixtoolbox.xhtml

Ну и в PDF: http://cb.vu/unixtoolbox.pdf