9 советов для быстрой работы в UNIX и Linux терминале

Терминал Linux неподготовленному пользователю может казаться зачарованным лесом. Рассказываем про видеокурс по работе с терминалом на примере Ubuntu.

cd означает Сhange Directory — сменить папку. Для этой команды недостаточно ввести её имя — так вы просто скажете, что хотите поменять папку, но не скажете, куда хотите перейти. Поэтому после cd нужен пробел и путь к каталогу, в который вы хотите переместиться.

Например, введите

cd /

Это перенесёт вас в корень диска (не забудьте нажать Enter — как всегда).

Заметьте, что содержимое приглашения поменялось. Тильда (~) сменилась на /.

Ваша домашняя папка не зря обозначается тильдой. Чтобы вам не пришлось каждый раз вбивать в Терминале /Users/ваше имя/, придумано это полезное сокращение.

Вбейте в командную строку

cd ~

И вы снова окажетесь в свой домашней папке.

Команда cd имеет несколько особенностей, связанных с путями к папкам. Пути бывают двух видов:

  • абсолютные — от корня диска. Они всегда начинаются со слэша (/).
  • относительные — от текущей папки.

Например, если вы находитесь в домашней папке и хотите попасть в папку с музыкой, которая находится внутри неё, то вам не нужно вводить

cd /Users/ваше имя/Music

или

cd ~/Music

Всё проще. Поскольку вы уже в папке пользователя (~), то можно ввести только название папки, в которую хотите попасть:

cd Music

Обратите внимание — слэш не нужен! Если вы введёте

cd /Music

то Терминал будет искать папку Music в корне диска. Естественно, он её не найдёт и напишет:

Запомните ещё одно полезное сокращение — две точки (..). Это переход на уровень выше — в материнскую папку. Например, если вы находитесь в папке /Users/ваше имя/Music, и введёте в Терминал:

cd ..

то окажетесь в папке /Users/ваше имя. Если снова введёте cd .., то попадёте в /Users. Если ещё раз — то в корне диска.

cd — — переход к предыдущему местоположению в файловой системе. Важно понимать отличие между верхним в иерархии и предыдущим, а им может быть совершенно иное место, например, если Вы переместились с /Users в ~/Documents, то предыдущим будет именно /Users, а не ~. Однако после того, как мы спускались от папки к папке, пробираясь сквозь недры вложений, то абсолютно нет никакой разницы между верхним каталогом и предыдущим, а значит смело можно писать любую команду. Кстати, подобное поведение можно наблюдать и в графических менеджерах файлов, отличных от Finder. В них тоже отличается переход «назад» и переход «вверх». После вызова такой команды будет сразу же вызвана уже рассмотренная команда pwd, которая и оповестит нас о том, куда же мы перешли.

Для навигации по истории команд можно использовать команду history. Она выведет 500 последних команд. Для выполнения последней достаточно ввести !!. А для вызова команды из того длинного списка — !*и тут номер в списке*. Обращаем ваше внимание на тот факт, что после выполнения команды, она в списке сдвинется, у нас не получится войти в одну воду дважды, то есть по одному номеру вызвать одну и ту же команду.

И последняя хитрость Терминала на сегодня: если вам нужно ввести несколько похожих команд, не нужно вводить каждую по отдельности. Стрелка вверх и стрелка вниз позволяют вам пролистывать все введенные ранее команды.

В следующей статье мы поговорим о том, как увидеть содержимое папок в командной строке.

Подробный обзор

советов для повышения производительности в UNIX и Linux

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

1) Используйте ! для быстрого выполнения длинной команды

В среднем, эта команда сэкономила мне 30% рабочего времени, так как постоянно приходится выполнять одну и ту же UNIX команду по несколько раз.

Прежде чем я узнал об этой команде, я использовал стрелки вверх и вниз для работы с историей команд. При нажатии стрелки вверх я искал нужную мне команду из предложенного списка, а затем выполнял ее. Согласитесь, не очень удобно. Но с ! достаточно открыть историю с помощью команды history, выбрать номер строки с нужной командой и выполнить ее. Скажем, под номером 100 находится команда sudo apt-get update. Для того, чтобы не вводить ее целиком, достаточно написать !100.

