Лёгкая распаковка архивов из командной строки

Изредка требуется распаковать на сервере какой-нибудь архив ( tar.bz2, tar.gz, bz2, rar, tar, 7z и т.д. ). Так как это редкая операция то, естественно, запоминать программу и аргументы для каждого типа смысла нет, тем более что всегда есть Google, который можно спросить. Но каждый раз лезть в Google надоело, поэтому было найдено альтернативное решение.

Читать далее «Лёгкая распаковка архивов из командной строки»

Как не сохранять команду в истории .bash_history

Если Вы пользуетесь терминалом, а Вы им пользуетесь, так как используете Linux, а терминал в некоторых случаях в разы удобнее GUI. То знаете о существовании истории команд, которую можно вызвать для просмотра, выполнив команду history , и которой можно управлять, используя специальный синтаксис. Также Вам известно, что эта история храниться в файле .bash_history в домашнем каталоге Вашего пользователя. Но как сделать так, чтобы выполняемая команда не записалась в эту историю?

Проще, чем можно было предположить

Автодополнение после sudo

После установки Ubuntu 9.10 почему-то перестало работать автодополнение команд (по Tab) в командной строке. Лечится это элементарно. Нужно создать файл ~/.bashrc (~/ означает домашний каталог, а точка в начале имени файла означает что он по-умолчанию невидимый) и написать в нём:

complete -cf sudo

По аналогии можно включить автодополнение после команд gksu (в среде GNOME) и kdesu (в среде KDE):

complete -cf sudo gksu kdesu

У меня это начало работать после перезапуска компьютера ( утром 1-го января 🙂 ), но скорее всего нужно только перезапустить DE.

Скрипт автостарта в ubuntu

Иногда нужно чтобы при загрузке Ubuntu выполнила какие-либо действия (к примеру, запустила какую-нибудь программу). Как же это сделать?

Всё просто как 3 копейки!

1. Нужно создать файл с командами, которые нужно выполнить при старте системы:

sudo nano /etc/init.d/autostart.script

Как понятно, autostart.script это название файла в котором будут записаны команды и оно может быть любым, но не должно совпадать с именами уже существующих файлов в папке /etc/init.d/.
В первой строке файла должно быть указано какая оболочка или интерпретатор будет выполнять команды в файле. Если вы хотите использовать те же команды, что и в терминале, то файл должен начинаться со строки:

#!/bin/bash

2. Нужно разрешить файлу выполняться:

sudo chmod +x /etc/init.d/autostart.script

3. Рассказываем системе что этот файл нужно исполнять при старте системы:

sudo update-rc.d autostart.script defaults 95

Где 95 это порядок в очереди исполнения. Подробнее можно узнать из

man update-rc.d

Перезапускаем систему и радуемся результату 🙂

P.S.
Для удаления из автостарта нужно выполнить:

sudo update-rc.d autostart.script remove

Трюки в bash

Те кто перешёл на Linux скорее всего уже не раз использовали командную строку для установки или настройки чего либо. В начала мне, как и всем кто был воспитан на Windows, такой способ управления компьютером казался очень сложным и не правильным. Но чем больше я работал с терминалом, тем больше я понимал всё удобство работы именно таким способом.

Особенно удобно стало работать в терминале, когда я узнал о специальных командах bash.

История и bang-bang

История команд — очень удобный инструмент. С помощью стрелок вверх-вниз можно перемещаться по истории введённых команд. Кроме того, с помощью команды history можно просмотреть всю историю команд:

190 ps axu | grep htt
191 /www/bin/apachectl start
192 vi /usr/local/lib/php.ini
193 cat /www/logs/error_log
194 ps -auxw | grep http
195 pwd

Ничего удивительного.
Гораздо интереснее то, что называется bang-bang, или команда !!
!! означает последнюю команду в истории. Т.е. ввод !! в данном случае аналогичен вводу pwd.
Но и это еще не все. Можно ввести ! . ! ps в данном случае вызовет ps -auxw | grep http. Но будьте внимательны и сообщайте восклицательному знаку достаточно символов команды. Например ! p в данном случае будет аналогично pwd, а не ps -auxw | grep http (поскольку pwd ниже в истории) как возможно хотелось бы.

