Командная строка | Русскоязычная документация по Ubuntu

Основы командной строки для java-программиста

В этой публикации мы погрузимся еще глубже в кроличью нору, изучив базовый набор команд, используемый при каждодневной работе в консоли. В основном это будут утилиты для взаимодействия с файловой системой (ФС): создать, удалить, переименовать, переместить файл (папку), перейти из одной директории в другую и т. д.

Ctrl-a/e – в начало/конец строки

Ctrl-a и Ctrl-e – перемещение в начало и конец командной строки соответственно. Можно, конечно, пользоваться клавишами Home и End, но так быстрее при использовании, например, таких клавиш, как вырезание Ctrl-w и вставка Ctrl-y.

[00:52:05]
[00:52:05]

Ctrl-w/u/k – вырезать слово/начало/конец строки

Ctrl-w – вырезать слово (от текущего положения курсора до ближайшего ранее в строке пробела/табуляции). Вырезанное можно затем вставить комбинацией Ctrl-y.

[00:52:52]
[00:52:52]

Ctrl-u – вырезать начало строки (от текущего положения курсора. Если курсор в конце строки, то вырежет целиком строку). Вырезанное можно затем вставить комбинацией Ctrl-y.

Ctrl-k – вырезать конец строки (от текущего положения курсора. Если курсор в начале строки, то вырежет целиком строку). Вырезанное можно затем вставить комбинацией Ctrl-y.

/etc/inputrc (настройки библиотеки readline)

Так как bash и многие shell’ы используют библиотеку readline для взаимодействия с командной строкой, то можно перенастроить соответствия комбинаций клавиш и действий в /etc/inputrc.

Например, такие строки меняют поведение по умолчанию клавиш «Вверх» и «Вниз»

Pwd ⇑→

Команда

pwd

выдаёт некоторый контекст о текущем рабочем каталоге.

pwd

— это сокращение от

print working directory

т.е.

распечатать рабочий каталог

. Результат команды — полный системный путь для текущего каталога.


Хотя

pwd

не имеет столько параметров, сколько у большинства других команд (поскольку она довольно проста), с её помощью можно игнорировать символические ссылки. Для этого надо передать опцию

-P

Это одна из наиболее часто используемых команд вместе со следующими двумя командами в этом списке.


Другая часто используемая команда, это

cdcd

— это сокращение от

change directory

, т.е. смена каталога. Как следует из названия, она позволяет изменить текущий рабочий каталог.


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

В этом примере мы переходим в папку проекта, которая находится внутри папки «Загрузки»:

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

..

. В следующем примере мы переходим в папку проекта, которая находится в папке «Загрузки». При выполнении

cd ..

увидите, что текущий рабочий каталог меняется на указанную папку.


Думаю, вы обратили внимание, что я довольно часто использовал тильду

~

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

~

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


Следующая команда — это

ls

, сокращение от

list

, т.е.

список

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


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

-a

, например. Эта опция позволяет увидеть в списке скрытые файлы (названия которых начинаются с точки). Опция

-l

выдаёт длинный список, в котором, помимо прочего, указаны размеры файлов и разрешения.

Опции можно комбинировать:

ls -al

Cp & mv ←⇑→


Команда

cp

происходит от слова

copy

, т.е.

копирование

. Позволяет копировать файлы и каталоги. Первый указанный файл/каталог является исходным (что копируем), на втором месте — местом назначения (куда копируем). В следующем примере мы перемещаем изображение в папку «Загрузки».


При копировании каталога можно использовать опцию

-R

для рекурсивного копирования (то есть, вместе с подпапками). Обратите внимание, при этом скрытые файлы также будут скопированы.

Существует довольно много вариаций, как копировать файлы и каталоги. Например, возможно скопировать только файлы с определенным расширением. В следующем примере копируются все файлы с расширением jpg в папку «Загрузки».


Помимо команды

cp

есть также команда

mv

, которая обозначает

move

, т.е.

перемещение

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

cp

. Тем не менее, есть различия. Например, команда

mv

не идёт с опцией

-R

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

man mv

Rmdir & rm ←⇑→

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

Чтобы удалить каталог, можно использовать команду rmdir, что является сокращением от remove directory, т.е. удаление каталога. Имейте ввиду — команда удаляет только пустые каталоги.


Более мощной является команда

rm

. Как вы, наверное, догадались, это сокращение от

remove

, т.е. удаление. Команда

rm

удаляет каждый указанный файл. Хотя с помощью этой команды можно удалить и каталоги, по умолчанию она этого не делает.


Когда

