special

Терминал и его использование для Mac OS X

По теме:


С каждым годом количество свитчеров растет. Причем на Mac переходят не только с Windows, очень часты случаи перехода с Unix.

И если большинству пользователей Unix, привыкших к консольным командам, работа с терминалом в Mac OS X не доставляет никакого дискомфорта, то для мигрантов с Windows ситуация выглядит несколько иначе.

Большая часть таких пользователей редко использует возможности ядра Unix, не видя в этом никакой необходимости.

Естественно, такой пользователь вполне может обойтись и без терминала, но знание хотя бы основных команд в некоторых ситуациях может значительно облегчить жизнь любого обладателя компьютера под управлением Mac OS X, a кому-то просто поможет расширить свой кругозор и лучше понять выбранную им операционную систему.

Учитывая, что этот небольшой обзор ориентирован на людей, никогда не имевших ранее даже минимального опыта работы с Unix-подобными системами, мы начнем с самых азов, постепенно переходя от простого к сложному.

Для начала стоит упомянуть главную команду для любого человека, чувствующего себя не очень уверенно при виде командной строки: man. Это - справка. Добавив к man имя нужной вам команды, вы получите достаточно полную информацию о ней. Для примера введите man man, и вы увидите в терминале более полную документацию по этой команде.

Для выхода используйте клавишу Q.

Да, стоит заметить, что большинство команд в Unux-системах, не требующих вывода информации пользователю, в случае своего успешного завершения вообще ничего не показывают. В тех случаях, когда назначение команды не заключается в выводе информации - на экран выводятся только ошибки и предупреждения о нарушении нормального выполнения команды.

Основы навигации

команда cd. Одна из основных команд, позволяющих осуществлять навигацию по различным директориям. Если, открыв терминал, вы сразу хотите оказаться в определенной директории, скажем, в Documents, достаточно набрать в терминале cd Documents.

cd ~ команда, при помощи которой вы переходите в свою директорию. Для примера, если вы решаете перейти в каталог, где расположены ваши документы, то следующая команда будет выглядеть так: cd ~/Documents.

cd - позволяет вернуться в предыдущую директорию.

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

ls выдает список имен файлов в указанной директории

ls -f показывает файлы с их расширением.

ls -a перечисляет все файлы, включая скрытые.

ls -lo кроме перечисления существующих файлов показывает также их права доступа и дату их создания. Если вы хотите, чтобы были перечислены только файлы, начинающиеся с определенной буквы, например, с Z, наберите ls Z*. Учтите, команда чувствительна к регистру, и если какие-то файлы имеют в начале заглавную Z, а вы набрали обычную z, вы их просто не увидите.

mkdir создает новую директорию. Для примера: набрав команду : mkdir new, вы создадите новую директорию с названием new.

rm удалить файл.

rmdir удалить директорию.

Примеры :

rm new.txt : команда удалит файл new.txt

rmdir new - удаляет директорию с именем new.

Если вы хотите удалить директорию, которая не является пустой, вы либо должны в начале удалить все ее содержимое, либо использовать команду rm -R

rm -R new : удаляет директорию new со всем ее содержимым.

clear - очищает экран терминала. В принципе, иногда достаточно просто сделать «правый клик» на окне терминала и выбрать в контекстном меню - Clear Scrollback.

script - позволяет сохранить в текстовый файл все введенные вами с клавиатуры символы. На практике - чрезвычайно удобная опция, позволяющая вам получить полнейший протокол всей вашей сессии. В файле также будет указаны ее точные дата и время.

Script done on Sat Feb 10 18:21:32 2007

файл будет сохранен с именем typescript в вашей домашней директории.

bc - команда, которая выведет на экран терминала простейший консольный калькулятор.

df - простая команда, которая покажет вам объемы вашего дискового пространства, включая сетевые диски.

du - список всех папок, имеющихся на вашем системном разделе.

Копирование

Копирование файлов и папок, осуществляется при помощи команды cp. Допустим, вы хотите скопировать файл note.txt с рабочего стола в каталог Documents. В этом случае потребуется набрать в терминале cp note.txt ~/Documents

Необходимо учитывать, что если файл с таким же именем существует на новом месте, он будет удален и заменен скопированным файлом без предупреждений и возможности восстановления.

Если при этом вы желаете не просто скопировать файл, а скопировать и сохранить его уже с новым названием (для примера возьмем в качестве нового названия new.txt), то требуемая команда будет выглядеть следующим образом - cp note.txt ~/Documents/new.txt. И в вашей папке появится файл new.txt, являющийся копией файла note.txt с рабочего стола.

Для того, чтобы скопировать нужный файл в исходный каталог, но уже с новым именем, достаточно будет набрать cp note.txt new.txt

cp -R Documents "Documents backup" - команда, посредством которой вы сохраняете резервную копию всей вашей директории Documents. Кавычки необходимы, так как в названии директории присутствует пробел.

sudo cp -Rp /Users "/Users backup" - команда позволяет скопировать всю директорию /Пользователи (включая все домашние папки, находящиеся внутри), сохраняя при этом как можно больше файловой информации (принадлежность, права и т.д., но не ветвь ресурса) с названием Users backup. Вы должны выполнять эту команду из под учетной записи администратора, так, в данном примере используется sudo, позволяющая получить временный доступ с правами root. Если вы выполняете команду из-под учетной записи пользователя, вас попросят ввести пароль администратора.

ditto позволяет скопировать директорию, но с сохранением атрибутов скрытых файлов.

