Насколько я представляю среднего маковода, к возможностям 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) и вообще как-то уютнее.
iTerm тоже раньше пользовался, но теперь в стандартном терминале.
1. Он везде есть в MAC OS по умолчанию, и если где-то садишься на чужой тазик, то iTerm там может и не быть.
2. Не нашел уж больших отличий iTerm от стандартного. В SL так точно.
1. Мне пока ни разу не потребовалось запускать на чужих компьютерах терминал. Так обычно есть вещи поинтереснее :)
2. Стандартный терминал ужасно настроен: home/end pgup/pgdn не работают; в mc вверх-вниз перемещаться можно только кнопками на цифровой клавиатуре и т.п., я всего уже не помню.
Вполне вероятно, что все это можно настроить. Я честно смотрел настройки клавиатуры и пытался что-то улучшить. Но там надо поштучно назначать кнопки, а это муторно и разбираться надо. Мне нисколько не стыдно, что я не знаю что такое “33[31~” и что надо назначить на PgUP чтобы в mc листался список файлов, а не буфер прокручивался.
В чем-то Терминал лучше, я соглашусь. Но оценить мне это сложно, входной порог не могу преодолеть.
Про расшаривание файлов это классно.