rm

выполняется с опцией

-r

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

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

Grep ←⇑→


Команда

grep

, это сокращение от

global regular expression print

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

Начнём с очень простого примера. Есть файл, содержащий названия всех стран. Мы хотим проверить, есть ли слово Netherlands (Нидерланды) в списке. Обратите внимание, по умолчанию grep чувствителен к регистру.

Первый передаваемый аргумент — слово, которое ищем. А второй — файл, в котором будем искать.

Для поиска без учёта регистра используется опцию

-i

. В следующем примере найдётся и

BeLbelBEL

Обратите внимание, в приведённых выше примерах видно, что

grep

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

-c

Find ←⇑


Последняя команда на сегодня —

findпоиск

), позволяющая быстро найти файл или каталог. Допустим, нужны все CSS-файлы в текущем каталоге. Мы могли бы получить их список, используя команду

find

Обратите внимание, команда

find

ищет и в подпапках тоже.

Alt-* – вставить дополнения, ctrl-x * – развернуть шаблон

Esc-* (точнее, EscShift8) или, что, то же самое, Alt-* (точнее, Alt, Shift, 8), вставит все варианты дополнения в командную строку. Аналогично можно развернуть список файлов, переменных, имен пользователей.

В примерах ниже разворачиваю список файлов:

Вариант с Alt-*:

[00:44:55]
[00:44:55]

Вариант с Esc-*:

[00:46:30]
[00:46:30]
♯ bind -P | grep ‘*’

Ctrl-x* – развернет уже написанный в командной строке шаблон, как в примере ниже:

[00:48:39]
[00:48:39]

Alt-_/alt-./alt– – вставка аргументов

Комбинация Alt-_ (выполняется нажатием Alt, Shift, -) – вставляет последний аргумент из предыдущих команд. (Аналогично работает комбинация Esc-. или, что то же самое, Alt-.)

[00:28:32]
[00:28:32]

^^^ В данном примере видно, как повторные нажатия Alt-_ вставляют аргументы от пред-пред-…-идущих команд.

Комбинация Alt – – позволяет указать (порядковый номер с конца), какой аргумент вставить клавишей Alt-_ из предыдущей команды.

[00:30:13]
[00:30:13]

^^^ В данном примере вставляю в командную строку различные аргументы из предыдущей команды.

Alt-b/f и ctrl-←/→ – предыдущее/следующие слово

Alt-b (и тот же эффект у Ctrl-Left) – переход в начало предыдущего слова.

Alt-f (и тот же эффект у Ctrl-Right) – переход в конец следующего слова.

[00:50:10]
[00:50:10]

Bind -p

Можно посмотреть, какие клавиши к каким действиям редактирования командной строки bash привязаны – для этого можно воспользоваться командой «bind -P».

Есть и много других интересных комбинаций – для примера можно глянуть:

Клавиши, переключающие регистр букв:♯ bind -P | egrep “case|capitalize”

[00:58:35]
[00:58:35]

Клавиши, меняющие слова/буквы местами:♯ bind -p | grep “transpose”

Также можно настроить свои привязки – например, чтобы по комбинации «Ctrl-f» выводился результат команды «date»:

♯ bind -x'”C-f”: date’

[01:00:50]
[01:00:50]

Ctrl-_ – undo

Ctrl-_ (точнее, нужно нажать CtrlShift-) или Ctrl-xCtrl-u – отменяет последние правки при редактировании командной строки.

Ctrl-c – сигнал sigint

Первые две комбинации клавиш достаточно важные, и часто «недавно перешедшие с Windows на Linux» НЕправильно их используют: продолжая, как в DOS, для завершения команд использовать комбинацию «Ctrl-z», что неверно. В Linux же для того, чтобы попросить (команде посылается сигнал SIGINT) приложение прервать свою работу, используется Ctrl-c.

[00:14:24]
[00:14:24]

Ctrl-d – eof(окончание ввода данных)

Далее разберем комбинацию Ctrl-d. В выводе «stty -a» эта комбинация значится как «EOF», что означает «окончание ввода данных». Для примера покажу, как можно создать текстовый файл с определенным текстом без использования текстового редактора:

[00:15:51]
[00:15:51]

^^^ Здесь видно, что любой набираемый текст перенаправляется в файл /tmp/File.txt, и нет никакой фразы (типа «Горшочек, не вари»), которую бы команда cat восприняла как «окончание ввода» – точнее, для этого как раз и надо нажать Ctrl-d.

