Основы навигации
команда cd. Одна из основных команд, позволяющих осуществлять навигацию по различным директориям. Если, открыв терминал, вы сразу хотите оказаться в определенной директории, скажем, в Documents, достаточно набрать в терминале cd Documents.
команда, при помощи которой вы переходите в свою директорию. Для примера, если вы решаете перейти в каталог, где расположены ваши документы, то следующая команда будет выглядеть так: cd
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
Необходимо учитывать, что если файл с таким же именем существует на новом месте, он будет удален и заменен скопированным файлом без предупреждений и возможности восстановления.
Если при этом вы желаете не просто скопировать файл, а скопировать и сохранить его уже с новым названием (для примера возьмем в качестве нового названия 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 пароль, пароль администратора.
ifconfig — команда, которая дает больше возможностей для контроля параметров ваших сетевых соединений, но имеет один ощутимый минус по сравнению с настройкой через панель System Preference — после перезагрузки компьютера, сделанные вами изменения часто теряются.
ftp — утилита и одновременно протокол (File Transfer Protocol) для передачи файлов. После установления связи с другой машиной (ftp-сервером) вам, скорее всего, будет предложено ввести свое имя (login) и пароль (password) на этой машине. После подключения, Вы сможете с помощью команды «cd » перемещаться по директориям машины-сервера, с помощью «ls» просматривать содержимое выбранных каталогов, с помощью команды «get » перекачивать файлы с сервера на клиентскую машину (в данном случае клиентом будет узловая машина), а с помощью команды «put «, наоборот, переслать файл с клиентской машины на сервер. Для окончания сеанса связи служит команда «quit». Если вы хотите, чтобы передача данных происходила в фоновом режиме, можно воспользоваться командой dlftp
host — выполняет поиск с помощью службы DNS по заданному имени или IP адресу и выдает информацию о конкретном узле Интернета.
nslookup — Выполняет «поиск имени узла» по заданному IP адресу.
dig — несет те же функции.
telnet — команда, запускающая утилиту и протокол для подключения к удаленной системе.
rlogin — команда расшифровывается как Remote login и инициирует сессию с удаленной системой. По сравнению с ssh — небезопасна в использовании.
rsh (Remote shell) — исполняет команду на удаленной системе.
rcp (Remote copy) — копирование файлов между двумя машинами через сеть. Как и предыдущие r* команды, небезопасна в использовании и по возможности от нее стоит лучше воздержаться в пользу ssh.
ssh (Secure shell) — устанавливает сеанс связи и выполняет команды на удаленной системе. Выступает в качестве защищенной замены для таких команд как telnet, rlogin, rcp и rsh
write — команда запускает утилиту, которая позволяет передать текст сообщения на другой терминал. Работает в интерактивном режиме, поэтому, как правило, не употребляется в сценариях.
finger — Возвращает информацию о пользователях в сети. По требованию эта команда может выводить содержимое ряда файлов, указанного пользователя. В крупных сетях данная служба часто отключается по соображениям безопасности.
whois — команда, отвечающая за поиск в Domain Name System — DNS. При использовании ключа -h вы указываете, на какой именно из существующих whois серверов будет отправлен ваш запрос.
команда ping, в отличие от множества уже приведенных здесь команд, знакома и большинству Windows — пользователей. Чаще всего она применяется как инструмент для диагностики соединений, ее задача — передача пакета ICMP echo_request.
reboot — перезагрузка компьютера
shutdown -h now — команда, выключающая ваш компьютер без временной задержки и ненужных вопросов.
(Две последние команды выполняются исключительно из-под аккаунта администратора.)
Конечно, немногие пользователи используют возможности терминала в повседневной жизни. Кому-то это кажется древним и отжившим анахронизмом, кого-то отталкивает необходимость запоминать довольно большой список необходимых команд, в то время, когда большинство требуемых задач можно выполнить при помощи обычной мыши. Но, раз начав работать с терминалом, вы сами довольно быстро оцените возможности, которые он вам предоставляет.
Источник
[Mac OS X] Начинающим о работе в Терминале
В OS X обычный пользователь практически не сталкивается с необходимостью использовать командную строку, поскольку большинство его нужд покрывает то, что реализовано в графическом интерфейсе системы.
Другое дело, когда нужны некоторые скрытые возможности, которые недоступны из графического интерфейса. Собственно в этой рубрике мы частенько прибегаем к извлечению этих скрытых возможностей при помощи командной строки. А потому я и решил немного рассказать о программе Терминал и командной строке, а так же дать пару советов новичкам, которые позволят им ощущать себя в ней более комфортно.
Небольшое введение
Начнем с вопроса, что такое Терминал? Прежде всего, это приложение, внутри которого выполняется командный интерпретатор. Его еще часто называют интерфейсом командной строки. Он интерпретирует команды специального языка скриптов.
Пояснение слова скрипт
Правильнее «скрипт» следует называть сценарием, поскольку это одно из значений английского слова — sript. Да и фактически «скрипт» является сценарием. Но термин «скрипт» очень прочно устоялся среди программистов, а потому я немного нарушу правила русского языка и буду называть его именно – скрипт. Тем более что и само слово «сценарий» заимствовано русским языком и родным ему не является.
Языки скриптов бывают разные, но есть наиболее распространенный набор таких языков, а соответственно и их интерпретаторов.
В OS X, по умолчанию используется командный интерпретатор bash . Это улучшенный вариант интерпретатора Bourne shell, который обычно называют просто shell . И он тоже присутствует в нашей системе в виде файла /bin/sh . Правда не используется.
В настоящее время bash – фактически стандарт де-факто в большинстве Unix-подобных систем.
Так же достаточно популярен интерпретатор zsh , который в свою очередь является улучшенным bash (и он тоже есть в нашей системе), но стандартом де-факто он не стал. Возможно пока. Существует и еще целый ряд командных интерпретаторов, не получивших такого большого распространения как bash .
Найти информацию обо всех перечисленных интерпретаторах несложно в «Википедии».
Командная строка
Когда вы запускаете программу Терминал, то видите в ее окне командную строку, которая в моей системе выглядит так:
Командная строка начинается с названия компьютера (у меня он называется iMac), затем следует название текущего каталога — по умолчанию открывается домашний каталог пользователя, который в Unix-системах обозначается знаком
(тильда). Далее следует имя пользователя (в моем случае — gosha ), а за ним знак $ , который называется приглашением – приглашением вводить команды интерпретатору.
Вид командной строки и приглашения можно настраивать, а в минимальном виде это будет просто знак $ . Именно после знака $ и вводятся все команды интерпретатору. Это место обозначает курсор — мигающий прямоугольник (его вид тоже можно настраивать).
Примечание: в заголовке окна Терминала вы видите текущий каталог (в данном случае это домашний каталог, а потому он обозначен домиком), затем имя пользователя, затем название используемого интерпретатора (в данном случае — bash ) и размер окна в символах.
Язык скриптов bash
Командный интерпретатор bash , как я уже написал выше, интерпретирует команды специального языка скриптов. Язык скриптов достаточно несложный язык программирования, который, как и любой язык программирования, предназначен для передачи команд и данных от человека к компьютеру.
Самой простой командой этого языка является запуск программы – она состоит только из имени файла программы и, если необходимо, то и полный путь до этого файла, а так же, возможно, с последующими за именем файла ключами и параметрами, которые дают различные указания выполняемой программе.
Приведу пример. Вы хотите посмотреть содержимое текущего каталога (при запуске Терминала, по умолчанию это будет ваш домашний каталог). Для этого в системе есть программа, находящаяся в файле ls . Ее запуск в командном интерпретаторе заключается во вводе имени файла этой программы и нажатием клавиши Enter:
Небольшое, но важное пояснение
На самом деле, этот файл находится в каталоге /bin и полностью этот файл обозначается как /bin/ls . Но в интерпретаторе есть специальный механизм, позволяющий не вводить полный путь до некоторых файлов программ. Этот инструмент — переменная окружения, которая называется PATH (путь) и содержит список каталогов. Интерпретатор, получив в качестве команды имя файла, указанное ему без пути, просто ищет этот файл в каталогах, перечисленных в переменной окружения PATH . Если находит, то запускает его на выполнение, если не находит, то выводит сообщение — файл не найден.
Посмотреть содержимое переменной PATH вы можете командой:
Естественно эту переменную можно настраивать, но какой-то особой необходимости в этом у обычного пользователя не возникает, а потому я опущу этот вопрос.
Ну а теперь перейдем собственно к советам.
Совет 1 — автодополнение
При использовании командной строки очень часто приходится вводить имена файлов – обычно это файлы различных команд, и вводить имена файлов или каталогов, передаваемых в качестве параметра командам, которые необходимо набирать с указанием полного пути до них. И вот для того, чтобы не ошибиться при наборе, в bash имеется механизм, называемый автодополнением.
Примечание: в дальнейшем, для удобства, я буду называть имя файла команды просто командой. Это общепринятая практика.
Смысл этого механизма заключается в том, что когда вы начинаете набирать команду, вводите первые несколько букв и нажимаете клавишу Tab, в результате чего набор команды будет завершен автоматически. Это же работает и при наборе пути и имен файлов, передаваемых командам в качестве параметров.
Для того, чтобы понять, как это работает, приведу пример. Пусть мы хотим ввести команду diskutil . Начинаем вводить disku и нажимаем клавишу Tab, команда будет дописана автоматически – diskutil . А теперь попробуйте ввести на одну букву меньше — disk и нажать Tab — прозвучит звуковой сигнал и команда дописана не будет. Этот звуковой сигнал предупреждает нас, что есть несколько вариантов команд, начинающихся с букв disk . А вот для просмотра этих вариантов нажмите второй раз клавишу Tab и все эти варианты будут показаны:
Как видно на картинке, имеется шесть команд, название которых начинается с disk , а потому интерпретатор предлагает уточнить следующую букву. В нашем случае нужно ввести букву u , для того, чтобы интерпретатор смог понять, что нам нужна именно команда diskutil , поскольку это единственная команда, начинающаяся с букв disku и затем нажать клавишу Tab. Команда будет дописана полностью.
Попробуйте ввести только буквы di и нажать два раза клавишу Tab. Команд, начинающихся на эти две буквы, будет еще больше. А вот если бы в системе была только одна команда, начинающаяся с букв di , то после первого же нажатия клавиши Tab, она была бы дописана полностью, поскольку интерпретатору не приходилось бы выбирать из разных вариантов.
Точно так же это действует и при наборе имен каталогов и файлов, передаваемых в качестве параметров командам.
Пример. Предположим мы хотим посмотреть содержимое вашего каталога Загрузки при помощи команды ls .
И сразу небольшое отступление.
На самом деле, каталога с названием Загрузки , в вашем домашнем каталоге нет. Это программа Finder, так показывает вам название каталога Downloads . То есть фактически переводит на русский язык слово Downloads . Сделано это для удобства пользователей.
Вы можете убедиться в этом, взглянув на второй сверху снимок экрана, где мы командой ls выводили содержимое домашнего каталога. Как видите, там нет каталога с названием Загрузки , но есть каталог Downloads . Точно так же вы там не увидите каталогов с названиями Библиотеки , Документы , Изображения , Музыка , Общие , Сайты и Фильмы , которые показывает вам программа Finder как перевод с английского на русский названий каталогов: Library , Documents , Pictures , Music , Public , Sites и Movies соответственно.
Итак, вернемся к просмотру содержимого каталога Загрузки (а на самом деле Downloads ) командой ls . Нам нужно ввести название каталога в качестве параметра к этой команде. Набираем ls Dow и нажимаем клавишу Tab, получаем команду ls Downloads , в результате выполнения которой и получим содержимое каталога Загрузки ( Downloads ).
И еще одно отступление.
На самом деле в Unix -системах в этом случае вводят не ls Downloads , а ls ./Downloads . Тем самым обозначая, что каталог Downloads находится в текущем каталоге. Точка — обозначение текущего каталога. Но в реализации bash в OS X , сделано небольшое послабление пользователям и в текущем каталоге, можно ./ опускать, так как будто в переменной окружения PATH прописан текущий каталог, хотя на самом деле его там нет. Вы можете убедиться в этом, выполнив команду echo $PATH . Зачем это было сделано для меня остается загадкой, но таковы реалии OS X. Естественно можно набирать и канонически для Unix-систем – ./Downloads .
Итак, мы ознакомились с автодополнением. Этот инструмент позволяет очень быстро и безошибочно вводить команды. Между прочим, многие файловые операции (копирование, перемещение, переименование, удаление) бывают гораздо проще и их быстрее выполнить именно в командной строке, используя механизм автодополнения. 🙂
Совет 2 – история команд
Это еще один механизм, облегчающий работу в командной строке. Дело в том, что интерпретатор bash запоминает все команды, которые вы выполняли. Он сохраняет всю историю команд в скрытом файле вашего домашнего каталога с названием .bash_history . Увидеть этот файл можно при помощи команды ls с ключом -la , т.е. ls -la . Попробуйте.
Пользоваться историей команд очень просто – при помощи клавиш навигации — Стрела вверх и Стрелка вниз. Нажмите первую из них и вы увидите в командной строке предыдущую выполненную команду. Последующие нажатия этой клавиши будут последовательно выводить ранее выполненные вами команды. Соответственно вторая клавиша листает список выполненных команд в обратном направлении.
Это удобно использовать собственно для повторения выполненных команд. Но и очень удобно для их модификации. Например, в моих статьях часто встречаются команды вида defaults write … , которыми мы обычно включаем некоторые скрытые настройки OS X. А отмена включения этих настроек часто делается командой defaults delete … , которую очень просто получить, вызвав из истории предыдущую команду defaults write … и просто исправить ее на соответствующую команду defaults delete… , а не вводить ее с нуля.
Так же, если вы ввели команду с ошибкой и попытались ее выполнить, то после получения сообщения об ошибке, гораздо проще бывает не вводить команду заново, а исправить ошибку в предыдущей, вызвав ее нажатием на клавишу Стрелка вверх, а затем внеся исправления.
Надеюсь, это небольшое введение в основы мира командной строки, не слишком вас утомило. 🙂
Источник