советов для повышения производительности в UNIX и Linux

Не забывайте про этот совет, так как он, определенно, сэкономит массу времени. Кроме того, эта команда окажется очень полезной для командной оболочки, отличной от оболочки bash (вроде csh илиksh), где стрелки вверх и вниз не позволяют работать с историей команд.

2) Используйте !! для выполнения последней команды

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

Читайте также:  Справочное руководство Мандрива Linux (2006).pdf

Также она будет работать на оболочках, в которых не работает стрелка вверх и вниз, таких как csh и ksh.

3) Используйте “CTRL+R” для поиска и выполнения подходящей команды

Если вы помните половину или четверть названия команды, которую хотите найти — введите “CRTL+R” и она покажет последнюю выполненную команду с совпадающим названием. Если вы будете продолжать нажимать “CRTL+R”, вам будут выдавать более старые команды, подходящие под искомую строку, если они имеются.

Вышеперечисленная тройка советов сэкономит вам кучу времени и нервов, если дело касается выполнения постоянно повторяющихся команд.

Лично я сэкономил почти 50–60% рабочего времени, просто следуя этим советам.

советов для повышения производительности в UNIX и Linux

4) Используйте историю команд

Это самый первый совет, который я сформировал для себя, когда начал работать с UNIX.

Каждый день я выполняю сотни команд и, вполне естественно, что я не могу запомнить каждую. Для поиска подходящей нужно выполнить команду history | grep ключевые слова и вы получите все команды, содержащие ключевые слова.

Используйте переменную HISTSIZE, чтобы установить количество команд, которые необходимо хранить в списке истории (стандартное значение — 500).

5) Используйте grep и find

Команда grep используется для поиска текста в файлах и директориях, на основе шаблонов. Команда find используется для поиска файлов по имени и другим свойствам.

Например, с помощью find можно найти все файлы, начиная с текущей директории, название которых начинается, например, на coolarticle: find . -name ’coolarticle*’. А с помощью команды grep можно найти coolarticle в файле , с выводом полностью совпавшей строки: grep coolarticle

6) Используйте alias

советов для повышения производительности в UNIX и Linux

Команда alias запускает любую команду или группу команд, в том числе с опциями, параметрами и файлами, посредством ввода одного слова или символа. То есть вы создаете более простые, короткие версии обычных команд, присваивая им новые названия.

Например, для того чтобы не вводить целиком команду clearнапишем alias c=»clear» и добавим в конце ~/.bashrc, чтобы данный alias был всегда доступен. Теперь, при вводе всего лишь одной буквыc, будет очищаться весь терминал.

7) Используйте pushd, popd, cd -, ~ для перемещения по каталогу

Основываясь на собственном опыте, могу сказать, что перемещение по оболочке UNIX занимает 50% рабочего времени, а если вы собираетесь прописывать путь к каталогу — можете насовсем забыть о быстрой работе.

В общем, вместо того, чтобы вводить полное имя команды, используйте вышеприведенные советы и эффективно используйте команды pushd, popd, cd- и cd ~ для быстрого перехода между каталогами.

8) Минимизируйте количество нажатий клавиш или увеличьте скорость печати

Чем меньше вы печатаете, тем быстрее вы работаете.

Если вы введете первые несколько букв имени файла, команды или пути, а затем нажмете клавишу Tab — произойдет автозаполнение командной строки.

советов для повышения производительности в UNIX и Linux

9) Продолжайте изучать новые команды

Старайтесь узнать как можно больше команд — это поможет сократить время для выполнения самых разных задач. И не забывайте использовать ctrl+z, fg и bg, чтобы приостановить процесс.

Ctrl+Z приостанавливает процесс, для возобновления выполнения процесса на переднем плане можно использовать команду fg, команда bg запускает процесс в фоновый режим.

Надеюсь, что эти советы помогут вам сделать больше за меньшее количество времени, увеличат вашу производительность и обогатят ваш опыт работы с UNIX.

Установка программ

Одна из самых востребованных и удобных операций, которые выполняют в коммандной строке — это установка программ. Если вам приходилось работать с такими программами, как Ubuntu Software Center, или Synaptics Package Manager — все они красивые оболочки, запускающие, по мере необходимости, те-же самые консольные програмы.

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