Также пользуюсь комбинаций Ctrl-d для того, чтобы выйти из консоли (например, после того как переключился командой su под другого пользователя или зайдя по ssh на другую машину) – вместо набора команды «exit» или «logout»:

[00:17:44]
[00:17:44]

^^^ В правом терминале отображаю историю команд.

…(а внимательный зритель догадается, какой «супер-секретный» пароль у root’а на стенде)

Ctrl-l – очищает экран

Комбинация Ctrl-l – «очищает» экран.

[00:10:51]
[00:10:51]

Ctrl-o – повтор команд из истории

Комбинация Ctrl-o позволяет повторять серию команд из истории. То есть нужно из истории команд стрелками выбрать первую команду из серии и нажать Ctrl-o – это выполнит текущую команду и выведет из истории следующую. Дальше можно продолжать нажимать Ctrl-o с тем же эффектом.

:/>  Настройка сети в CentOS Linux | XaXaTyXa
[00:33:58]
[00:33:58]

^^^ В примере я написал три команды: одна увеличивает на 1 переменную, которой соответствует год; вторая выводит переменную-год; третья показывает, сколько дней в феврале в указанном году. Дальше, нажимая Ctrl-o, повторяю эту серию из трех команд много раз (один кадр соответствует трем нажатиям).

Ctrl-r – поиск по истории

Комбинация Ctrl-r позволяет искать в истории команд команды, содержащие указанный далее текст.

[00:25:21]
[00:25:21]

^^^ В этом примере мне понадобилось из истории вытащить команду, содержащую текст «su»: нажав Ctrl-r и набрав искомый текст «su», я увидел самую недавнюю команду, содержащую «su»; при повторном нажатии Ctrl-r отображается предыдущая команда, содержащая «su» и т.д.

Ctrl-v – ввод следующего символа

Комбинация Ctrl-v позволяет вставить в командную строку следующий за ней символ, не воспринимая его как спецсимвол. (Параметр lnext в выводе «stty -a»)

[00:19:19]
[00:19:19]

Ctrl-x ctrl-e – редактировать в $editor

Нажав комбинацию Ctrl-xCtrl-e, можно редактировать командную строку в любом внешнем редакторе (по умолчанию часто используется редактор vim; переназначить редактор можно, указав в переменной EDITOR). Часто редакторы имеют больше продвинутых возможностей в редактировании текста.

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

[00:53:40]
[00:53:40]

Ctrl-y – вставить вырезанное

Ctrl-y – вставить вырезанный фрагмент командной строки. (В bash используется свой буфер для хранения вырезанных фрагментов – называется «kill ring»).

Важно: Удобно использовать с Alt-y (позволяет «прокручивать» варианты вставки из буфера).

Ctrl-z – сигнал sigtstp

А комбинация Ctrl-z используется, чтобы попросить (команде посылается сигнал SIGTSTP) приложение остановить свою работу (не завершая) – «поставить на паузу». Ну, а «разбудить» его можно командой «fg» (или «bg»).

[00:14:36]
[00:14:36]

Pgup/pgdown – поиск по истории

PgUp – отображает предыдущую команду начинающуюся с уже введенного текста, PgDown – следующую.

[00:27:35]
[00:27:35]

^^^ В этом примере перемещаюсь между командами, начинающимися с «cat». (Часто также ищу команды, начинающиеся с «sudo». Или если мне нужно снова отредактировать какой-то файл, который недавно редактировал: набираю «vi», жму несколько раз PgUp, а затем Enter.)

В дистрибутивах где это настроено – в /etc/inputrc есть строки:

Tab – автодополнение (в контексте)

Во многих командных интерпретаторах (и в bash в том числе) используется такая возможность, как автодополнение. Как минимум нужно знать, что по нажатию клавиши Tab дописывается название команды. В bash по умолчанию обычно настроено так, что если имеется только один вариант дополнения, то он дописывается по нажатию Tab (также можно использовать Ctrl-i и Esc-Esc).

Когда вариантов дополнения много, то по первому нажатию Tab дописывается только общая часть (если она есть). А по второму нажатию Tab отображается список всех доступных вариантов. Дальше можно набрать еще символов – уточнить, какое из дополнений нужно, и снова нажать Tab. То же самое с другими дополнениями: имен файлов, имен переменных.

[00:39:20]
[00:39:20]

^^^ Здесь, например, смотрю (нажав дважды Tab), что есть несколько команд, начинающихся с «if», добавив «c» и нажав Tab, получаю набранной команду «ifconfig».

[00:39:31]
[00:39:31]

