Touch mac os терминал

[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 , как я уже написал выше, интерпретирует команды специального языка скриптов. Язык скриптов достаточно несложный язык программирования, который, как и любой язык программирования, предназначен для передачи команд и данных от человека к компьютеру.

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

Читайте также:  Itunes and windows media player

Приведу пример. Вы хотите посмотреть содержимое текущего каталога (при запуске Терминала, по умолчанию это будет ваш домашний каталог). Для этого в системе есть программа, находящаяся в файле 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 соответственно.

Читайте также:  Psr exe не запускается windows 10

Итак, вернемся к просмотру содержимого каталога Загрузки (а на самом деле 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… , а не вводить ее с нуля.

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

Надеюсь, это небольшое введение в основы мира командной строки, не слишком вас утомило. 🙂

Источник

Секреты Терминала. Часть 5: Создание объектов

Пришла пора продолжить наш цикл о командной строке Mac OS X. Сегодняшний урок будет посвящён двум важным командам — mkdir и touch, одна из которых создаёт папки, а другая — файлы (и не только). Предвосхищаем самый главный вопрос, который у вас может возникнуть: казалось бы, пользоваться Терминалом для такой элементарной операции, как создание папок — только создавать себе дополнительные сложности. Но если вам понадобится создать пять папок, в каждой из которых будет ещё по пять папок, да ещё и задать им соответствующие права доступа, тогда вы оцените преимущества командной строки по достоинству. Другой вопрос, а понадобится ли вам такая занятная операция, как создание иерархии папок 🙂 Но случаи в практике работы с компьютером бывают самые разные.

Читайте также:  Проводник не отвечает windows постоянно

Как мы уже упомянули во вступлении, созданием папок ведает команда mkdir.

mkdir

mkdir (make directory) — одна из самых простых команд Терминала: она имеет только три параметра. Соответственно, и синтаксис сложностью не отличается:

mkdir -(параметры) (имя создаваемой папки)

Если вы введёте в Терминале

То папка с именем papka будет создана в текущей папке. Запомните — у команды mkdir вовсе не один аргумент. Одной командой вы можете создать хоть сто папок, введя их названия через пробел.

В качестве аргумента команды mkdir может выступать любой путь. Например, чтобы создать папку в корне диска, вводите:

Обратите внимание — путь к папке должен быть реальным, т.е. всё то, что значится до имени будущей папки, действительно должно существовать, иначе команда выдаст ошибку. Но можно этого избежать, используя параметр -p.

Например, если вы вводите команду:

а в корне диска нет папки с именем papka, то ничего не получится:

Совсем другое дело, если вводится команда:

mkdir -p /papka/podpapka/podpodpapka

Тогда в корне диска будет создана папка papka, в ней — ещё одна, а в ней — ещё одна.

Комбинация параметра -p и поддержки командой mkdir одновременного создания нескольких папок может использоваться вот в таких конструкциях:

В этом случае в корне диска появится папка papka, а уже в ней — две подпапки (podpapka1 и podpapka2).

Второй занятный параметр команды mkdir — это -m. Он позволяет сразу определить права доступа к создаваемой папке, не прибегая отдельно к команде chmod. Используется он следующим образом:

Про параметр -v сказать нечего — так же, как и во многих других командах, он активирует подробный режим работы команды. Для mkdir это означает вывод имени каждой созданной папки на экран.

touch

Строго говоря, команда touch задумывалась вовсе не для создания файлов. Она делает именно то, что означает её название — «трогает» файлы, выставляя им новую дату доступа и последнего изменения. Не будем вдаваться в подробности того, зачем вам это может понадобиться. Например, с помощью этой команды можно форсировать перестроение кэша драйверов Mac OS X (это вам рано или поздно понадобится).

Команда touch весьма похожа на mkdir. Она тоже может создавать несколько файлов подряд и тоже умеет работать с путями к файлу. Разумеется, и синтаксис у неё такой же:
touch -(параметры) (файлы)

Чтобы создать в текущей папке пустой текстовый файл, введите:

Вот и все премудрости. Но другое дело, если в указанной папке уже существует файл с таким именем (или даже папка). Команда в этом случае не перезапишет файл таким же, но пустым (как можно было бы подумать), а просто заменит его атрибуты «время изменения» и «время доступа». Если никаких дополнительных параметров не задано, то это время заменится на время запуска команды.
А параметры эти могут быть следующими:

выставляет только новую дату доступа

выставляет только новую дату изменения

выставляет новые атрибуты вне зависимости от прав доступа к объекту

присваивает файлу file2.txt те же даты доступа и изменения, что заданы для файла file1.txt

присваивает файлу даты доступа и изменения 12:12:33 20 февраля 2010 года (порядок такой: четыре цифры года, две цифры — номер месяца, две цифры числа, часы и минуты в 24-часовом формате и секунды через точку).
На сегодня всё. В следующей статье мы поговорим о возможностях поиска и фильтрации через Терминал.

Источник

Оцените статью