Например, для того, чтоб одним махом установить браузеры Mozilla Firefox, Chromium и Opera, достаточно выполнить одну команду:

sudo apt-get install firefox chromium-browser opera

В предыдущей команде использована комнда sudo, которая позволяет выпонить следующую за ней команду с правами «Рута» (супер администратора в мире Linux). За ней идет команда apt-get, которая принимает в качестве параметров install firefox chromium-browser opera, что означает «установи все программы, идущие после параметра install».

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

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

Back to top

Зачем нужен Терминал?

Есть три причины, которые делают Терминал незаменимым инструментом для исследователей, анализирующих большие массивы данных:

  • он позволяет программировать манипуляции с файлами и папками в операционной системе
  • Внутри него можно запускать другие программы и программировать их взаимодействие друг с другом
  • Через него осуществляется работа с серверами и суперкомпьютерами, позволяющими анализировать гигабайты данных в сотни раз быстрее, чем на персональном компьютере

Разберем каждый из этих аспектов подробнее.

Терминал, как манипулятор файлов и папкок

Большинству пользователей нет необходимости использовать Терминал благодаря графической оболочке их операционной системы. Однако, без него не обойтись, когда речь идет о манипуляциях с файлами и папками более сложными, чем: «скопировать документ из одной папки и вставить в другую». Я приведу простой пример, показывающий ограниченность использования графической оболочки операционной системы.

Читайте также:  Как поделиться плейлистом в apple music в инстаграм

Допустим, мне нужно переименовать фотографию и добавить к текущему названию дату, когда эта фотография была сделана. Что может быть проще, скажите Вы: «открой свойства файла, скопируй дату создания файла, закрой окно «Свойства» и вставь дату в название файла». Так и есть, все довольно просто, вот только повторить это действие нужно для всех фотографий на моем компьютере (а их у меня более 25 тысяч). Очевидно, что если я буду делать это подобным образом, то это задание отнимет у меня несколько недель.

Решение этой же задачи в Терминале займет не более получаса даже у начинающего пользователя. Фокус в том, что в Терминале пользователь может программировать действия, делегируя компьютеру рутинную работу. В разных типах эмуляторов терминала – разные языки программирования, но вероятно самым распространенным в наши дни является язык bash (о нем скоро будет отдельная статья).

Использование Терминала для создания скриптов

Другая важная особенность эмуляторов терминала – это возможность запуска в нем других программ, чтобы автоматизировать процессы в программах и обеспечить автономное взаимодействие между ними. Если входные и выходные данные этих программ оформить в виде файлов, то Терминал сможет запускать последовательно программы. Алгоритм будет напоминать цепочку из таких действий: запустить программу А, загрузить туда входные данные (файл А), экспортировать результаты анализа в файл B, закрыть программу A, запустить программу B, загрузить туда файл B, ну и так далее…

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

Управления суперкомпьютерами и серверами через Терминал

Терминал является не только окном в операционную систему персонального компьютера, но также и в операционную систему сервера или суперкомпьютера, который может находиться в тысячах километров от Вашего текущего месторасположения. Через эмулятор терминала на суперкомпьютер можно подавать алгоритмы (bash-скрипты), выполнение которых на Вашем компьютере могло бы занять неделю. Благодаря своей мощности суперкомпьютер проведет расчёты за считанные часы. Подобный подход позволяет проводить анализ больших массивов данных в кратчайшие сроки.

Как правило, на суперкомпьютерах и серверах стоят версии операционной системы Linux. Так как различий между эмуляторами терминала на Линуксе и на Маке практически нет, в дальнейших статьях я буду писать только об эмуляторах терминала, работающих на языке программирования bash (например, программа Terminal).

Открытие терминала