^^^ В этом примере дополняю аргументы команды (здесь имена файлов). Также видно, что в случае, когда вариантов много и все не умещаются в окне терминала, их список отображается утилитой для постраничного просмотра (также при очень большом списке вариантов выдается запрос вида «Display all 125 possibilities? (y or n)» или, как в этом примере, при малом количестве – «–More–».

Востребованные сетевые команды командной строки

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

Команда ping

Наверное, это самая популярная команда среди пользователей ОС Windows (как, впрочем, и других операционных систем). Предназначена она для проверки доступности и качества связи между компьютером и целевым IP-адресом. Также команда может применяться для определения IP-адреса сайта по доменному имени сайта и для выполнения других задач.

Определим, есть ли связь с каким-нибудь IP-адресом. Пусть это будет — 173.194.73.139 (IP-адрес поисковой системы Google). Вводим следующую команду:

ping 173.194.73.139

Как видим, обмен пакетами с указанным IP-адресом осуществляется, значит, связь есть. Если бы ее не было, картина была бы следующая (уберем из IP Google последнюю цифру):

“100% потерь” означает, что связь установить не удалось.

Горячие клавиши

Начнем с горячих клавиш, ведь сначала необходимо изучить, что нам может дать рабочая среда.

F1 — В консоли эта клавиша работает в точности как и стрелка вправо, т.е. выводит по одному символу из последней введенной (либо выбранной в истории) команды.F2 <символ> — Выводит последнюю введенную команду до указанного символа. Например, если последняя введенная вами команда выглядела вот так:

ping 192.168.25.1

то после нажатия комбинации клавиш

F2 5

вы получите:

ping 192.168.2

F3

— Выводит последнюю, и только последнюю, в истории команду целиком.

F5

— Выводит последние введенные команды по порядку, также как и стрелка вверх.

F6

— Вставляет символ EOF на текущую позицию командной строки, что аналогично нажатию комбинации Ctrl Z.

F7

— Диалоговое окно, содержащее историю команд.

imageAlt F7

— Очищает историю команд.

— Перебирает команды, которые начинаются с символов уже введенных в командную строку.


Если перед нажатием

F8

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

F9 <число>

— Вставляет команду из истории под соответствующим номером. К примеру, в ситуации приведенной на скрине выше при нажатии комбинации

F9 4

в консоли появится:

ipconfig

Дисковое пространство

df -hотображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим.переводчика. ключ -h работает не во всех *nix системах)
ls -lSr |moreвыдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
du -sh dir1подсчитывает и выводит размер, занимаемый директорией ‘dir1’ (Прим.переводчика. ключ -h работает не во всех *nix системах)
du -sk * | sort -rnотображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a –qf ‘{SIZE}t%{NAME}n’ | sort -k1,1nпоказывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1nпоказывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)

Дополнения имен пользователей, переменных

Часто, когда дописываются аргументы команд по Tab, дописываются имена файлов. Но стоит также отметить, что, в зависимости от контекста, по Tab дописываются и имена переменных (аргументы, начинающиеся с символа «$»), имена пользователей (аргументы, начинающиеся с символа «~»),…

[00:40:36]
[00:40:36]

^^^ Здесь, чтобы набрать «$HISTFILESIZE», вместо 13 символов набрал 8 символов ($HITabFTabSTab).

[00:41:44]
[00:41:44]

^^^ Здесь дописываю имена пользователей (фактически пишу адрес домашней директории).

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

Список того, что может дополнять bash, можно посмотреть командой:

♯ bind -P | grep “complet”
[00:43:50]
[00:43:50]

Так, например, видно, что:

  • Ctrl-x~ – покажет список имен пользователей, начинающихся с набранных символов, а дополнить комбинацией Esc-~;

  • Ctrl-x@ – список имен машин (согласно /etc/hosts), начинающихся с набранных символов, а дополнить – Esc-@;

  • Ctrl-x$ – список имен переменных, заданных в этой сессии (можно их также посмотреть командой set), а дополнить – Esc-$;

  • Ctrl-x! – список команд (согласно доступных: $PATH, alias, функций, встроенных команд), а дополнить – Esc-!;

  • Ctrl-x/ – список имен файлов, а дополнить – Esc-/.

Другие полезные команды

