Хитрые команды в терминале
24 марта
Насколько я представляю среднего маковода, к возможностям Terminal прибегают не многие. Мне приходится иногда, так что я с интересом прочитал статейку, в которой собраны 10 полезных однострочных команд shell. Некоторые команды специфичны для bash (разновидность шелла), некоторые не работают на Mac OS, но есть и удивительные открытия.
1. Запустить последнюю команду от имени root
$ sudo !!
Это стыдно не знать, но я периодически матерюсь и набираю команду заново, об этом способе не вспоминаю, увы. Команда полезна если вы попытались выполнить операцию, для которой требуются «рутовые» права, но забыли написать sudo. Что здесь есть: sudo без параметра выполняет команду от имени «суперюзера», а !! — это предыдущая команда из истории shell, которую можно также записать !-1.
Еще немного об истории: history показывает пронумерованный список команд, !nn вызывает команду за номером nn в списке, !-n вызывает n-ную команду из истории, начиная с конца. Если добавить в команду модификатор print (!-nnn:p) вытаскивает из истории команду, но не выполняет ее. Команда !smthng вызывает из истории последнюю команду, начинающуюся со строки smthng.
499 mtr google.com 500 exit 501 history 502 ping 8.8.8.8 503 cd ~ 504 pwd 505 history $ sudo !499 sudo mtr google.com Password: $ sudo !502:p sudo ping 8.8.8.8 $ !pi:p ping 8.8.8.8 $
2. Быстро «расшарить» текущую папку по HTTP
$ python -m SimpleHTTPServer 8080
Этой команды я не знал. Иногда бывает полезно, когда надо поделиться с кем-то файлами ненадолго. Сервер будет «слушать» все доступные IP адреса, порт по-умолчанию 8000, но можно указать свой — 8080 в команде выше это порт и есть.
Зайти на ваш сервер можно по адресу http://ваш-ip-адрес:8080/ либо http://имя-компьютера:8080/. Если в папке есть файл index.html, то он будет стартовым документом, если нет — будет отображаться список документов в папке.
$ cd ~/Library Library$ python -m SimpleHTTPServer 8080 Serving HTTP on 0.0.0.0 port 8080 ...

Сервер не прячет «скрытые» файлы, название которых начинается с точки.
3. Перейти в предыдущий каталог
$ cd -
Каждый раз после смены текущего каталога при помощи команды cd, в системе сохраняется переменная $OLDPWD, в которой хранится прежняя папка. Символ — (минус) в команде cd заменяется значением этой переменной.
$ cd ~/Library Library$ pwd /Users/Username/Library Library$ cd ~/Downloads Downloads$ pwd /Users/Username/Downloads Downloads$ cd - /Users/Username/Library Library$
Бывает удобно, если вы куда-то ненадолго «отлучаетесь» из рабочего каталога, а потом хотите быстро вернуться назад.
Остальные хитрые команды мне не особо интересны: редактором vim я не пользуюсь, mtr в стандартной поставке Mac OS нет, трюк с заменой части строки в команде мне не пригодится.
От себя добавлю — большинство неудобств работы в командной строке устраняются заменой стандартного Терминала на iTerm. Он тоже не красавец, но там хотя бы нормально работают стрелки, клавиши home/end, спокойно можно пользоваться mc (midnight commander) и вообще как-то уютнее.