: p не просто смайлик

Для того чтобы избежать конфузов при использовании ! можно добавлять к нему смайлик : p. Это заставит bash вывести то, что он собирался выполнить. Кроме того, : p достаточно умен для того, чтобы добавить выведенную команду в историю.

В качестве примера:
! ps: p в нашем случае вернет ps -auxw | grep http. Убедившись что это именно то что нужно, можно ввести !! и bash выполнит ps -auxw | grep http.

Другие способы использования истории

Наверное самый примитивный способ — вызвать команду history, узнав номер необходимой команды, а затем использовать ! N, где N — номер команды в истории (например, !192). Не следует пренебрегать этой возможностью. Иногда запомнить !123 для какой-то постоянно нужной команды гораздо проще чем пользоваться другими способами.
Кстати, : p работает и тут.

Еще один удобный способ — нажать ^r (Ctrl-r) и начать вводить первые символы нужной команды. bash будет искать в истории подходящие команды.

Работа с агрументами

!$ (bang-dollar) означает последний аргумент последней команды.
К примеру тут:
ls /some/long/path/to/dir/
rm -rf !$

В результате выполниться команда rm -rf /some/long/path/to/dir/.

Кстати, : p тут тоже работает.

!* похожа на !$, но превращается во все аргументы последней команды.

Шапочки

Наверняка вы не раз вводили что-то типа
vi /etc/X22/xorg.conf

Это очень легко поправить с помощью шляпок:
^22^11 заменяет 22 на 11 в предыдущей команде. По аналогии всегда можно использовать ^ошибка^исправление.

Автодополнение

Ну и разумеется не стоит забывать про автодополнение. Один Tab дополняет команду насколько можно понять, второй выводит все варианты дальнейшего написания. Однако не следует этим злоупотреблять. Согласитесь, написать less быстрее, чем написать le и долбить по табу.

Алиасы

Полезно дать короткие имена часто используемым командам. Также полезно дать алиасы наиболее частым опечаткам.
Полезными алиасами могут быть:
alias ls='ls --color=auto'
alias mroe='more'
alias H='kill -HUP'
alias ssh-production='ssh www.myproject.com'
alias ssh-qa='ssh qa.myproject.com'
alias sl='ls'

Русификация консоли в Ubuntu

Всё очень просто:
1. Устанавливаем пакет console-cyrillic: sudo apt-get install console-cyrillic
2. Конфигурируем данный пакет: sudo dpkg-reconfigure console-cyrillic
3. Соглашаемся с автоматической загрузкой русской консоли при старте системы
4. Открываем для едактирования файл настроек bash gedit /home//.bash_profile
5. Пишем в конце данного файла слово из трех букв «cyr», естественно без кавычек
6. Все, сохрансемся и перезагружаемся.

Взято отсюда.

Что же выполняется?

Иногда установишь программу, а никаких ярлыков она не создаёт. Запустить её можно только через терминал, набрав в неё её название. Но где файл, который выполняется — загадка (по крайней мере для меня). А каждый раз открывать терминал, что бы запустить программу, неудобно. Но Linux не был бы Linux, если бы…

Если бы не было красивого способа узнать какой именно файл выполняется. Вводим в терминале:
type -all и получаем ответ.

Пример
type -all tomboy
tomboy is /usr/bin/tomboy

P.S.
Как сказал г-н rexima в комментариях:
Можно проще:
which tomboy

И правда, так даже проще, если нужно выяснить какой файл выполняется. А команда, которую я написал, ещё показывает информацию о псевдонимах. Попробуйте сделать:
type -all ls

Материалы распространяются под лицензией Creative Commons: Атрибуция — Некоммерческое использование — С сохранением условий (Attribution-NonCommercial-ShareAlike) 3.0 Unported.
Рейтинг@Mail.ru