apropos …keywordвыводит список комманд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду
man pingвызов руководства по работе с программой, в данном случае, – ping
whatis …keywordотображает описание действий указанной программы
mkbootdisk –device /dev/fd0 `uname -r`создаёт загрузочный флоппи-диск
gpg -c file1шифрует файл file1 с помощью GNU Privacy Guard
gpg file1.gpgдешифрует файл file1 с помощью GNU Privacy Guard
wget -r www.example.comзагружает рекурсивно содержимое сайта www.example.com
wget -c www.example.com/file.isoзагрузить файл www.example.com/file.iso с возможностью остановки и продолжения
echo ‘wget -c www.example.com/files.iso‘ | at 09:00начать закачку в указанное время
ldd /usr/bin/sshвывести список библиотек, необходимых для работы ssh
alias hh=’history’назначить алиас hh команде history
find . -maxdepth 1 -name *.jpg -print -exec convertИзменение размеров всех изображений в папке, передача утилите «convert» из ImageMagick для создания уменьшенных копий изображений (предварительный просмотр)
swapon /dev/hda3активировать swap-пространство, расположенное на разделе hda3
swapon /dev/hda2 /dev/hdb3активировать swap-пространства, расположенные на разделах hda2 и hdb3
:/>  Команда RENAME

Запуск приложений из командной строки

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

Windows System32 и там найти исполняемый файл mspaint.exe . Давайте посмотрим, как эта операция может быть выполнена, если мы находимся на D:7tutorials. Прежде всего, мы должны изменить рабочую директорию на папку приложения, набрав  cd/dc:

Как использовать помощь в командной строке

Чтобы получить доступ к помощи в командную строку нужно просто ввести  команд  help  – помощь, а затем нажать Enter –Ввод . Будет отображаться  список всех доступных команд , как вы можете видеть ниже.

Если нужно узнать про определенную команду ,нужно ввести   help затем следуют название своей команды. Другой способ сделать то же самое, это ввести command_name затем /? параметра. Чтобы проверить, как использовать помощь CD или CD/? для отображения информации о CD команде.На картинке ниже вы можете увидеть результат.

Как получить доступ к определенному диску

Чтобы получить доступ к другому диску ,  просто введите  букву ,которая следует за ‘:’. Например, мы хотели изменить диск C: на  диск D: . Мы ввели  D , и затем нажали клавишу Enter – Выполнить .

Чтобы изменить диск и каталог, одновременно, используйте команду  CD , следует за  слэшем /d  . Этот параметр используется для изменения текущего диска и определенной папки из других разделов. Например, сейчас вы находитесь надиске  D: , и вы хотите вернуться к диску C: непосредственно в папку Windows.

Примечание: Если ввести букву диска ,можно автоматически перейти на самые последние места на этом диске. Например, если вы находитесь на диска D:  и ввели  тип CD C:Windows ничего не случится. Но, если вы введете C:, то рабочая папка  изменится на C:Windows (при условии, что это был последний каталог, с которым вы работали  на  диске C:).

Как просмотреть содержимое папки

Вы можете просмотреть содержимое папки с помощью простой команды, которая называются DIR.Чтобы проверить, я создал на  диске D: папку 7tutorials ,  несколько файлов и вложенные папки .

В последнее время рабочим каталогом был ‘C: Windows “ . Мы идём в папку выше с помощью команды cd/dd:7tutorials . Для просмотра содержимого папки мы будем вводить DIR и нажмём Enter  – Ввод . Отобразится список файлов и папок, содержащихся в его отображении, а также некоторые подробности об этих файлах и папок (размер, дата и время последнего изменения).

Как создать новую папку

Вы можете создать новый каталог, используя  команду  MKDIR (Make Directory). Синтаксис этой команды MKDIR имя каталога . Скажем, мы должны создать новую папку с именем 7tutorials_v1 , которая будет размещена в папке  d:7tutorials .

Чтобы проверить, работает это или нет, мы будем использовать снова  команду  dir  . Вновь созданную папку в списке.

Примечание: Не забывайте, что все эти команды , зависят от текущего местоположения в командной строке . Так что если вы находитесь в  C: и тип   MKDIR тест, новая папка будет создана на диске C: .

Еще один способ создать каталог, который не предполагает быть в нужной папке, это ввести полный путь к папке. Например, вы работаете на диске  D: , и вы хотите создать новую папку на диске C: ,которая будет  называтся other_stuff . Просто введите MkDir C:other_stuff  и  нажмите   Enter  -Ввод .

Если вам необходимо одновременно создать папку с подпапками ,вы можете использовать команды  имя_папки MKDIR подпапка . Например, если мы введем MkDir testsbetatest1 , будут созданы три папки : 7tutorials_tests, бета-, test1 , с  древовидной структурой.

Команды secure shell (ssh)

SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.