ditto Documents "Documents backup" копирует всю директорию под именем "Documents" и называет копию директории "Documents backup".

mv - переименование файлов. Для примера, набрав в терминале mv new old, вы переименуете файл или директорию с названием new в old. А следующей командой: mv old ~/Documents - вы переместите его из текущей директории в вашу директорию Documents.

Поиск

find - поиск файлов, соответствующих заданным вами критериям.

Примеры:

find / -name (имя файла без скобок) : команда осуществит поиск нужного вам файла по всей файловой структуре, включая все смонтированные диски (в том числе и сетевые) и отобразит полный путь к нему.

find -x/ -name (имя файла без скобок) : то же самое, но поиск будет осуществляться исключительно на загрузочном диске вашей системы.

find . -name '*имя файла*' : (с сохранением указанного синтаксиса) - поиск будет осуществлен в текущем каталоге и всех его подкаталогах.

find . -mtime -(здесь нужная вам цифра, вводить без скобок) : эта команда, как и предыдущая, осуществляет поиск в текущем каталоге и всех его подкаталогах, но ее отличие в том, что указав, к примеру, цифру 3 (find . -mtime -3) команда выдаст вам все файлы, которые были изменены в течение последних трех дней. Указав 0, команда найдет только те файлы, дата которых была изменена.

Процессы

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

ps -ax показывает список всех процессов

ps - aux показывает список всех процессов, запущенных в системе на данный момент, а также дополнительную информацию о них, включая загрузку процессора, время и пр.

top выдает список основных задействованных процессов и постоянно обновляемую информацию о них. Нагрузка на процессор, размер задействованной памяти, время и пр.

top -us5 то же самое, но с сортировкой процессов, по объему их нагрузки на процессор.

kill - команда, "убивающая" зависший процесс или посылающая ему сигнал.

sync - команда, принудительно записывающая содержимого дискового кэша на жесткий диск.

Пример: набираем в терминале команду top, в появившемся списке процессов выбираем нужный, скажем, процесс 2200, (в моем случае им оказался совершенно ненужный мне AppleSpell) нажимаем Q для выхода из меню - и после kill 2200. Еще раз набираем top - и убеждаемся, что больше упомянутый 2200-го процесс больше не фигурирует в списке запущенных процессов.

lsof - команда, показывающая список открытых файлов в вашей системе, и файлов, к которым в данный момент обращаются прикладные программы, для примера, если у вас запущен торрент клиент, команда покажет даже те файлы, которые вы скачиваете в данный момент, или раздаете. Естественно, чтобы увидеть полный список, нужно обладать правами администратора.

sudo lsof - список открытых файлов, включая всю систему. Требуется пароль администратора.

И наконец, команда sudo lsof -i - команда, позволяющая вам увидеть все открытые сетевые соединения в вашей системе.

Работа с текстом

pico и nano - простейшие текстовые редакторы для терминала. Довольно ограничены по функционалу. Для выхода из pico или nano нажмите сочетание CTRL+X

more или less - отображает содержимое текстового файла по одной странице. Для перехода на следующую нажмите пробел. Не работает с документами Word, PDF, RTF и любыми файлами отличным от txt формата.

emacs - GNU Emacs - довольно продвинутый редактор, разработанный под X Window и теряющий часть своего функционала при запуске в терминале. Но несмотря на это, позволяет видеть одновременно несколько файлов, перемещать текст между файлами и редактировать во время работы команд оболочки. Программа, вполне заслуживающая отдельного обзора, поэтому здесь мы не будем подробно останавливаться на нюансах его настройки и использования.

Жесткий диск

diskutil выдает список всех возможных команд для операций с вашим жестким диском. От просто просмотра командой diskutil list до таких операций, как монтирование разделов, починка всем знакомых «пермишонов» или формата. Говоря проще, перед вами все опции (на самом деле их даже больше) уже знакомой вам Disk Utility с той разницей, что все действия вы выполняете через интерфейс командной строки. Вот пример лишь нескольких команд, предлагаемых вам diskutil

diskutil resizeVolume позволяет изменять размер выбранного раздела

diskutil partitionDisk позволяет совершать операции над диском и его отдельными разделами. Форматирование, выбор файловой системы и пр.

diskutil eraseDisk стирает информацию с вашего жесткого диска.

diskutil info / выводит информацию о загрузочном разделе вашего диска. Его имя, тип файловой системы, общий размер, количество общего и свободного пространства и пр.

diskutil info /Volumes/здесь имя раздела то же самое, но для любого другого, смонтированного, но незагрузочного раздела вашего жесткого диска.

sudo diskutil repairPermissions / еще одна команда для «починки пермишнов» на загрузочном диске с вашей MacOS X. При ее выполнении от вас потребуют ввести пароль администратора.

sudo passwd root - команда, которая может вам понадобиться только в одном случае - если вы забыли root пароль, пароль администратора.

reboot - перезагрузка компьютера

shutdown -h now - команда, выключающая ваш компьютер без временной задержки и ненужных вопросов.

(Две последние команды выполняются исключительно из-под аккаунта администратора.)

Конечно, немногие пользователи используют возможности терминала в повседневной жизни. Кому-то это кажется древним и отжившим анахронизмом, кого-то отталкивает необходимость запоминать довольно большой список необходимых команд, в то время, когда большинство требуемых задач можно выполнить при помощи обычной мыши. Но, раз начав работать с терминалом, вы сами довольно быстро оцените возможности, которые он вам предоставляет.


Created/Updated: 25.05.2018