Основы навигации
команда 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 — команда, выключающая ваш компьютер без временной задержки и ненужных вопросов.
(Две последние команды выполняются исключительно из-под аккаунта администратора.)
Конечно, немногие пользователи используют возможности терминала в повседневной жизни. Кому-то это кажется древним и отжившим анахронизмом, кого-то отталкивает необходимость запоминать довольно большой список необходимых команд, в то время, когда большинство требуемых задач можно выполнить при помощи обычной мыши. Но, раз начав работать с терминалом, вы сами довольно быстро оцените возможности, которые он вам предоставляет.
Источник
Секреты Терминала. Часть 4: Операции над объектами
Мы возвращаемся к нашему циклу статей о Терминале Mac OS X, где излагаются премудрости работы на Маке через командную строку. Сегодня мы подходим к самому важному уроку — операции над файлами и папками. Мы рассмотрим команды для копирования, перемещения, переименования и удаления объектов — cp, mv, rm. Не удивляйтесь, что для четырёх названных действий предназначены три команды. Как вы узнаете из дальнейшего повествования, одна из них умеет гораздо больше, чем кажется сначала.
Итак, начнём с копирования и команды cp.
Стандартный синтаксис команды копирования такой:
cp -(параметры) (что копируем) (куда копируем)
Параметры команды, путь к копируемому файлу и адрес для размещения копии разделяются пробелами. А если пробел есть внутри какого-то из путей, то, как вы помните, надо либо поставить перед ним обратный слэш (\ пробел) или заключить весь путь в одинарные кавычки (‘путь с пробелами’).
Самое главное в этой команде — именно параметры. Например, без дополнительных параметров вы не сможете даже скопировать папку — по умолчанию команда cp работает только для отдельных файлов.
Этот параметр нужен, если вы копируете папку. Обратите внимание на очень важный нюанс: от того, как вы напишете путь к папке, зависит то, как она скопируется. Возьмёме простой пример: откройте Терминал и введите команду:
Вы получите ошибку о том, что Sites — это директория, и она не может быть скопирована.
Теперь попробуйте немного другой вариант:
Папка с сайтами скопируется на Рабочий стол. Попробуйте третий вариант:
Вы увидите, что на Рабочий стол скопировалась не сама папка сайтов, а только её содержимое.
Запомните это правило — слэш в конце пути копируемой папки не копирует её саму.
Это опасный параметр. Он означает, при совпадении имён копируемого файла с уже имеющимся в папке, куда он копируется, этот файл будет стёрт безо всяких предупреждений и уведомлений.
Это параметр для тех, кто склонен острожничать. При первом же совпадении имён вы увидите вот такой вопрос:
От того, что вы нажмёте на клавиатуре (y или n), будет зависеть судьба файла в папке назначения. Количество таких вопросов будет равно количеству объектов с совпадающими именами.
Это полная противоположность параметру -f. Копирование не перезапишет ни один файл с совпадающими именами и не задаст вам никаких лишних вопросов.
Данный параметр прикажет Терминалу при копировании сохранять атрибуты исходного файла: его владельца, права доступа, группу, время изменения и открытия. Всегда ставьте этот параметр, если вы копируете системные файлы. В противном случае их права будут безнадёжно испорчены, и вас могут ждать серьёзные ошибки в системе.
В этом случае Терминал покажет вам все скопированные файлы в формате «что копировалось» -> «куда скопировалось»:
Как всегда, параметры можно совмещать. И для вашего удобства параметр -R вполне разрешено писать строчными буквами.
Возникает вопрос, а что будет, если задать заведомо противоречащие параметры, например:
Отвечаем: в этом случае имеет значение порядок параметров. Второй параметр окажется сильнее первого, и копирование затрёт совпадающие по именам файлы. А вот если написать:
то параметр -n «пересилит» параметр -f.
(эквивалент cp -dpR ) — в этом случае команда не будет обрабатывать символьные ссылки, рекурсивно обрабатывает все подкаталоги и сохраняет новые атрибуты файлы, вроде имени владельца. Очень удобна в том плане, что всякого рода «ярлыки» и прочие вещи, которые информационной ценности не несут, будут просто проброшены данной командой.
Данная команда имеет двойное назначение — она умеет перемещать и переименовывать объекты. Очень многое здесь зависит от синтаксиса. Общий принцип работы у команды mv схож с cp:
mv -(параметры) (что перемещаем/переименовавываем) (куда перемещаем/во что переименовывыем)
Допустим, вы хотите переименовать файл File1.txt на рабочем столе в File2.txt. В Терминале вам понадобится команда:
Запомните: если в качестве второго адреса в команде mv задан путь к файлу, то произойдёт переименование. Разумеется, папка в первом и во втором пути должна быть одна и та же, тогда это уже не будет просто переименованием. Например, если вы введёте команду:
то с Рабочего стола файл File1.txt бесследно исчезнет. Зато в корне диска появится файл File2.txt с точно таким же содержимым.
И третья ситуация — просто перемещение (без переименования):
Файл будет перемещён с Рабочего стола в ваше папку «Загрузки». Иными словами, если в качестве второго адреса в команде mv задан путь к папке, то произойдёт перемещение.
Теперь о параметрах команды mv. Их всего четыре, и все они совпадают с параметрами команды cp:
- mv -f форсирует перезапись объектов с одинаковыми именами
- mv -n предотвращает такую перезапись
- mv -i каждый раз спросит вас о перезаписи
- mv -v покажет подробные сведения о перемещении
Обратите внимание на отсутствие параметра -R. Команде mv абсолютно всё равно, с чем она имеет дело. Она без лишних вопросов умеет перемещать и переименовывать как файлы, так и папки.
Эта команда предназначена для удаления объектов. Из всех рассмотренных в нашем курсе команд она наиболее опасна. Файлы удаляются навсегда и в обход Корзины. Восстановить их весьма проблематично. Именно поэтому всегда дважды (а то и трижды) проверяйте введённые вместе с командой rm параметры и аргументы!
Синтаксис у неё ещё проще:
rm -(параметры) (путь к удаляемому объекту)
А вот её параметры:
- rm -f форсирует удаление без предупреждений
- rm -i запрашивает подтверждение на стирание каждого объекта
- rm -v удаляет объекты в подробном режиме
Обратите внимание, что rm, как и cp, не умеет по умолчанию удалять директории. В связи с этим для неё актуален параметр -R (или -r).
Есть у rm и ещё один занятный параметр для конфиденциальной информации:
Заглавная P в числе параметров не просто удаляет файл, но и трижды перезаписывает место на диске, где он хранился, сводя вероятность восстановления данных к нулю.
Покажем ещё раз опасность команды rm. Допустим, вы хотели удалить папку Temp в корне диска:
и случайно опечатались, поставив пробел после слэша:
Так как у rm есть только один аргумент, она воспримет только то, что находится между параметрами -rf и следующим пробелом. А там у вас / — т.е. всё содержимое диска. А теперь подумайте, что ждёт ваш Мак, если вы выполните эту команду от имени корневого администратора (с приставкой sudo).
В связи с этим, старайтесь не использовать команду rm без параметра -i. Хоть это и нудно, зато обезопасит вас от многих роковых ошибок.
rmdir
Это безопасный аналог команды rm , применим в том случае, когда каталог пуст, в противном случае команда не удалит его, тем самым обезопасив Вас, не стирая папку с файлами, как если бы мы вызвали rm -rf . Настоятельно рекомендуем применять эту команду, если стоит цель удалить заведомо пустой каталог, не стоит применять рекурсивное удаление, мы можем затронуть то, что не хотели бы.
На этом сегодняшний урок по Терминалу можно считать оконченным. Далее по курсу — создание папок и файлов.
Источник