SSH позволяет безопасно передавать в незащищённой среде практически любой другой сетевой протокол. Таким образом, можно не только удалённо работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры)[2]. Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удалённого запуска клиентов X Window System.

Большинство хостинг-провайдеров за определённую плату предоставляют клиентам доступ к их домашнему каталогу по SSH. Это может быть удобно как для работы в командной строке, так и для удалённого запуска программ (в том числе графических приложений).

Манипуляции с текстом

cat file_originale | [operation: sed, grep, awk, grep и т.п.] > result.txtобщий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый
cat file_originale | [operazione: sed, grep, awk, grep и т.п.] » result.txtобщий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан
grep Aug /var/log/messages из файла ‘/var/log/messages’отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug»
grep ^Aug /var/log/messages из файла ‘/var/log/messages’отобрать и вывести на стандартное устройство вывода строки, начинающиеся на «Aug»
grep [0-9] /var/log/messages из файла ‘/var/log/messages’отобрать и вывести на стандартное устройство вывода строки, содержащие цифры
grep Aug -R /var/log/* отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug», во всех файлах, находящихся в директории /var/log и ниже
sed ‘s/stringa1/stringa2/g’ example.txtв файле example.txt заменить «string1» на «string2», результат вывести на стандартное устройство вывода
sed ‘/^$/d’ example.txtудалить пустые строки из файла example.txt
sed ‘/ *#/d; /^$/d’ example.txtудалить пустые строки и комментарии из файла example.txt
echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’преобразовать символы из нижнего регистра в верхний
sed -e ‘1d’ result.txtудалить первую строку из файла example.txt
sed -n ‘/string1/p’отобразить только строки содержашие «string1»
sed -e ‘s/ *$‘ example.txt |удалить пустые символы в в конце каждой строки |
|
sed -e ‘s/string1
g’ example.txt
удалить строку «string1» из текста не изменяя всего остального
sed -n ‘1,8p;5q’ example.txtвзять из файла с первой по восьмую строки и из них вывести первые пять
sed -n ‘5p;5q’ example.txtвывести пятую строку
sed -e ‘s/0*/0/g’ example.txtзаменить последовательность из любого количества нулей одним нулём
cat -n file1пронумеровать строки при выводе содержимого файла
cat example.txt | awk ‘NR%2==1’при выводе содержимого файла, не выводить чётные строки файла
echo a b c | awk ‘{print $1}’вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
echo a b c | awk ‘{print $1,$3}’вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
paste file1 file2объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n 1-m
paste -d ‘ ‘ file1 file2объединить содержимое file1 и file2 в виде таблицы с разделителем « »
sort file1 file2отсортировать содержимое двух файлов
sort file1 file2 | uniqотсортировать содержимое двух файлов, не отображая повторов
sort file1 file2 | uniq -uотсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)
sort file1 file2 | uniq -dотсортировать содержимое двух файлов, отображая только повторяющиеся строки
comm -1 file1 file2сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file1’
comm -2 file1 file2сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file2’
comm -3 file1 file2сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах

Общие слова и замечания

Большинство продемонстрированных клавиш стандартны для «командной строки Linux», но часть из этих комбинаций специфичны для bash (поэтому и пометил это в заголовке). На текущий момент BASH – наиболее распространенный командный интерпретатор, используемый по умолчанию в большинстве Linux-дистрибутивов.

В других командных интерпретаторах или, проще говоря, shell’ах (рекомендую попробовать zsh и fish) могут быть небольшие отличия в работе. Также часть комбинаций прописана в «настройках по умолчанию» (например, в файле /etc/inputrc или в /etc/bashrc), которые тоже могут различаться в разных дистрибутивах.

Если вдруг что-то из указанного мной в этой статье у вас не сработало, пишите в комментариях «название – версию shell и название – версию дистрибутива».

Часть демонстрируемых клавиш относятся к «настройкам терминала». А часть – клавиши из командного интерпретатора BASH, и их можно посмотреть, почитав мануал по bash’у (огромный текст – пользуйтесь поиском):

♯ man bash

[00:10:40]
[00:10:40]

^^^ На приведенном фрагменте из мануала: Запись «(C-r)» означает Ctrl-r, а «M->» означает Alt->.

«M» – это «Meta-клавиша»

Из истории: «М» – это «Metа-клавиша», сейчас вместо неё используется клавиша Alt, либо клавишаEsc. Я чаще в её качестве буду использовать клавишу Alt.