Открыть терминал довольно легко. Единственно, каждая операционная система отличается.

  • Если вы работаете на Mac, вы найдете программу Terminal в разделе Applications -> Utilities. Самый простой способ добраться до него — комбинация клавиш «команда + пробел», которая вызовет Spotlight, затем начинает печатать терминал, и он скоро появится.
  • Если на Linux, то вы найдете его в Applications -> System или Applications -> Utilities. В качестве альтернативы вы можете щелкнуть правой кнопкой мыши на рабочем столе, и может быть опция «Открыть в терминале».
  • Если вы работаете в Windows и намереваетесь удаленно войти на другой компьютер, вам понадобится SSH-клиент. Довольно хорошим является Putty (бесплатно).

Параметры команды mv

Команда mv принимает несколько параметров, которые влияют на поведение команды по умолчанию.

В некоторых дистрибутивах Linux mv может быть псевдонимом команды mv с настраиваемым набором параметров. Например, в CentOS mv — это псевдоним mv -i . Вы можете узнать, является ли mv псевдонимом, используя команду type :

type mv

Если mv является псевдонимом, вывод будет выглядеть примерно так:

mv is aliased to `mv -i’

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

Запрашивать перед перезаписью

По умолчанию, если целевой файл существует, он будет перезаписан. Чтобы запросить подтверждение, используйте параметр -i :

mv -i file1 /tmp

mv: overwrite ‘/tmp/file1’?

Чтобы перезаписать файл типа y или Y

Принудительная перезапись

Если вы попытаетесь перезаписать файл, доступный только для чтения, команда mv спросит вас, хотите ли вы перезаписать файл:

mv -i file1 /tmp

mv: replace ‘/tmp/file1’, overriding mode 0400 (r———)?

Чтобы не получать подсказки, используйте параметры -f :

mv -f file1 /tmp

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

Не перезаписывать существующие файлы

Параметр -n указывает mv никогда не перезаписывать существующие файлы:

mv -f file1 /tmp

Если существует file1 приведенная выше команда ничего не сделает. В противном случае он переместит файл в каталог /tmp .

Резервное копирование файлов

Если целевой файл существует, вы можете создать его резервную копию, используя параметр -b :

mv -b file1 /tmp

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

Используйте команду ls, чтобы убедиться, что резервная копия была создана:

ls /tmp/file1*

/tmp/file1 /tmp/file1~

Подробный вывод

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

Читайте также:  Как скопировать текст с «защищенного» сайта

mv -i file1 /tmp

renamed ‘file1’ -> ‘/tmp/file1’

Команды Терминала для улучшения продуктивности

  • Заменяет: Spotlight
  • Почему лучше: работает быстрее, осуществляет поиск и по системным папкам (тогда как Spotlight в них не ищет или плохо индексирует их содержимое).

Синтаксис find состоит из четырех частей:

1. find;

2. путь к директории, в которой вы хотите искать информацию (например, /Applications);

3. опции (например, -name дает find возможность искать файлы, которые подходят к заданному названию);

4. непосредственно сам поисковый запрос (например, Google Chrome).

Вот как выглядит вся команда в целом:

find /Applications -d 1 -name «*Google Chrome*»

Примечание: «звездочки» (*) указывают на то, что используется regex (регулярные выражения).

♥ ПО ТЕМЕ: Как быстро искать файлы в macOS без Терминала, или как устроен поиск на Mac.

  • Заменяет: ⌘Cmd + I, т.е. команды для отображения информации;
  • Почему лучше: может показать сразу несколько папок за один раз, и обычно выполняется быстрее.

du – это сокращение от «disk usage». Команда поможет быстро узнать размер конкретного файла или папки, или даже списка файлов внутри папки.

Лучшие опции для du:

Команды Терминала для улучшения продуктивности

-d («глубина», или depth): если за этой буквой стоит цифра, то find ограничит поиск по директории соответствующим количеством уровней. Например, если вы отдадите вашему Mac команду du:

-d 1 /Applications

Терминал выдаст вам информацию только об общем «весе» папок и файлов в папке Applications, без данных о размере подпапок, вложенных в эти папки.

-h (human readable, или «человеко-читаемые»). Выводит размеры файлов в привычных людям величинах – K (килобайтах), М (мегабайтах) или G (гигабайтах).

Команда du в действии:

ПО ТЕМЕ: Возможности клавиши ⌥Option (Alt) на Mac (macOS), о которых вы могли не знать.

  • Заменяет: ручной перенос папок и файлов в нужное место.
  • Почему лучше: быстрее и не требует много ручного труда.

Синтаксис mv очень прост – старый путь меняется на новый:

mv <old file path> <new file path>.

Пример:

mv /Users/Yablykworld/Documents/file1 /Users/Yablykworld/Desktop/file1

Эта команда переносит file1 из папки Документы на Рабочий стол.

♥ ПО ТЕМЕ: Как скрывать файлы и папки на Mac (macOS) от посторонних: 3 способа.

  • Заменяет: ⌘Cmd + I (показать информацию).
  • Почему лучше: быстрее, умеет отображать информацию о нескольким файлах сразу и имеет богатую палитру настроек.

ls – невероятно мощная. команда для отображения того, что находится в ваших папках. Также она выдает информацию о том, кто имеет право видеть их, есть ли на вашем Mac скрытые файлы или папки, и многое другое.

Лучшие опции для ls:

-l – отображает права для каждого файла в папке, время последнего изменения, владельца файла и его (файла) название.

-a – показывает все файлы в папке, включая скрытые (отличный вариант для библиотеки пользователя, которая в macOS по умолчанию скрыта).

Вот как всё работает:

ls -la /System/Library

♥ ПО ТЕМЕ: Как сделать скриншот (снимок экрана) на Mac — 4 способа + новые инструменты в macOS Mojave.

mkdir

  • Заменяет действие: Finder → Файл → Новая папка.
  • Почему лучше: работает быстрее, и задать имя новой папочке можно сразу в командной строке (нет необходимости кликать два раза, как это имеет место быть в графическом интерфейсе).
Команды Терминала для улучшения продуктивности

Создает новые папки в мгновение ока.

Пример:

mkdir /Users/Yablykworld/Desktop/Yablyk_Folder

♥ ПО ТЕМЕ: Как узнать дату последней чистой установки macOS на вашем Mac.

  • Заменяет: процедуру отправки файлов в Корзину и её очистки;
  • Почему лучше: быстрее, плюс удаляются даже те файлы, от которых обычно не получается избавиться с помощью Корзины.

Эта команда раз и навсегда удаляет абсолютно любой файл, который вы поместите в команду. Что, разумеется, требует повышенного внимания – в отличие от Корзины, rm не будет спрашивать «а Вы точно уверены?». Предполагается, что вы знаете, что делаете…

По умолчанию rm удаляет только файлы, папки остаются. Для того, чтобы сразу удалять и их, используйте опцию -R (рекурсивно).

Пример:

rm -R /Users/Yablykworld/Desktop/Yablyk_Folder

Смотрите также:

  • Как изменить папку для скриншотов в Mac (macOS).
  • Как изменить скорость скрытия и отображения Док-панели (Dock) в macOS.
  • Строка пути в macOS — скрытые возможности, о которых Вы могли не знать.

Команды для операций с файлами

Команда Что делает
nano редактирование файла в редакторе nano
cp копирует файл1 в файл2
scp [email protected]:/path/to/ [email protected]:/path/to/other/ копировать файл с одного сервера на другой
scp [email protected]: /local/folder скачать файл с сервера на текущий компьютер в папку foder
scp [email protected]:~/ загрузить файл с текущего компьютера на сервер
rm удаляет файл (-v будет писать о том, что делает)
mv перемещает файл1 в файл2. Эта же команда используется и для переименования файла.
touch создание пустого файла
chmod задание прав доступа
chown пользователь файл смена владельца файла
grep вырезает нужные вам строки из текстовых файлов, которые содержат указанный пользователем текст. Например, grep «Include» /etc/apache2/ — покажет все строки из файла , содержащие слово Include.
grep -i -R «слово» найти «слово» во всех файлах и каталогах, включая вложенные. -i — капитализация букв не важна, -R — означает «рекурсивно».
tail вывод последних строк файлов
cat вывести все текстовое содержимое файла на экран или объединить содержимое нескольких файлов и вывести его на экран (выводит все подряд, а не страницу за страницей)
less просмотреть файл страница за страницей (пробел — следующая страница, b — предыдущая страница, v — редактировать, j или ↵ — ввести следующую линию)