Секреты Терминала. Часть 2: Просмотр папок
Сегодня мы продолжаем недавно начатый цикл о премудростях Терминала Mac OS X. В прошлый раз мы рассказали о том, как посредством командной строки перейти в нужную папку. Теперь самое время поговорить о том, как можно ознакомиться с содержимым папки. Хотя сегодняшний урок будет посвящён всего одной команде — ls, но вы увидите, как много дополнительных полезных параметров она имеет. Кроме того, мы вернёмся к разговору о перемещении по папкам и рассмотрим пару важных особенностей Терминала.
Итак, следующей важнейшей командой Терминала является команда просмотра содержимого каталога:
ls — не что иное, как сокращение от английского слова «list». В интерфейсе командной строки не может быть и речи о привычном Finder, и его главные функции выполняют команды cd и ls. Введённая без параметров команда ls покажет вам названия всех видимых файлов и папок внутри текущего каталога:
Но такой сжатой информации вам хватит отнюдь не всегда. Именно на этот случай к команде ls припасено почти три десятка дополнительных параметров. Мы расскажем про самые полезные из них.
Выводит содержимое папки столбиком (на одну строку — один объект).
Покажет все объекты внутри папки, даже те, у которых имя начинается с точки (например .DS_Store), которые всегда скрываются в Finder.
Помечает выводимые объекты в зависимости от их типа. В конце названий папок появится слэш, тех файлов, которые можно запустить прямо из Терминала — звёздочка, у ярлыков — собака (@):
Важное отступление: если диск вашего Мака отформатирован по умолчанию, то для Терминала нет разницы, в каком регистре клавиатуры вы вводите имена файлов: например, папки Downloads, downloads, DOWNLOADS и даже DoWnLoAdS — это одно и то же. Но зато для Терминала важно, в каком регистре вы вводите параметры команд. Например, для команды ls параметры -F и -f, -A и -a, -L и -l — абсолютно разные. Никогда не забывайте об этом, потому что это может привести к неожиданным и непредсказуемым результатам.
Показывает файлы в цвете. Имена папок посинеют, а исполняемых файлов — покраснеют:
покажет размер файлов в человекочитаемом формате. Большие объёмы будут представлены в соответствующих величинах, например, размер песни будет указан в мегабайтах, а какой-то документ будет в килобайтах. Размер папок будет показан непривычно. Будет посчитан размер файла папки. Папка — это файл, который содержит информацию о других файлах, вот, чем больше файлов в папке, тем больше будет указан размер. Но это ни в коем случае не размер содержимого, не стоит пугаться 😉
Пожалуй, это самый полезный параметр. Он показывает подробную информацию по каждому объекту:
Слева показаны права доступа к объекту (это тема нашего следующего разговора), затем цифра, показывающая количество вложенных объектов (для простых файлов там всегда будет стоять единица), затем идут имена владельца и группы владельцев (поговорим о этом заодно с правами доступа), затем — размер объекта в байтах. Справа будут показаны дата изменения и имя файла (папки).
Выводит имена всех объектов одной сплошной строкой через запятую. В большой папке разобрать что-то после ввода такой команды становится невозможно.
Даёт тот же результат, что и ls -l, но вместо имён владельца и группы будут стоять их цифровые коды. Зачем это нужно, расскажем в следующей нашей беседе.
Покажет содержимое не только самой папки, но и каждой подпапки в ней.
Сортирует содержимое папки по имени в обратном порядке.
Сортирует содержимое папки по размеру.
Сортирует содержимое папки по дате последнего изменения.
Отсортирует файлы по суффиксу. .gif окажется выше, чем .jpg , к примеру.
Заметим, что вы можете комбинировать разные параметры, печатая их слитно. Вот что даст команда:
И последнее на сегодня: по умолчанию ls показывает содержимое текущей папки. Но если после параметров ввести через пробел путь к папке или файлу, то сведения будут показаны только по этому объекту. Например,
покажет вам подробную информацию по содержимому корневой папки диска.
ls *тут имя директории* — покажет содержимое указанной директории без перемещения к ней. Имена указываются так же, как уже было рассмотрено в предыдущем разделе. Можно указать относительный или же абсолютный путь. Мы можем увидеть содержимое папки внутри данного каталога или же где-то далеко в файловой системе, указав путь абсолютный. Перемещения при этом не произойдёт.
Мы можем использовать маски имен файлов, чтобы показать именно те типы, которые мы хотим. К примеру, ls dir/*.jpg покажет нам все картинки в директории dir , лежащей там, где мы находимся, мы также можем пройтись по всему домашнему каталогу, используя опцию рекурсивного прохода для данной команды. В данном примере звёздочка заменяет сколь угодно длинную последовательность символов. Мы просто говорим, что там может быть что угодно, хоть ничего, но потом обязательно должен быть суффикс .jpg . Можем ставить вопросительный значок, показывая, что на этом месте должен быть именно один символ, не больше, не меньше. Например, ls 19?.jpg покажет нам все jpg-картинки в данной директории в диапазоне имён он 190 до 199. Так можно по дате искать фотографии, так как многие фотоаппараты в имя файла вкладывают дату, а не просто порядковый номер. Мы можем писать даже что-то вроде 3 , подставляя эту конструкцию в имя файла, таким образом говоря, что вот в этом месте должны стоять цифры из этого диапазона. Это напоминает ранние регулярки до эпохи Perl.
Подытожим. Команда ls может выводить не просто список файлов, а именно тот список, который мы желаем от неё получить. Мы можем говорить что именно и откуда именно нам показать, а комбинация этих опций иногда позволяет заменить этой командой команду find , а ещё можно попутно что-то делать с найденными файлами, используя последовательность команд и передавая вывод одной на вход другой.
В общем случае, каждый символ, предворённый обратной косой чертой теряет свою суть. Так, \* больше не значит «все файлы в данной директории», теперь это — файл с именем, состоящим из одного символа звёздочки. Не следует так именовать файлы, но если встретятся, то мы можем к нему обратиться таким способом, не заключая в кавычки всю строку, это как альтернатива. Вообще говоря, многие и с пробелами писать не рекомендуют, однако уже те времена прошли, автодополнение по кнопке Tab прекрасно и само без нас окружит «проблемное» имя кавычками или обратными косыми чертами.
Запомните ещё одну важнейшую особенность Терминала. Как вы знаете, файлы и папки вполне могут иметь в своих именах пробел. Если вы введёте что-то вроде:
то Терминал любезно напишет вам, что объекта с именем «Новая» не существует. Он будет считать именем папки всё, что указано до первого пробела. Чтобы обойти это ограничение, есть два способа:
1) ввести название папки или файла с пробелом в имени в кавычки
2) перед пробелом поставить обратный слэш:
В следующий раз мы поговорим о важнейшей особенности Mac OS и всех *nix-систем — правах доступа и владельцах, потому что очень часто именно они вызывают много мелких (и не очень) неприятностей.
Источник
Терминал на Mac (macOS): что это, команды, синтаксис – понятный гид для начинающих
Сегодня все мы в 99% случаев работаем с Mac через приятный, понятный и удобный графический интерфейс пользователя. Но при решении ряда специфических задач даже Finder не справится с тем, что сделает старая добрая командная строка…
Например, с её помощью гораздо проще – и быстрее! – искать затерявшийся где-то в недрах системы 5-гигабайтный файл или путь к приложению, которое, как вы думали, уже давно удалено.
Что такое «Терминал»?
Терминал – стандартная системная утилита для взаимодействия с Mac при помощи командной строки. В Linux есть похожий инструмент управления, т.к. обе ОС являются Unix-подобными.
Интерфейс командной строки (command line interface или сокращенно CLI) – он же язык общения с Терминалом – называется bash. Всё, о чем мы расскажем ниже – это bash-команды.
Общие команды для Mac
Основной синтаксис
Bash-команда обычно строится так:
[Команда] [Опции] [Ввод или путь к файлу или директории]
ls – это команда, -la – это соединение двух опций (-l и -a), а /Applications – это путь к списку.
Если вы поймете путь, то поймете и то, как macOS в действительности видит ваши файлы. Как? Да как в матрешке – одна за другой. Например, вот путь к файлу под названием «Мои секреты», лежащему на Рабочем столе: /Users/Yablykworld/Desktop/My Secrets.
Пробелы
С пробелами действует простое правило – ничего лишнего!
Почему? Дело в том, что bash считает пробел концом команды!
Если у вас есть папка с пробелами в названии – например, Yablyk Folder, и вы пытаетесь вывести её содержимое с помощью команды ls /Applications/Yablyk Folder, то соответствующий файл не будет найден, и на выходе появится ошибка:
Чтобы решить эту проблему, понадобятся кавычки или обратный слэш. Вот теперь всё будет правильно:
ls /Applications/»Yablyk Folder» , или
ls /Applications/Yablyk\ Folder
Многим командам требуется доступ с уровня администратора. Если вы сейчас пользуетесь Mac не под аккаунтом его «админа», но знаете пароль, введите в командную строку перед текстом самой команды sudo – (что означает «single user do», «делает один пользователь»). Так вы временно получите привилегии администратора и возможность произвести необходимые операции без смены аккаунта.
Команды Терминала для улучшения продуктивности
- Заменяет: Spotlight
- Почему лучше: работает быстрее, осуществляет поиск и по системным папкам (тогда как Spotlight в них не ищет или плохо индексирует их содержимое).
Синтаксис find состоит из четырех частей:
2. путь к директории, в которой вы хотите искать информацию (например, /Applications);
3. опции (например, -name дает find возможность искать файлы, которые подходят к заданному названию);
4. непосредственно сам поисковый запрос (например, Google Chrome).
Вот как выглядит вся команда в целом:
find /Applications -d 1 -name «*Google Chrome*»
Примечание: «звездочки» (*) указывают на то, что используется regex (регулярные выражения).
- Заменяет:⌘Cmd + I, т.е. команды для отображения информации;
- Почему лучше: может показать сразу несколько папок за один раз, и обычно выполняется быстрее.
du – это сокращение от «disk usage». Команда поможет быстро узнать размер конкретного файла или папки, или даже списка файлов внутри папки.
Лучшие опции для du:
-d («глубина», или depth): если за этой буквой стоит цифра, то find ограничит поиск по директории соответствующим количеством уровней. Например, если вы отдадите вашему Mac команду du:
Терминал выдаст вам информацию только об общем «весе» папок и файлов в папке Applications, без данных о размере подпапок, вложенных в эти папки.
-h (human readable, или «человеко-читаемые»). Выводит размеры файлов в привычных людям величинах – K (килобайтах), М (мегабайтах) или G (гигабайтах).
Команда du в действии:
- Заменяет: ручной перенос папок и файлов в нужное место.
- Почему лучше: быстрее и не требует много ручного труда.
Синтаксис mv очень прост – старый путь меняется на новый:
mv /Users/Yablykworld/Documents/file1 /Users/Yablykworld/Desktop/file1
Эта команда переносит file1 из папки Документы на Рабочий стол.
- Заменяет:⌘Cmd + I (показать информацию).
- Почему лучше: быстрее, умеет отображать информацию о нескольким файлах сразу и имеет богатую палитру настроек.
ls – невероятно мощная. команда для отображения того, что находится в ваших папках. Также она выдает информацию о том, кто имеет право видеть их, есть ли на вашем Mac скрытые файлы или папки, и многое другое.
Лучшие опции для ls:
-l – отображает права для каждого файла в папке, время последнего изменения, владельца файла и его (файла) название.
-a – показывает все файлы в папке, включая скрытые (отличный вариант для библиотеки пользователя, которая в macOS по умолчанию скрыта).
Вот как всё работает:
ls -la /System/Library
mkdir
- Заменяет действие:Finder → Файл → Новая папка.
- Почему лучше: работает быстрее, и задать имя новой папочке можно сразу в командной строке (нет необходимости кликать два раза, как это имеет место быть в графическом интерфейсе).
Создает новые папки в мгновение ока.
- Заменяет: процедуру отправки файлов в Корзину и её очистки;
- Почему лучше: быстрее, плюс удаляются даже те файлы, от которых обычно не получается избавиться с помощью Корзины.
Эта команда раз и навсегда удаляет абсолютно любой файл, который вы поместите в команду. Что, разумеется, требует повышенного внимания – в отличие от Корзины, rm не будет спрашивать «а Вы точно уверены?». Предполагается, что вы знаете, что делаете…
По умолчанию rm удаляет только файлы, папки остаются. Для того, чтобы сразу удалять и их, используйте опцию -R (рекурсивно).
rm -R /Users/Yablykworld/Desktop/Yablyk_Folder
Источник