Замечание: Если у кого-то настроено переключение раскладки по комбинации Alt-Shift, то учитывайте, что в комбинациях, перечисленных далее и содержащих Alt-Shift, вам надо будет использовать скорее клавишу Esc-Shift (или поменять комбинацию для переключения раскладки клавиатуры, у меня, например, раскладка переключается по CapsLock).

[00:11:18]
[00:11:18]

^^^ Здесь показано на примере использования комбинаций для перемещения по «словам» командной строки: Alt-b(или, что то же самое, Esc-b) и Alt-f(или, что то же самое, Esc-f)

Для демонстраций нажатых клавиш использую утилиту «screenkey».

Upd: При этом стоит упомянуть, что по умолчанию bash использует emacs-режим редактирования командной строки и поэтому многие комбинации клавиш пришли из редактора emacs. Для знающих редактор vi, могу порекомендовать переключить (добавив “set -o vi” в ~/.bashrc) bash в vi-режим редактирования и пользоваться привычными комбинациями из vi.

:/>  Как проверить версию, обновить или удалить Java с помощью PowerShell? | Windows для системных администраторов

Оператор и

&&

Пример: Команда1 && Команда2 — Команда2 будет выполняться только в том случае, если произошло успешное выполнение Команды1

Оператор или

||


Пример: Команда1 || Команда2 — Команда2 будет выполняться только в том случае, если Команда1 не смогла выполниться.

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

Спасибо за внимание! Жду критики и предложений…

Оператор объединения команд

&

Пример: Команда1 & Команда2 – сначала выполнятся Команда1, а уже потом Команда2

Операторы командной строки

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

Оператором конвейера в *nix и cmd, является символ вертикальной черты.

|

Например, вывод всех текстовых файлов в текущей папке покажет команда

dir | find ".txt"

Параметры команд и получение помощи

Прежде чем приступать к изучению команд, следует понимать два важных момента:

  • У многих команд существуют изменяемые параметры, уточняющие выполнение командой той или иной функции.
  • По любой команде можно получить помощь прямо в окне интерпретатора. Для этого следует сразу после команды вписать “/?“, что также является параметром.

Возьмем, к примеру, одну из наиболее востребованных команд ping. Впишите в консоль следующую строку:

ping /?

Подобным способом можно получить справку по большинству команд (в основном по тем, у которых имеются атрибуты).

Переименование файлов и папок

Для переименования файлов и папок необходимо использовать команду REN (Переименовать). Для папок просто ввести  имя папки новое_имя ren . Например, если мы хотим переименовать папку 7tutorials_v1 в 7tutorials_final мы вводим ren 7tutorials_v1 7tutorials_final  и нажимаем  Enter  –   Ввод .

Чтобы переименовать файл, использующий ту же команду, например: ren filename.extension. Например, чтобы переименовать 7tutorials_picture.jpg в файл picture1.jpg мы должны использовать команды  ren 7tutorials_picture.jpg picture1.jpg .

Программная оболочка

Консоль и терминал обрабатывают команды с помощью программной оболочки. Программная оболочка – интерпретатор команд, он распознает команды введенные в командной строке, и запускает программы для выполнения команды. В Ubuntu по умолчанию используется оболочка bash, он распознает команды на языке bash.

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

Просмотр справки и руководства по программе

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

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

man программа

Перемещаться можно клавишами со стрелками, а выйти из него, нажав клавишу Q.
Подробнее в смотрите в man man

Для получения справки, в которой указаны ключи, нужно выполнить:

программа -h
программа --help

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

Работа с файлами и папками из командной строки

Бывают ситуации, когда невозможно запустить стандартный файловый менеджер “Проводник Windows”. Например, из-за действия вирусов-блокировщиков или при системных сбоях. В любом случае все, что можно сделать при помощи “Проводника”, можно сделать и при помощи командной строки. Начнем с самого простого — просмотра содержимого папок.

Редко используемые, но очень полезные команды

При помощи командной строки можно выполнять различные интересные функции (большинство приведенных ниже команд работает только с правами администратора):

Превращаем ноутбук в Wi-Fi-роутер (включение раздачи интернета с ноутбука или настольного компьютера с Wi-Fi-адаптером)

Для реализации этой затеи нужно поочередно выполнить три несложные команды:

  1. netsh wlan set hostednetwork mode=allow
  2. netsh wlan set hostednetwork mode=allow ssid=MiWiFi key=MiWiFipassword keyUsage=persistent. Вместо MiWiFi и MiWiFipassword можно использовать свои фразы. Первый параметр задает имя беспроводной сети, второй — пароль (должен состоять из 8 символов или более).
  3. netsh wlan start hostednetwork.

Если после выполнения каждой команды вы видите сообщения, аналогичные тем, что приведены на изображении выше, значит, все прошло успешно. Теперь к ноутбуку можно подключиться, например, с телефона так же, как и к обычному Wi-Fi-роутеру.

Удалениям службу Windows (или любую другую) через командную строку

Если попробовать удалить службу через штатное приложение “Службы”, то ничего не получится (в нем попросту не предусмотрено такой функции). Однако это бывает необходимым, особенно после установки различных программ, которые устанавливают службы, но “забывают” их удалять при деинсталляции.

  • Запустите программу “Службы”, используя команду msc.
  • Найдите в отобразившемся списке службу, которую необходимо удалить, и кликните по ней два раза мышкой:
  • Нас интересует текст в блоке “Имя службы”.
  • Теперь вернитесь в окно командной строки и впишите в него команду:

sc delete имя_службы

  • Подставьте вместо фразы “имя_службы” имя удаляемой службы. Если оно содержит пробелы, как в нашем случае, заключите имя службы в кавычки.

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

shutdown /s /t 60 /f

В данном случае компьютер будет выключен (параметр “/s”) через 60 секунд (параметр “/t 60”) с принудительным завершением работы всех приложений без предупреждения пользователя (параметр “/f” — обязательный при использовании таймера “/t”).

Вместо выключения компьютера “/s” использовать:

  • /l — завершение сеанса (выход из учетной записи пользователя с блокировкой, если для входа требуется пароль).
  • /r — перезагрузка компьютера.
  • /hybrid/s — “отправка” компьютера в сон (параметр “/s” использовать обязательно).
  • /h — режим гибернации (или режим максимального энергосбережения, при котором ключевые компоненты компьютера остаются включенными).

Для выключения компьютера, например, через 2 часа следует указывать в параметре “/t” число 7200 (1 час равен 3600 секундам).

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

Выполнение команды всегда можно отменить (если была использована задержка), воспользовавшись:

shutdown /a

Просмотр списка запущенных процессов и завершение работы любого из них. Если по каким-то причинам не удается запустить “Диспетчер задач”, но имеется доступ к командной строке, запущенный процесс может быть снят при помощи специальных команд:

  • Сначала выведем на экран список всех запущенных процессов при помощи команды tasklist:
  • Нас интересует идентификатор “PID” завершаемого процесса. Возьмем для примера PID процесс “NVDisplay.Container.exe” — 1100.
  • Для завершения его работы используем команду taskkill /pid 1100 /f (параметр “/f” необходим для принудительного завершения работы процесса).

Чиним интернет при помощи командной строки. Разнообразные неполадки с сетевыми подключениями можно устранить “одним махом” через командную строку путем сброса настроек TCP/IP (не будем вдаваться в подробности, но если вам интересно, об это можно почитать тут — Netsh Winsock — что это и зачем нужно?.

Для выполнения этой задачи нужно поочередно ввести две команды:

netsh int ip reset

netsh winsock reset

Перезагружаем компьютер для применения изменений.

Остались вопросы, предложения или замечания? Свяжитесь с нами и задайте вопрос.

Список базовых команд:

— информация о каталоге

— смена каталога

— список файлов в каталоге

— скопировать/переместить файл/каталог

— создать каталог/файл

— удалить каталог/файл

— прочитать файл

— поиск текста в файле по регулярному выражению

— поиск файла/каталога

EDISON Software - web-development
Статья переведена при поддержке компании EDISON.

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

Мы очень любим работать с интефейсами! 😉

Терминал

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

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

Запустить терминал можно следующим образом:

В Unity:
Главное меню → Набрать в поисковой строке слово Терминал
или нажать комбинацию клавиш: Ctrl Alt T

В Gnome Fallback
Приложения → Стандартные → Терминал

В Xfce (Xubuntu):
Главное меню → Приложения → Система → Терминал

В KDE (Kubuntu):
Главное меню → Приложения → Система → Терминал

В LXDE (Lubuntu):
Главное меню → Системные → LXTerminal

После запуска терминала мы видим строку с приглашением к вводу команд, например:
vladimir@Zotac-Zbox-Nano:~$

vladimir – имя учетной записи пользователя
@ – разделитель между учетной записью и именем компьютера
Zotac-Zbox-Nano – имя компьютера
: – разделитель
~ – в какой папке выполняется команда, ~ это домашняя папка пользователя, если выполните команду ls то получите список файлов из этой папки
$ – приглашение к выполнению команды с правами простого пользователя (# будет означать приглашение на выполнение команд с правами администратора)

Оставьте комментарий