без разбора



Предыдущая |

на данном сайте можно взять все рубрики и совсем мало консольного софта

http://acvarif.info/worldnet/worldnet2.html

 

---

 

Зато тут нет pass - основного менеджера паролей под Linux...

 

---

 

Разные операционные системы длительное время обслуживают различные аудитории: Windows — бизнес-профессионалов, Mac — творческих, а Linux — разработчиков. Разработчикам ОС такой тип рыночного спектра сильно упростил концепцию продукта, технические требования, пользовательский опыт и направление рынка. Однако, он также ужесточил нормы рабочего пространства, что деформировало отдельных пользователей под узкие, непересекающиеся области: у бизнесменов нет возможности заглянуть в творческий процесс, а у разработчиков нет представления о проблемах бизнеса.

В реальности знания и опыт — динамичны, они охватывают несколько дисциплин и сфер деятельности. Представление о том, что "можно иметь способности только к чему-то одному" — это не руководство к овладению мастерством, а попытка справиться с преждевременной оптимизацией. Узнать о том, в чём вы хорошо разбираетесь можно только когда вы попробовали себя в нескольких разных вопросах. И может оказаться, что у вас есть способности ко многим видам деятельности.

Для современных бизнес-аналитиков особенно актуален вопрос ликвидации пробела между бизнесом и разработкой. Бизнес-аналитики должны быть двухплатформенными, способными использовать командную строку, доступную только на Linux (или в macOS), но при этом уметь извлекать широкие возможности из Microsoft Office в Windows. Очевидно, что мир Linux пугает тех, у кого образование в сфере бизнеса. К счастью, как и в большем количестве вопросов, вам необходимо изучить 20% информации, чтобы выполнить 80% работы. Вот мои 20%.

Почему современные бизнес-аналитики должны знать Linux

Благодаря своим open source корням, Linux выиграл от вкладов тысяч разработчиков за всё время его существования. Они построили программы и утилиты, чтобы упростить работу не только себе, но и тем программистам, которые последовали за ними. В результате open source разработка создала эффект сетевой выгоды: чем больше разработчики строили утилиты на оригинальной платформе, тем больше других разработчиков могло влиять на эти утилиты, чтобы писать собственные программы.

В результате получился огромный пакет программ и утилит (то есть софт), который был написан на Linux и под Linux. Большая часть его никогда не портировалась в Windows. Один из примеров — популярная система контроля версий (VCS), которая называется git. Разработчики могли написать софт под Windows, но они этого не сделали. Они написали его для работы в командной строке, для Linux, потому что Linux — экосистема, в которой уже были все необходимые инструменты.

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

  1. Базовые задачи, вроде парсинга файлов, рабочего планирования и поиска текста используются чаще, чем запуск утилиты командной строки.
  2. Языки программирования (Python, C++) и связанные с ними библиотеки выкидывают ошибки, потому что они ожидают конкретных параметров Linux или специфических локаций файловой системы.

Если собрать всё вместе, это выльется в трату времени на переписывание базовых инструментов, которые уже доступны в Linux, они позволят избежать ошибок совместимости с ОС. Тут нет никаких сюрпризов — экосистема Windows просто не была задумана и спроектирована под нужды разработки софта.

Теперь давайте рассмотрим базовые идеи Linux.

Фундаментальная единица Linux: "оболочка"

Shell (оболочка, также известная как терминал, консоль или командная строка) — это текстовый интерфейс пользователя, через который команды отправляются машине. На Linux, по-умолчанию, язык оболочки называется bash. В отличие от Windows-пользователей, которые в своём большинстве используют навигацию "навести-кликнуть" по окну, Linux-разработчики привязаны к клавиатуре и пишут команды в оболочке. Хоть этот переход далёк от естественного для тех, у кого нет бэкграунда в программировании, плюсы разработки в Linux сильно перевешивают изначальное вложение в обучение.

img

Изучаем несколько важных концептов

В сравнении с достаточно зрелым языком программирования, bash имеет всего несколько основных концептов, которые необходимо выучить. Как только вы охватите это, остаток bash — простое запоминание. Я переформулирую понятней: хорошо разбираться в bash значит запомнить 20-30 команд и их часто используемые аргументы.

Linux кажется непроницаемым для тех, кто не касается разработки, из-за способа, которым разработчики (не напрягаясь) извергают эзотерические команды терминала, когда им захочется. Правда в том, что они хорошо знают только несколько десятков команд — за всем более сложным они так же (как и все смертные) обращаются в Google.

Опуская мелкие загвоздки, стоящие на пути, вот главные концепты в bash.

Командный синтаксис

Команды соответствуют синтаксису: {command} {arguments..}

Например, в 'grep -inr', grep — это команда (для поиска текстовой строки) и -inr это флаги/аргументы, которые меняют то, что grep выполняет по умолчанию. Единственный способ понять, что это значит, поискать что-то о них через Google или просто ввести 'man grep'. Я рекомендую выучить команды и их самые используемые аргументы: слишком обременительно помнить, что делает каждый флаг.

Псевдонимы директорий

  • Текущая директория (где я?): .
  • Родительская директория текущей директории: ..
  • Домашняя директория пользователя: ~
  • Корень файловой системы (или родитель всех родителей): /

Например, чтобы поменять текущую директорию на родительскую директорию нужно ввести: cd ..

Таким же способом, чтобы скопировать файл, расположенный в "/path/to/file.txt" в текущую директорию, нужно ввести cp /path/to/file.txt . (заметьте, что в конце команды точка). Поскольку это всего лишь псевдонимы, вместо них может использоваться реальное имя пути.

STDIN / STDOUT

Всё, что вы пишите в окне и подтверждаете (с помощью ENTER), называется стандартным вводом (STDIN).

Всё, что программа выводит в ответе в терминал (например текст из файла), называется стандартным выводом (STDOUT)

Конвейер (piping)

  1. | 

Pipe принимает STDOUT от команды слева от pipe и превращает его в STDIN для команды справа от pipe.

примерecho 'test text' | wc -l

  1. >

Символ "больше" принимает STDOUT от команды слева и записывает/перезаписывает в новый файлу справа

пример:  ls > tmp.txt

  1. >>

Два символа "больше" принимают STDOUT от команды слева и добавляют к новому или существующему файлу справа.

примерdate >> tmp.txt

Шаблоны поиска (wildcards)

Можете представить это как символ % в SQL. Например, можно написать WHERE first_name LIKE 'John%', чтобы найти любые позиции, где данные начинаются с имени John.

В bash можно написать John*. Если вы хотите вывести список всех файлов в какой-то папке, заканчивающихся на ".json", пишете : ls *.json

Завершение с помощью tab

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

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

Выход

Иногда вы застреваете в какой-нибудь программе и не можете оттуда выйти. Это очень часто повторяющееся событие для новичков в Linux, которое невероятно демотивирует. Часто выход происходит с помощью чего-то, содержащего q. Хорошо бы запомнить то, что будет написано ниже и использовать, когда вы в ловушке.

  • Bash
    • CTRL+c
    • q
    • exit
  • Python: quit()
  • Nano: CTRL+x
  • Vim: :q!

Что я помню из команд bash

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

  • cd {directory} изменить директорию
  • ls -lha вывести директорию в виде списка (подробного)
  • vim или nano редактор командной строки
  • touch {file} создать новый пустой файл
  • cp -R {original_name} {new_name} скопировать файл или директорию (и всё их содержимое)
  • mv {original_name} {new_name} переместить или переименовать файл
  • rm {file} удалить файл
  • rm -rf {file/folder} удалить файл или папку без возможности восстановления [использовать аккуратно!]
  • pwd вывести текущую рабочую директорию
  • cat или less или tail или head -n10 {file} вывести в STDOUT содержимое файла
  • mkdir {directory} создать пустую директорию
  • grep -inr {string} найти строку в любом файле этой директории или дочерних директориях
  • column -s, -t отобразить разделенный запятыми файл в виде столбцов

  • ssh {username}@{hostname} соединиться с удалённой машиной

  • tree -LhaC 3 показать структуру директории на 3 уровнями вглубь (с размерами файлов и включая скрытые директории)

  • htop (или top) диспетчер задач

  • pip install --user {pip_package} пакетный менеджер Python для установки пакетов в ~/.local/bin

  • pushd . ; popd ; dirs; cd - push/pop/view директорию в стек + изменить обратно на последнюю директорию

  • sed -i "s/{find}/{replace}/g" {file} заменить строку в файле

  • find . -type f -name '*.txt' -exec sed -i "s/{find}/{replace}/g" {} \; заменить строку для каждого файла в этой и дочерней папках с именем типа *.txt

  • tmux new -s session, tmux attach -t session создать новую сессию терминала без создания нового окна [продвинутый уровень]

  • wget {link} загрузить веб-страницу или веб-ресурс

  • curl -X POST -d "{key: value}" http://www.google.com отправить HTTP-запрос на веб-сервер

  • find вывести список всего содержимого директории и её дочерних директорий рекурсивно

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

Я считаю хорошей практикой хранить список команд, которые полезны в определённых ситуациях, даже если подобные ситуации случаются редко (например, какой процесс блокирует конкретный сетевой порт). Вот несколько нестандартных команд, которые у меня всегда под рукой:

  • lsof -i :8080 вывести список дескрипторов открытых файлов (-i— флаг для сетевых интерфейсов)
  • netstat | head -n20 вывести список открытых интернет/UNIX сокетов и связанной с ними информации
  • dstat -a транслировать текущий диск, сеть, активность CPU и другое
  • nslookup найти hostname для удалённого IP-адреса
  • strace -f -e отследить системные вызовы программы (-e — флаг для фильтрования конкретных системных вызовов)
  • ps aux | head -n20 вывести текущие активные процессы
  • file проверить тип файла (например исполняемый, бинарный, текстовый файл с кодировкой ASCII)
  • uname -a информация о ядре ОС
  • lsb_release -a информация об ОС
  • hostname проверить hostname текущего компьютера (например, название, чтобы другие компьютеры могли иметь доступ к вашему)
  • pstree визуализировать форки процессов
  • time исполнить команду и составить статистику о том, сколько времени потребовалось на исполнение
  • CTRL + z ; bg; jobs; fg отправить процесс в текущий tty в background и обратно на передний план
  • cat file.txt | xargs -n1 | sort | uniq -c посчитать количество уникальных слов в файле
  • wc -l количество строк в файле
  • du -ha показать размер на диске для директорий и их содержимого
  • zcat вывести содержимое заархивированного текстового файла
  • scp скопировать файл с удалённого на локальный сервер или наоборот
  • man {command} показать инструкцию, (т.е. документацию) для команды (но скорее всего легче использовать Google)

 

---

 

 

курс

https://stepik.org/course/3678/syllabus

 

---

 

mc - знаменитый файловый менеджер, клон NC.

mpg123 - проигрыватель mp3.

ogg123 - проигрыватель ogg.

orpheus - проигрыватель аудио-CD, mp3 и ogg с псевдографическим интерфейсом (требует 2 предыдущие программы для поддержки соответствующих форматов аудио).

MPlayer - знаменитый проигрыватель видео, умеет это делать и в консоли (попробуйте -vo vesa, svga или fbdev).

elinks - лучший (из нескольких существующих) консольный веб-браузер.

wvdial - консольная программа для диалапного соединения.

centericq - клиент ICQ/Yahoo/AIM/IRC/Jabber.

wget - программа для закачки файлов и целых сайтов.

И еще - несколько программ, конвертирующих документы разных форматов в обычный текст:

pdftotext (из состава xpdf) - для pdf.

ps2ascii (из состава Ghostscript) - для PostScript.

unrtf - для RTF.

catdoc - для M$ Word.

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

 

---

 

Трюк №1

1

$ sudo !!

Запускает предыдущую команду с root правами.

Полезно, когда забываете написать sudo. «!!» сам захватывает предыдущую строчку.

Трюк №2

1

$ python -m SimpleHTTPServer

Запускает простой сервер прямо в консоли Linux для просмотра текущей директории в виде вебстраницы. Просмотреть можно например так:

1

$ firefox http://$HOSTNAME:8000/

Трюк №3

1

$ ^foo^bar

Запускает предыдущую команду, но с заменой.

Удобно применять, если сделали опечатку. По умолчанию аргументы пустые, поэтому, запустив что-нибудь такое:

1

$ echo "no typozs"

можете легко исправить с помощью

1

$ ^z

Трюк №4

1

$fc

или

Ctrl+X+E

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

Писать можно на ваше усмотрение в vi, emacs, nano… Комбинация клавиш захватывает написанный текст и открывает его в редакторе, задаваемом в $EDITOR.

Трюк №5

Alt+. или Esc+.

Вставляет последний аргумент предыдущей команды. Например, если вы написали:

1

2

$ cp file.txt /var/www/proglib/

$ cd

и нажали Alt+. , то строка станет

1

$ cd /var/www/proglib/

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

Трюк №6

1

$ mount | column -t

Выводит все подключенные файловые системы в человеческом виде.

Трюк №7

1

$ echo "ls -l" | at midnight

Выполняет заданную команду в назначенное время.

Подробнее про at и похожие программы: https://www.computerhope.com/unix/uat.htm

Трюк №8

1

$curl ifconfig.me

Выводит глобальный IP адрес. Также:

1

2

3

curl ifconfig.me/host -> Remote Host

curl ifconfig.me/ua ->User Agent

curl ifconfig.me/port -> Port

Работает это благодаря сайту ifconfig.me

Трюк №9

1

$ man ascii

Позволяет быстро посмотреть таблицу символов Ascii.

Трюк №10

1

$ mount -t tmpfs tmpfs /mnt -o size=1024m

Монтирует часть оперативной памяти как временный раздел в /mnt. Наверняка нет смысла объяснять преимущества использования RAM. Данные будут сохранены до следующей перезагрузки или до

1

$ umount /mnt

Трюк №11

Ctrl-L

Просто очищает терминал.

Трюк №12

1

$ disown -a && exit

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

Трюк №13

1

$ mv filename.{old,new}

Быстрый способ переименовать файл

Трюк №14

1

$ pushd /tmp

Добавляет директорию в стек, чтобы после вернуть к текущей. Например:

1

2

3

4

$ cd /complicated/path/.I/dont/want/to/forget

$ pushd /tmp

$ cd thing/in/tmp

$ popd

Вы снова на коне в /complicated/path/.I/dont/want/to/forget.

Трюк №15

1

$ rm !(*.foo|*.bar|*.baz)

Удаляет все файлы, не имеющие заданное расширение.

Трюк №16

Ну и напоследок:

1

$ telnet towel.blinkenlights.nl

Демонстрирует Звёздные Войны (4 эпизод) прямо в консоли.

В самом начале нужно немного подождать, а для остановки использовать Ctrl+].

 

---

 

0. Автозавершение команд с использованием клавиши Tab


Я начну с кое-чего вполне очевидного, но весьма важного: с автозавершения команд с помощью клавиши Tab.

Когда вы начинаете набирать что-то в терминале Linux, вы можете нажать клавишу Tab, после чего будет выведена подсказка, содержащая набор вариантов продолжения ввода, начинающихся с только что введённых символов.

Например, собираясь скопировать файл с именем my_best_file_1.txt, вы можете просто ввести cp mи нажать Tab для того, чтобы увидеть возможные варианты продолжения команды.
 


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

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

1. Переход в последнюю рабочую директорию


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

cd -


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


Простое переключение между директориями
 

2. Возврат в домашнюю директорию


Этот приём тоже весьма очевиден. Вы можете использовать нижеприведённую команду для того, чтобы вернуться в домашнюю директорию из любого места:
 

cd ~


Однако, в домашнюю директорию можно вернуться ещё быстрее — с помощью команды cd.

В большинстве современных дистрибутивов Linux оболочка предварительно настроена на именно такое восприятие команды cd. Это сэкономит вам пару нажатий клавиш на клавиатуре.
 


Самый быстрый способ перехода в домашнюю директорию
 

3. Вывод на экран содержимого директории


Возможно, вы зададитесь вопросом о том, в чём состоит тонкость использования команды для вывода содержимого директории. Все знают, что для этой цели служит команда ls -l.

Но в том-то всё и дело. Практически все используют команду ls -l для вывода содержимого директорий, в то время как то же самое можно сделать с помощью следующей команды:
 

ll


Работоспособность этой команды зависит от дистрибутива Linux и от настройки оболочки, но весьма вероятно, что вы сможете воспользоваться ей в большинстве дистрибутивов.
 


Использование команды ll вместо команды ls -l
 

4. Вызов нескольких команд в одной строке


Представьте, что вам нужно последовательно выполнить несколько команд. Наверное, вы вводите одну команду, потом ждёте, когда она завершится, дальше — вводите следующую?

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

command_1; command_2; command_3

 

5. Выполнение нескольких команд в одной строке и условие на успешное завершение предыдущей команды


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

Представьте себе, что хотите собрать код, а затем, если сборка оказалась успешной, вызвать make?

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

command_1 && command_2


Вот хороший пример использования &&:
 

sudo apt update && sudo apt upgrade

 

6. Простой поиск и использование ранее введённых команд


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

В подобной ситуации вас спасёт обратный поиск. Данная методика позволяет проводить поиск в истории команд по ключевому слову. Тут достаточно использовать комбинацию клавиш Ctrl + R для запуска обратного поиска и ввести что-то, имеющее отношение к команде. Система просмотрит историю команд и покажет команды, соответствующие введённому запросу.
 

Ctrl + R search_term


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


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

Обратите внимание на то, что в некоторых оболочках Bash для перебора результатов поиска можно пользоваться клавишами Page Up и Page Down.
 

7. Разблокировка терминала после случайного нажатия Ctrl + S


Возможно, вы привыкли пользоваться комбинацией клавиш Ctrl + S для сохранения файлов. Но если нажать эти клавиши в терминале Linux, вы его заблокируете.

Если раньше вы, для того, чтобы исправить положение, вынуждены были закрывать и снова запускать терминал — теперь может вздохнуть спокойно, больше вам этого делать не придётся. Для того, чтобы привести терминал в рабочее состояние, просто воспользуйтесь комбинацией клавиш Ctrl + Q.
 

8. Перемещение к началу или концу строки


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

Конечно, в подобной ситуации можно использовать клавиши Home и End, но, как вариант, с помощью комбинации клавиш Ctrl + A можно перейти в начало строки, а с помощью комбинации Ctrl + E — в конец.
 


Перемещение к началу или концу строки

Мне такой способ кажется удобнее, чем использование клавиш Home и End, особенно когда я работаю на ноутбуке.
 

9. Чтение лог-файлов в режиме реального времени


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

tail -f path_to_Log


Кроме того, вы можете использовать команду grep в её обычном виде для отображения только тех строк, которые вас интересуют:
 

tail -f path_to_log | grep search_term


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

10. Чтение сжатых лог-файлов без их распаковки


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

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

Итак, используя команды zlesszcatzgrep и подобные им, вам не придётся явным образом распаковывать сжатые файлы. Подробности об этих командах можно посмотреть здесь.

Кстати, когда я рассказал об этих «секретных» командах коллеге, мне досталась чашка кофе.
 

11. Использование команды less для чтения файлов


Если вам нужно просмотреть файл, особенно — большой, можно попробовать команду cat, но гораздо лучше поискать что-нибудь другое. Дело в том, что cat выведет на экран весь файл, что не так уж и удобно.

Для просмотра файлов можно воспользоваться редакторами вроде Vi или Vim, работающими в терминале, но если вам просто нужно прочесть файл, очень кстати окажется команда less.
 

less path_to_file


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

12. Повторное использование последнего элемента из предыдущей команды с помощью !$


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

Предположим, вам нужно создать директорию, а потом в неё перейти. Тут можно воспользоваться опцией !$, вводя команду перехода после команды создания директории.
 


Применение !$ для использования аргумента последней команды

Ещё лучше то же самое делается с помощью сочетания клавиш Alt +. (точка). Точку можно использовать несколько раз для перебора опций последней команды.
 

13. Использование предыдущей команды в текущей команде с помощью !!


С помощью !! можно вызвать всю предыдущую команду. Этот приём оказывается особенно полезным, когда вам нужно выполнить команду и оказывается, что для её выполнения нужны привилегии суперпользователя. Например, на рисунке ниже показана ситуация, в которой команда sudo !!позволяет сэкономить немало времени.
 


Воспользуйтесь!!! для подстановки последней команды в качестве аргумента
 

14. Использование псевдонимов для исправления ошибок ввода


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

Например, может случиться так, что вы часто вводите gerp вместо grep. Если с вредной привычкой справиться никак не удаётся, запишите псевдоним в свой файл bashrc следующим образом:
 

alias gerp=grep


Теперь вам не придётся перенабирать эту команду если вы введёте её имя неправильно.
 

15. Копирование и вставка в терминале Linux


Этот совет несколько неоднозначен, так как он зависит от дистрибутива Linux и от терминала. 

Но обычно команды копирования и вставки можно вызывать следующим образом:
 

  • Выделите текст, который надо скопировать, и щёлкните правой кнопкой мыши для его вставки (работает в Putty и других SSH-клиентах для Windows).
  • Выделите текст, который надо скопировать, после чего щёлкните центральной кнопкой мыши (колесом прокрутки) для того, чтобы его вставить.
  • Используйте комбинации клавиш Ctrl + Shift + C для копирования, и Ctrl + Shift + V для вставки.

 

16. Завершение работы команды или процесса


Возможно, то, что я тут хочу посоветовать, совершенно очевидно, однако, всё равно об этом расскажу. Если команда выполняется на переднем плане и вы хотите из неё выйти, можете нажать клавиши Ctrl + C для того, чтобы её остановить.
 

17. Использование команды yes для автоматизации интерактивных команд или скриптов


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

yes | command_or_script

 

18. Очистка содержимого файла без удаления самого файла


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

 > filename

 

19. Выяснение наличия в директории файлов, содержащих определённый текст


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

grep -Pri Search_Term path_to_directory


Однако я советую всем, кому нужен поиск в Linux, разобраться как следует с командой find.
 

20. Вызов справки для любой команды


Хочу завершить этот материал одним весьма очевидным, но, тем не менее, очень важным «трюком», который заключается в вызове справки для команды или инструмента командной строки.

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

command_tool --help

 

 

 

 

18. Очистка содержимого файла без удаления самого файла


для этих целей я использую «echo > filename»

Нужно ставить пакет wcstools

 

Лайфхак
: > filename

 

 

Проблема с echo заключается в том, что полученный файл будет не пустым. Нужно либо писать echo -n >filename (linux) либо что-то вроде echo -e '\e' >filename, если у вас не bash, и просто :>filename в баше. На FreeBSD есть отдельная команда truncate, вроде как

 

 

cat > filename
Ctrl + D

 

truncate -s 0 filename

 

 

«cat /dev/null > filename»

 

 

12. Повторное использование последнего элемента из предыдущей команды с помощью !$


Еще можно нажатие Alt +. (точка)

 

 

18. Очистка содержимого файла без удаления самого файла


Можно просто

>filename

 

 

yes |


выводит y, но выводить можно всё что угодно, например:

 

 

ll — это не команда, а алиас к ls -l. Чуть больше рассказать про алиасы было бы многократно полезнее, чем рассказать про ll, который не предустановлен во многих дистрибутивах.

 

Плюсанул бы, да не умею… Это чуть ли не первый урок от MagPi в книге Bash Essentials — упростим себе жизнь, раскомментировав этот алиас в .bashrc. А ещё доступен аж целый la!

 

 

 

 

 

Автор, где хардкор? Ну и часть советов вообще скорее вредные, например про!!! — очень частый паттерн это писать sudo !!, но вы при этом не видите, какую команду будете исполнять, и злоупотребление этой командой может привестм к печальным последствиям. Ну и не слова про fish, тоже обидно.

Как насчет: sudo !!<tab>, прочитать, а потом только запускать

 

 

Потому что это указание на домашнюю папку пользователя.
~ без имени пользователя = текущий пользователь.
А вот cd ~user1 — зайти в домашнюю папку user1, например /home/user1 (или что у него прописано в /etc/passwd)

 

 

«В подобной ситуации полезным окажется разделитель команд; (точка с запятой). При таком подходе вы можете ввести несколько команд в одной строке. При этом, в отличие от обычного ввода команд, для выполнения следующей команды не надо ждать завершения предыдущей.
command_1; command_2; command_3»



Неверно. команды будут выполняться последовательно, после завершения предыдущей.
Они же не в фоне запускаются (& в конце)

 

 

 

 

Есть ли какой-то способ допилить этот поиск, чтобы можно было перемещаться по результатам стрелочками? Каждый раз обламываюсь, и в итоге делаю history | grep + copy/paste :( Очень неинтуитивно. Максимально круто было бы иметь какую-нибудь функцию для zsh, чтобы не скроллить по одному результату, а просто выбрать из списка.

For zsh

 

[[ -n "$key[Up]"   ]] && bindkey -- "$key[Up]"   up-line-or-beginning-search
[[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search
bindkey "^[[1;5A" history-substring-search-up
bindkey "^[[1;5B" history-substring-search-down

 

"\e[A":history-search-backward
"\e[B":history-search-forward


в .inputrc для bash

 

 

fzf же!
Скачать и добавить строчку в .bashrc:

[ -f ~/.fzf.bash ] && source ~/.fzf.bash

 

 

 

 

Для пункта №9. Логи удобно будет просмтривать вот так:

tail -f /var/log/file.log | ccze -A

 

 

 

apt-get moo


как про это могли забыть?

 

 

 

 

 

 

А ещё, если вы делаете tail -f ... | grep onething | awk '{print $1}', то по умолчанию буферизация будет блочная у grep и вы будете видеть результаты большой задержкой. Чтобы всё же вернуть построчную буферизацию, нужно указать grep дополнительный --line-buffered:

 

tail -f ... | grep --line-buffered onething | awk '{print $1}'

 

 

 

 

 

11. Использование команды less для чтения файлов


Протестировал только что, в отличие от more после нажатия q выведенный кусок файла пропадает из консоли. More удобнее, можно просто прокрутить терминал назад и снова увидеть нужный кусок файла. Такое бывает нужно.
Конечно, less позволяет сразу редактировать, но если в дистре есть less то есть и nano или mcedit которые для редактирования удобнее.

15. Копирование и вставка в терминале Linux


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

 

less позволяет ПРОСОТ бегать назад, и прокручивать нужно не терминал, а сам текст в less.
Less также позволяет выполнять поиск назад, а не только вперед, фильтр строк и многое другое.
А more — просто постраничный вывод вперед, с возможностью поиска только вперед. И с автоматическим выходом по окончании файла

 

А ещё в less можно уже после открытия файла выключить word-wrap путем нажатия -S<Enter> (минус S, и потом Enter). Позволяет удобно просматривать
логи с длинными строками.

 

 

 

Если терминал «испортился» и показывает странные символы, то его зачастую можно починить, набрав <Enter>reset<Enter> (на самом деле просто выполнить команду reset) — у терминала на самом деле есть 2 «раскладки» и это использовалось задолго до изобретения UTF-8 для того, чтобы рисовать псевдографику. Команда reset сбрасывает терминал близко к оригинальным настройкам и зачастую может «починить» терминал, который «сошел с ума».

не только раскладки. Есть еще просто ESC-последовательности, которые управляют цветом. То есть сделав cat какого-нить бинарника, можно оказаться в ситуации, когда печатаешь черным по черному, или вырвиглазным мигающим по ярко красному, с шириной экрана 10 символов.
Тоже reset спасает.

 

 

 

Еще очень полезная утилита — parallel

Суть не в быстрее, а в «параллельно». Нужно слить 100+ страниц для теста по базе урлов, или прогнать моделирование на 100+ входных данных..., 
то вместо того, чтобы вручную что-то придумывать, просто запускаем скрипт через parallel.

 

 

Э-э-э. В п 3 помянута команда ll, которая в Debian-based дистрибутивах как раз элиас в .bashrc alias ll="ls -alF". Но сами элиасы отнесены аж в п 14.

 

 

0. Нужен установленный bash-complection. Который частенько отсутствует на ВДСках, разворачиваемых из контейнеров.

 

 

с помощью комбинации клавиш Ctrl + A можно перейти в начало строки, а с помощью комбинации Ctrl + E — в конец.


да, удобная вещь, когда в Putty (в mc) Home и End не работают…

 

 

  • А вместо tail -f filename.ext можно использовать tailf filename.ext

 

 

Когда надо вспомнить как сделать распространенное действие с какой либо утилитой командной строки, очень помогает cheat: github.com/chrisallenlane/cheat

 

 

Если команда выполняется на переднем плане и вы хотите из неё выйти, можете нажать клавиши Ctrl + C для того, чтобы её остановить.


Ctrl-C отправляет SIGINT сигнал, который вызывает завершение процесса.
Ctrl-Z отправляет SIGTSTP сигнал, который приостанавливает выполнение процесса. Продолжить выполнение можно командой fg (от foreground)

 

 

… и bg (background), чтобы продолжить выполнение в фоне.

 

 

или kill -n 18

 

        • jobs — узнать список таких задач, «поставленных на паузу» или отправленных в бэкграунд.

 

 

 

14. Использование псевдонимов для исправления ошибок ввода



Cразу вспомнил забавную утилиту thefuck

C ней было бы так:

$ gerp
zsh: command not found: gerp

$ fuck
grep [enter/↑/↓/ctrl+c]

 

 

 

Удобнее screen Много чем. у tmux-а только одно неудобство — он недоступен из коробки, нужно ставить отдельно.
А так — разделение на окна, кроме виртуальных вкладок, и поддержка командной строки, что позволяет автоматизировать переход в разные режимы, плюс внятный статус бар, плюс отсутствие глюков с терминалом — этого уже более чем достаточно.

 

 

 

 

 

 

 

 

 

 

 

 

 

Из последнего: здорово экономят время команды вида
for i in 1 2 3; do ssh root@cassandra$i.example.com /opt/cassandra/bin/nodetool status; done

Для копирования файлов, проверки статуса софта по нескольким серверам отлично подходят.

 

 

---

 

 

забавные задачи по bash

https://habr.com/ru/post/339246/

 

 

---

 

http://linux-bash.ru/

сайт линукс в консоли

 

 

---

 

Команда Описание
Ctrl+Alt+F1 выход в полноэкранную консоль из графического режима
Ctrl+Alt+F7 возврат из полноэкранной консоли в графический режим
Ctrl+C завершить текущую команду, если она зависла или выполняется долго
Ctrl+D аналог команды exit
Ctrl+W удалить последнее слово в текущей строке
Ctrl+U удалить строку
Ctrl+S пауза
Ctrl+Q продолжение вывода информации на терминал
Tab если вы наберёте начало какой-либо команды, а потом нажмёте Tab, то он автоматом допишет её название
Shift+PgUp прокрутить текст в терминале вверх
Shift+PgDown прокрутить текст в терминале вниз
Стрелка вверх прокрутка команд, введённых в консоли ранее
Стрелка вниз

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

 

 

 

---

 

Команды Linux для навигации в терминале

 

 

  1. &&. Строго говоря, это не команда. Если вы хотите выполнить сразу несколько команд, поставьте между ними двойной амперсанд вот так: первая_команда && вторая_команда. Терминал выполнит команды по порядку. Вы можете ввести столько команд, сколько захотите.
  2. alias. Присваивает созданные вами названия длинным командам, которые вы не можете запомнить. Введите alias длинная_команда короткая_команда.
  3. cd. Изменяет текущую терминальную папку. Когда вы запускаете терминал, он использует вашу домашнюю папку. Введите cd адрес_папки, и терминал будет работать с файлами, которые там находятся.
  4. clear. Очищает окно терминала от всех сообщений.
  5. history. Отображает все недавно введённые вами команды. Кроме того, вы можете переключаться между недавними командами с помощью клавиш «Вверх» и «Вниз». Если вы не хотите, чтобы введённая вами команда была записана, поставьте перед ней пробел так: ваша_команда.
  6. man. Отображает руководство по программам и командам Linux. Введите man имя_пакетаили man ваша_команда.
  7. whatis. Отображает краткое описание какой-либо программы. Введите команду и название программы whatis имя_пакета.

Команды Linux для получения прав суперпользователя

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

  1. sudo. Эта команда даст вам права суперпользователя. Введите sudo перед нужной командой (например,sudo apt upgrade), чтобы выполнить её от имени администратора. Система спросит у вас пароль.
  2. sudo su. После этой команды все введённые вами команды будут исполняться от имени суперпользователя, пока вы не закроете терминал. Используйте её, если вам нужно выполнить много команд с правами администратора.
  3. sudo gksudo. Команда для запуска с правами администратора приложения с графическим интерфейсом. Например, если вы хотите переместить или изменить системные файлы, введите sudo gksudo nautilus (укажите тот файловый менеджер, которым пользуетесь).
  4. sudo !!. Эта команда запустит ранее введённую команду с правами администратора. Полезно, если вы набрали команду без sudo.
Не выполняйте от имени суперпользователя команд, которых не понимаете.

Команды Linux для управления пакетным менеджером

Установку и удаление приложений в Linux выполняют пакетные менеджеры. В Ubuntu и Debian пакетный менеджер называется apt, в Fedora — dnf, в Arch и Manjaro — pacman. Они загружают приложения из сетевых репозитариев, источников пакетов. Давать им команды следует с правами суперпользователя.

apt (Debian/Ubuntu/Mint)

  1. sudo apt install имя_пакета. Установить нужный пакет.
  2. sudo apt-add-repository адрес_репозитария. Добавить сторонний репозитарий.
  3. sudo apt update. Обновить сведения о пакетах.
  4. sudo apt upgrade . Обновить все пакеты до самых свежих (выполнять после apt update).
  5. sudo apt remove имя_пакета . Удалить ненужный пакет.
  6. sudo apt purge имя_пакета . Удалить ненужный пакет со всеми зависимостями, если хотите освободить больше места.
  7. sudo apt autoremove . Удалить все ненужные зависимости, бесхозные пакеты и прочий мусор.

dnf (Red Hat/Fedora/CentOS)

  1. sudo dnf install имя_пакета. Установить нужный пакет.
  2. sudo dnf config-manager --add-repo адрес_репозитария. Добавить сторонний репозитарий.
  3. sudo dnf upgrade. Обновить все пакеты до самых свежих.
  4. sudo dnf remove имя_пакета. Удалить ненужный пакет.
  5. sudo dnf autoremove. Удалить все ненужные зависимости.

pacman (Arch/Manjaro)

  1. sudo pacman -S имя_пакета. Установить нужный пакет.
  2. sudo yaourt -S имя_пакета. Установить пакет из AUR, если его нет в основном репозитарии.
  3. sudo pacman -Sy. Обновить сведения о пакетах.
  4. sudo pacman -Syu. Обновить все пакеты до самых свежих.
  5. sudo pacman -R имя_пакета. Удалить ненужный пакет.
  6. sudo pacman -Rs имя_пакета. Удалить ненужный пакет со всеми зависимостями.

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

sudo apt install firefox clementine vlc

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

Команды Linux для управления процессами

  1. kill. Эта команда служит для принудительного завершения процессов. Нужно ввести kill PID_процесса. PID процесса можно узнать, введя top.
  2. xkill. Ещё одна команда для завершения процессов. Введите её, затем щёлкните по тому окну, которое нужно закрыть.
  3. killall. Убивает процессы c определённым именем. К примеру, killall firefox.
  4. top. Отображает перечень запущенных процессов, сортируя в зависимости от потребления ресурсов CPU. Своего рода терминальный «Системный монитор».

Команды Linux для управления файлами

Просмотр и изменение файлов

  1. cat. Когда команда используется с одним текстовым файлом (вот так: cat путь_к_файлу), она отображает его содержимое в окне терминала. Если указать два и больше файлов, cat путь_к_файлу_1 путь_к_файлу_2, она склеит их. Если ввести cat путь_к_файлу_1 > новый_файл, она объединит содержимое указанных файлов в новый файл.
  2. chmod. Позволяет изменять права доступа к файлу. Может пригодиться, если вы хотите внести изменения в системный файл.
  3. chown. Изменяет владельца файла. Следует выполнять с правами суперпользователя.
  4. file. Выводит информацию об указанном файле.
  5. nano. Открывает простой текстовый редактор. Можно создать новый текстовый файл или открыть существующий: nano путь_к_файлу.
  6. rename. Переименовывает файл или несколько файлов. Команду можно использовать и для массового переименования файлов по маске.
  7. touch. Изменяет дату последнего открытия или модификации указанного файла.
  8. wget. Загружает файлы из интернета в терминальную папку.
  9. zip. Распаковывает и сжимает архивы.

Создание и удаление файлов и папок

  1. mkdir. Создаёт новую папку в текущей терминальной папке или в указанной папке: mkdir путь_к_папке.
  2. rmdir. Удаляет указанную папку.
  3. rm. Удаляет файлы. Может удалить как отдельный файл, так и группу, соответствующую определённым признакам.

Копирование и перемещение файлов

  1. cp. Создаёт копию указанного файла в папке терминала: cp путь_к_файлу. Или вы можете указать назначение cp путь_к_файлу путь_для_копии.
  2. mv. Перемещает файл из одной папки в другую. Вы можете указать имя для перемещаемого файла. Забавно, но в Linux эта команда может использоваться и для переименования файлов. Просто укажите ту же папку, где находится файл, и другое имя.

Поиск файлов

  1. find. Поиск файлов по определённым критериям, таким как имя, тип, размер, владелец, дата создания и модификации.
  2. grep. Поиск текстовых файлов, содержащих определённые строки. Критерии очень гибко настраиваются.
  3. locate. Поиск файлов и папок, чьи названия подходят запросу, и отображение их путей в файловой системе.

Команды Linux для работы с разделами

  1. lsblk. Эта команда демонстрирует, какие диски есть в вашей системе и на какие разделы они поделены. Также команда отображает имена ваших разделов и накопителей, в формате sda1, sda2 и так далее.
  2. mount. Монтирует накопители, устройства или файловые системы Linux, чтобы вы могли с ними работать. Обычно устройства подключаются автоматически, как только вы щёлкнете по ним в файловом менеджере. Но иногда может понадобиться примонтировать что-то вручную. Вы можете подключать что угодно: диски, внешние накопители, разделы и даже ISO-образы. Эту команду нужно выполнять с правами суперпользователя. Чтобы примонтировать имеющийся диск или раздел, введите mount sdX.
  3. umount. Демонтирует файловые системы. Команда umount sdX отключит файловую систему внешнего носителя, чтобы вы могли извлечь его.
  4. dd. Эта команда копирует и преобразовывает файлы и разделы. У неё множество различных применений. Например, dd if=/dev/sda of=/dev/sdbсделает точную копию раздела sda на разделе sdb. dd if=/dev/zero of=/dev/sdX затрёт содержимое указанного носителя нулями, чтобы информацию было невозможно восстановить. А dd if=~/Downloads/ubuntu.iso of=/dev/sdX bs=4M сделает загрузочный носитель из скачанного вами образа с дистрибутивом.

Команды Linux для управления системой

  1. df. Отображает объём вашего диска, и сколько на нём осталось свободного места.
  2. free. Отображает объём доступной и занятой оперативной памяти.
  3. uname. Отображает сведения о системе Если ввести uname, терминал сообщит только Linux. Но команда uname -a выводит сведения об имени компьютера и версии ядра.
  4. uptime. Сообщает, как долго запущена ваша система.
  5. whereis. Отображает расположение исполняемого файла нужной программы.
  6. whoami. Называет имя пользователя.

Команды Linux для управления пользователями

  1. useradd. Регистрирует нового пользователя. Введите useradd имя_пользователя, и пользователь будет создан.
  2. userdel. Удаляет учётную запись и файлы пользователя.
  3. usermod. Изменяет учётную запись пользователя. Может переместить домашнюю папку пользователя или назначить дату, когда учётная запись будет заблокирована.
  4. passwd. Изменяет пароли учётных записей. Обычный пользователь может изменить пароль только своей учётной записи, суперпользователь может изменить пароль любой учётной записи.

Команды Linux для управления сетью

  1. ip. Многофункциональная команда для работы с сетью. Команда ip address show выводит сведения о сетевых адресах, ip route управляет маршрутизацией и так далее. Давая команды ip link set ethX upip link set ethX down, можно включать и выключать соединения. У команды ipмного применений, так что перед её использованием лучше ознакомиться с руководством или ввести ip --help
  2. ping. Показывает, подключены ли вы к сети, и помогает определить качество связи.

И ещё кое-что

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

  1. cowsay что_угодно. Корова произнесёт то, что вы ей скажете.
  2. fortune | cowsay. Корова выдаст умную (или не очень) мысль или цитату.
  3. cowsay -l. Выводит список всех животных, которые могут быть отображены в терминале. Если вы вдруг не любите коров.
  4. fortune | cowsay -f животное_из_списка. Животное на ваш выбор начинает сыпать цитатами, иногда уместными.
  5. sudo apt-get install fortunes fortune-mod fortunes-min fortunes-ru. Заставит весь зоопарк говорить по-русски. Без этого животные цитируют Твена и Уайльда в оригинале.

Это далеко не все команды Linux. Если вам нужно узнать в деталях параметры и способы применения команд Linux, вы можете воспользоваться встроенным руководством. Наберите man ваша_команда или ваша_команда --help.

 

 

 

----

 

 

 

Что такое bash

Bash расшифровывается как Bourne again shell (что можно перевести как «Еще одна оболочка Борна»), название частично заимствованно от более ранней версии командной оболочки UNIX, которая называлась просто Bourne shell («Оболочка Борна» – по фамилии разработчика Стивена Борна).

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

Вход в командную строку

Используя Ubuntu в качестве операционной системы, вы можете перейти к командной строке двумя путями, а именно через консоль или через терминал.
Если вы хотите зайти в командную строку через терминал, то для этого необходимо нажать Ctrl+Alt+F(1-6) – в зависимости от выбранного номера (F1, F2…) вы попадаете в первую, вторую или другую по счету виртуальную консоль (они независимы и запускаются во время загрузки Ubuntu), каждая из которых имеет интерфейс командной строки. Если вы нажмете Ctrl+Alt+F7, то перейдете в седьмую виртуальную консоль, которая имеет графический интерфейс.

Что касается терминала, то это графическая программа, которая эмулирует консоль. Вы можете найти ее в меню, выбрав «Приложения», затем «Стандартные», а затем «Терминал», либо нажав сочетание клавиш Ctrl+Alt+T. Вы сможете выполнять команды, продолжая находиться в графическом интерфейсе.
Также возможен вариант, когда вам необходимо подключиться к серверу, на котором установлена Ubuntu. В этом случае вам нужно воспользоваться специальной программой (например, puTTy): наберите нужный ip-адрес, а затем введите имя пользователя и пароль.

Примечание.
При вводе пароля в командную строку он не высвечивается – вам нужно просто набрать пароль и нажать Enter. Если пароль введен правильно, вы сможете продолжить работу в командной строке.

Пользователь и система

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

whoami

Если вам нужно узнать не только о вашем, но и о других пользователях, находящихся в данный момент в этой операционной системе, используйте команды:

who

или

w

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

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

Ключи – это специальные аргументы, которые пишутся через пробел после команды и начинаются с одного или двух дефисов. Они определяют параметры, которые будут применены к команде. Как правило, узнать о доступных ключах вы можете, написав команду и --help (либо -help): к примеру,

uname --help

У команды uname вы можете задать ключ -a (или --all), и тогда на экран будет выведена вся информация об операционной системе:

uname -a

Если вас интересуют конкретно данные о ядре, то наберите следующую команду:

uname -rv

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

ps -a

А команда pstree выведет информацию в виде дерева процессов.

Узнать сетевое имя машины вы можете с помощью команды hostname.

Переход по директориям

В этом разделе вы познакомитесь с основными командами bash, которые позволят вам выполнять самые простые действия в командной строке.
Команда cd позволяет переходить из одной директории в другую. При этом если вы используете команду без ключей, то попадете в домашнюю директорию; для того, чтобы перейти в какую-либо конкретную директорию, необходимо просто прописать ее путь, к примеру:

cd /home/users/dir1

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

cd ../.. - переход на две директории выше;

cd -     - переход в предыдущую директорию (в которой вы были до перемещения в нынешнюю).

Команда pwd укажет путь той директории, в которой вы в данный момент находитесь.

Создание, перемещение и удаление

Используйте команду mkdir для создания директории. Не забудьте указать имя:

mkdir dir1

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

mkdir /home/users/dir1

Для создания файла вам нужно ввести команду touch и название будущего файла:

touch file1

В этом случае прописать путь, где нужно создать файл, тоже возможно:

touch /home/users/dir1/file1

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

mv file2 /home/users/dir2
mv dir1 /home/users/dir3

Обратите внимание, что команда mv также используется для переименования, поэтому если при отсутствии директории dir2 вы напишете такую команду:

mv dir1 dir2

то директория dir1 будет переименована в директорию dir2. Этот пример справедлив и для файлов, которым вы можете давать другие названия при помощи команды mv.

Для удаления файлов следует использовать команду rm, а для удаления директорий rmdir. Если вы хотите удалить каталог, используйте команду rm с ключами -rf:

rm -rf /home/users/

Еще одно действие, которое вы можете использовать, - это копирование при помощи команды cp. Синтаксис у этой команды такой же, как и у предыдущих, - вы просто пишете, что и куда хотите скопировать. Для копирования директории обязательно нужно использовать ключ -r, при этом если конечная директория (dir2) не существует, то она будет создана при копировании:

cp -r dir1 dir2

Информация о файлах, каталогах и процессах

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

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

-s - запрос информации о размерах файлов (или директорий);

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

-h - перевод размера файлов в удобном для восприятия формат (Кбайт, Мбайт и т.д.).

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

ls -sh

Другой командой, которая поможет вам получить необходимую информацию, является команда du. К примеру, введя эту команду:

du -sk *

вы получите информацию о размерах и именах файлов.

Информацию о работающих процессах вы можете получить при помощи команды df. Лучше всего использовать ее сразу с ключом -h, чтобы данные были показаны в более удобном для чтения формате:

df -h

Поиск и использование регулярных выражений

Для поиска файлов в bash используется команда find. Ее синтаксис следующий: find + нужная директория (путь) + ключ (или несколько) + критерии ключа + (опционально) последующее действие над найденными файлами.

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

find --h

К примеру, следующая команда позволит вам найти все файлы, которые находятся в директории dir1, и имеют название file:

find /home/users/dir1 -name ‘file*’

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

* - обозначает любое количество символов, включая их отсутствие (например, по запросу file* будут найдены все файлы: file, file1, file829, fileabc и т.д.);

? - обозначает один символ (по запросу file? будут найдены файлы с одним символом после слова file: file1, file9, filea и т.д.; по запросу file?? будут найдены файлы с двумя символами: file12, file34, file92 и т.д.);

[] - обозначает подмножество значений, которые может принимать один символ (по запросу file[1-9] будут найдены файлы: file1, file2, file3 и так далее до file9; по запросу file[a-d] файлы filea, fileb, filec и filed).

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

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

Этим очень удобно пользоваться для логирования, если вы хотите записать какие-либо данные в файл. К примеру, эта команда запишет все найденные согласно указанными параметрам файлы в файл log (он автоматически появится в той директории, в которой вы работаете):

find /home/users -name ‘file*’ >> log

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

find /home/users -name ‘file*’ | sort -r

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

Содержимое файлов

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

cat file1 | more

Если вам нужно не только посмотреть содержимое файла, но и отредактировать его, тогда нужно использовать одну из утилит: nano либо vim. Это текстовые редакторы, при помощи которых вы можете открыть файл, изменить и сохранить его. Несмотря на кажущееся сходство, эти утилиты имеют ряд отличий; большинство пользователей сходится во мнении, что nano представляет собой более простой редактор, в то время как vim обладает большими возможностями.

 

 

 

---

 

Видели про-юзеров Linux, которые эффективно работают в терминале? Хотите так же? Не вопрос: в этой статье мы собрали некоторые из полезных команд, которые помогут вам сэкономить время и повысить продуктивность.

Использование табов для автодополнения

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

Например, если вы хотите скопировать файл с именем file1.txt, вы можете ввести только cp f, нажать Tab и увидеть возможные варианты.

$ cp f
file1.txt  file2.txt  file3.txt  file4.txt
$ cp f

Также Tab можно использовать для автодополнения команд.

Возвращение в последнюю рабочую директорию

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

cd -

Она вернёт вас в последнюю рабочую директорию и вам не придётся вручную вводить длинный путь.

Примечание Последняя рабочая директория хранится в переменной окружения OLDPWD; вы можете использовать эту переменную для своих целей (попробуйте echo $OLDPWD) или даже подложить команде cd - другой путь (OLDPWD=/usr/bin cd -).

Возвращение в домашнюю директорию

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

cd ~

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

Вывести содержимое каталога

Вы, наверное, догадываетесь, какая команда нужна для отображения содержимого каталога. Всем известно, что для этого можно использовать ls -l.

Однако не все знают, что можно обойтись командой ll.

Конечно, всё зависит от дистрибутива, но в большинстве случаев вы сможете воспользоваться этой командой.

$ ll
total 44
-rw-r--r--.  1 root root  720 May 31  2016 bootchart.conf
-rw-r--r--.  1 root root  615 Jun 22 14:11 coredump.conf
-rw-r--r--.  1 root root    0 Apr 20 16:56 dont-synthesize-nobody
-rw-r--r--.  1 root root 1027 Jun 22 14:11 journald.conf
-rw-r--r--.  1 root root 1042 Jul 18 19:03 logind.conf
drwxr-xr-x.  2 root root 4096 Jul 18 19:05 network
-rw-r--r--.  1 root root  688 Jul 18 19:03 resolved.conf
drwxr-xr-x. 16 root root 4096 Sep 15 13:29 system
-rw-r--r--.  1 root root 1682 Jul 18 19:03 system.conf
-rw-r--r--.  1 root root  677 Jul 18 19:03 timesyncd.conf
drwxr-xr-x.  2 root root 4096 Jul 18 19:05 user
-rw-r--r--.  1 root root 1130 Jun 22 14:11 user.conf

Примечание На самом деле, ll является не отдельной командой, а псевдонимом для ls -l.

Запуск нескольких команд за раз

Допустим, вам нужно запустить несколько команд одну за другой. Что вы будете делать? Подождёте завершения первой команды, а затем запустите следующую?

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

command_1; command_2; command_3

Примечание При запуске команд таким образом, они выполняются не параллельно, а последовательно. Если вам нужен именно первый вариант, то используйте конструкцию (command_1 &); (command_2 &).

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

Как запускать несколько команд за раз вы уже знаете. А как убедиться, что команды не завершились с ошибкой?

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

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

command_1 && command_2

Как пример использования && можно привести команду sudo apt update && sudo apt upgrade для обновления системы через терминал на системах, основанных на Debian.

Время убивать

Есть несколько способов «убить» программу. Команда killall сделает это по имени, а kill требуется номер процесса. Например, killall chrome убьёт все процессы chrome. Также можно послать любому процессу сигнал прерывания (как Ctrl+C) с помощью kill -INT <номер процесса>.

Пора остановиться

Чтобы поставить работающую команду на паузу нажмите комбинацию Ctrl+Z, а чтобы продолжить — %.

Простой поиск и использование предыдущих команд

Представим ситуацию, когда вы воспользовались какой-то командой пару часов назад и снова хотите её использовать, но не можете вспомнить название.

Здесь поможет обратный поиск. С его помощью можно по заданному условию найти команду в истории.

Просто нажмите комбинацию Ctrl+R и введите часть команды. Затем вам будут показаны команды из истории, которые удовлетворяют заданному условию.

Ctrl+R <условие>

По умолчанию показывается только один результат. Чтобы увидеть больше результатов, нужно повторно нажать Ctrl+R. Чтобы выйти из поиска, нажмите Ctrl+C.

Учтите, что в некоторых оболочках Bash можно использовать Page Up и Page Down с условием поиска для автодополнения команды.

Выводим консоль из зависания после Ctrl+S

Многие привыкли использовать комбинацию Ctrl+S для сохранения. Однако после её использования в терминале, он часто зависает. Чтобы вернуть его в нормальное состояние, нажмите комбинацию Ctrl+Q.

Переход к началу или концу строки

Допустим, вы вводите длинную команду и вдруг понимаете, что вам нужно что-то изменить в её начале. Чтобы попасть в начало или конец строки вы можете несколько раз нажать клавишу стрелки влево/вправо или Home/End. А можете нажать Ctrl+A или Ctrl+E.

Чтение лог-файла в реальном времени

В ситуациях, когда вам нужно анализировать логи при запущенном приложении, можно использовать команду tail с флагом -f.

tail -f <путь к лог-файлу>

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

tail -f <путь к лог-файлу> | grep <регулярное выражение>

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

Если вы хотите просматривать системный лог в реальном времени, воспользуйтесь аналогичной опцией -f команды journalctl:

journalctl -f

Чтение сжатых логов без извлечения

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

К счастью, в таких ситуациях всегда спасут z-команды. Они являются альтернативами обычных команд, которые используются для работы с логами вроде lesscatgrep.

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

Использование less для чтения файлов

Команда cat не всегда лучший выбор для отображения содержимого файла, особенно если он большой — cat выведет сразу весь файл.

Вы можете использовать Vi, Vim или другой терминальный текстовый редактор, но если вам просто нужно прочитать файл, то команда less подойдёт гораздо лучше.

less <путь к файлу>

В less можно искать нужную подстроку, листать по страницам, отображать номера строк и не только. А ещё less может читать не только текстовые документы, но ещё и архивы и другие типы файлов.

Использование аргумента предыдущей команды с помощью !$

Использование аргумента предыдущей команды может пригодиться во многих ситуациях. Например, вы создали директорию и вам нужно сразу в неё перейти.

$ ls /
bin  boot  cdrom  dev  etc  home  sys  tmp  usr  var  vmlinuz  vmlinuz.old
$ cd !$
cd /

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

Использование предыдущей команды в текущей с помощью !!

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

Быстрое sudo !! позволяет сэкономить немного времени.

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

Вероятно, вы уже знаете, зачем нужна команда alias. Её можно приспособить для исправления опечаток.

Представим, что вместо grep вы часто пишете gerp. Если вы установите псевдоним следующим образом, то вам не придётся больше перепечатывать команду:

alias gerp=grep

К слову, для исправления опечаток не обязательно использовать псевдонимы — утилита The Fuck сама исправит предыдущую команду.

Перезагружаемся

Чтобы выключить компьютер из терминала, введите poweroff, а для перезагрузки — reboot.

Вставка скопированного текста в терминал

Здесь не всё однозначно, так как между дистрибутивами Linux и терминалами есть определённая разница. Но в общем случае вставить текст можно одним из следующих способов:

  • Скопируйте текст и кликните правую кнопку мыши для вставки (работает в Putty и других Windows-клиентах SSH);
  • Скопируйте текст и нажмите среднюю кнопку мыши (колёсико) для вставки;
  • Ctrl+Shift+C для копирования и Ctrl+Shift+V для вставки;
  • В некоторых эмуляторах терминала работает привычная комбинация Ctrl+V.

Завершить работающий процесс/команду

Возможно, это слишком очевидно. Если у вас запущена команда, работу которой вы хотите завершить, просто нажмите Ctrl+C и команде будет отправлен сигнал прерывания (SIGINT). А если вы хотите быстро покинуть терминал, нажмите комбинацию Ctrl+D, которая для баша и других интерактивных программ означает окончание ввода.

Команда для скриптов или команд, которым нужен интерактивный ответ

Команда yes может пригодиться, если какой-то скрипт/команда требует взаимодействия с пользователем, которое заключается только в нажатии Y каждый раз.

yes | <команда или скрипт>

Очистить файл, не удаляя его

Если вам нужно только очистить содержимое файла, а не удалить его, вы можете сделать это следующим образом:

> имя_файла

Узнать, есть ли файл с определённым текстом

В терминале Linux можно искать разными способами. Если вам нужно узнать, есть ли файл(ы) с определённым текстом, можете воспользоваться этой командой:

grep -Pri <текст_для_поиска> <путь_к_директории>

Получаем справку для каждой команды

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

<команда> --help

Кроме того, порой можно получить более подробную справку с помощью команды man <команда>.

Получаем историю команд

Если вы хотите взглянуть на все команды, которые вы когда-либо запускали, введите history. Если вам нужен не полный список, а только несколько последних, воспользуйтесь командой fc -l.

Быстро запускаем команды из истории

При получении команд одним из вышеуказанных способов рядом с каждой командой находится её номер в истории. Чтобы быстро запустить команду из этого списка просто введите !<номер команды>.

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

Если вы хотите выполнить команду так, чтобы она не сохранилась в истории, просто введите пробел перед командой.

Поднимаем простой HTTP-сервер

Чтобы поднять сервер и сделать доступной текущую директорию по адресу http://localhost:8000/ введите python3 -m SimpleHTTPServer.

Пишем длинные команды с удобством

Если зажать Ctrl, а затем нажать по очереди X и E, то откроется текстовый редактор, в котором можно будет спокойно записать длинную команду, а после выхода из него — выполнить её.

Восстанавливаем терминал

Если вы вывели в терминал сырые бинарные данные или ещё что-то, что выводить не стоило, то убрать увиденную абракадабру позволит команда reset.

Информация о файловых системах

Чтобы получить информацию о текущих смонтированных файловых системах с удобным оформлением по столбцам, введите команду mount | column -t.

Также вы можете воспользоваться командой findmnt, которая отображает информацию в виде красивого дерева и сама форматирует столбцы, а также может найти нужную файловую систему:

$ findmnt
TARGET                                SOURCE      FSTYPE  OPTIONS
/                                     /dev/sda4   ext4    rw,relatime,seclabel
├─/sys                                sysfs       sysfs   rw,nosuid,nodev,noexec,rela
│ ├─/sys/kernel/security              securityfs  securit rw,nosuid,nodev,noexec,rela
│ ├─/sys/fs/cgroup                    tmpfs       tmpfs   ro,nosuid,nodev,noexec,secl
│ │ ├─/sys/fs/cgroup/unified          cgroup2     cgroup2 rw,nosuid,nodev,noexec,rela
│ │ ├─/sys/fs/cgroup/pids             cgroup      cgroup  rw,nosuid,nodev,noexec,rela
│ │ └─/sys/fs/cgroup/devices          cgroup      cgroup  rw,nosuid,nodev,noexec,rela
│ ├─/sys/fs/pstore                    pstore      pstore  rw,nosuid,nodev,noexec,rela
│ ├─/sys/firmware/efi/efivars         efivarfs    efivarf rw,nosuid,nodev,noexec,rela
│ ├─/sys/kernel/config                configfs    configf rw,relatime
│ └─/sys/fs/fuse/connections          fusectl     fusectl rw,relatime
├─/proc                               proc        proc    rw,nosuid,nodev,noexec,rela
│ └─/proc/sys/fs/binfmt_misc          systemd-1   autofs  rw,relatime,fd=30,pgrp=1,ti
│   └─/proc/sys/fs/binfmt_misc        binfmt_misc binfmt_ rw,relatime
├─/home                               /dev/sda6   ext4    rw,relatime,seclabel
└─/var/lib/nfs/rpc_pipefs             sunrpc      rpc_pip rw,relatime

Деревья процессов

Есть инструмент pstree, который умеет рисовать красивые деревья процессов. Например:

$ pstree 1721
gnome-shell─┬─Xwayland───5*[{Xwayland}]
            ├─gnome-system-mo───3*[{gnome-system-mo}]
            ├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
            │             ├─ibus-engine-sim───2*[{ibus-engine-sim}]
            │             ├─ibus-extension-───3*[{ibus-extension-}]
            │             └─2*[{ibus-daemon}]
            ├─telegram-deskto───14*[{telegram-deskto}]
            └─13*[{gnome-shell}]

Экран блокировки

Чтобы заблокировать экран, используйте команду $ loginctl lock-session.

Для разблокировки экрана введите команду $ loginctl unlock-session. Конечно, вряд ли вы сможете использовать терминал при заблокированном экране, однако вы можете пойти обходными путями. Например, можно создать задачу для разблокировки через какое-то время.

Супершелл

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

Быстро открываем файлы в программе по умолчанию

Команда xdg-open позволяет открыть любой файл в соответствующей программе. Например, xdg-open file.txt откроет файл в текстовом редакторе по умолчанию.

Статус системных сервисов

Чтобы посмотреть статус системных сервисов, введите команду systemctl statusили systemctl status <имя сервиса>, если вас интересует конкретный сервис.

Быстро ищем файлы

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

$ find /usr/include -name gtk.h
/usr/include/gtk-3.0/gtk/gtk.h

Используем вывод одной команды в качестве аргумента другой

Чтобы использовать вывод одной команды в качестве аргумента другой, используйте конструкцию команда-2 $(команда-1). Например:

$ less $(find /usr/include -name gtk.h)

Календарь

Команда cal может нарисовать календарь на текущий месяц (и даже выделить текущее число) или на другой промежуток:

$ cal
   September 2018   
Mo Tu We Th Fr Sa Su
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30$ cal 2019
                               2019                                      January               February                 March       
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                1  2  3                1  2  3
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    4  5  6  7  8  9 10
14 15 16 17 18 19 20   11 12 13 14 15 16 17   11 12 13 14 15 16 17
21 22 23 24 25 26 27   18 19 20 21 22 23 24   18 19 20 21 22 23 24
28 29 30 31            25 26 27 28            25 26 27 28 29 30 31        April                   May                   June        
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7          1  2  3  4  5                   1  2
 8  9 10 11 12 13 14    6  7  8  9 10 11 12    3  4  5  6  7  8  9
15 16 17 18 19 20 21   13 14 15 16 17 18 19   10 11 12 13 14 15 16
22 23 24 25 26 27 28   20 21 22 23 24 25 26   17 18 19 20 21 22 23
29 30                  27 28 29 30 31         24 25 26 27 28 29 30        July                  August                September     
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7             1  2  3  4                      1
 8  9 10 11 12 13 14    5  6  7  8  9 10 11    2  3  4  5  6  7  8
15 16 17 18 19 20 21   12 13 14 15 16 17 18    9 10 11 12 13 14 15
22 23 24 25 26 27 28   19 20 21 22 23 24 25   16 17 18 19 20 21 22
29 30 31               26 27 28 29 30 31      23 24 25 26 27 28 29
                                              30                  
       October               November               December      
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                1  2  3                      1
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    2  3  4  5  6  7  8
14 15 16 17 18 19 20   11 12 13 14 15 16 17    9 10 11 12 13 14 15
21 22 23 24 25 26 27   18 19 20 21 22 23 24   16 17 18 19 20 21 22
28 29 30 31            25 26 27 28 29 30      23 24 25 26 27 28 29
                                              30 31          

Планировщик задач

Чтобы выполнить какую-то команду в нужное вам время, воспользуйтесь at:

echo команда-для-выполнения | at время_выполнения

Учтите, что эта команда может отсутствовать на вашей системе, и вам придётся установить её самостоятельно.

Получаем свой внешний IP

Чтобы получить свой внешний IP-адрес введите curl ifconfig.me или curl ipinfo.io/ip. Возможно, сначала вам придётся установить curl.

Прогноз погоды

Введите команду curl wttr.in/<нужный город> и получите красивую таблицу с прогнозом погоды:

$ curl wttr.in/Москва
Weather report: Москва     \   /     Sunny
      .-.      13-14 °C       
   ― (   ) ―   → 11 km/h      
      `-’      10 km          
     /   \     7.4 mm         
                                                       ┌─────────────┐                                                       
┌──────────────────────────────┬───────────────────────┤  Sun 16 Sep ├───────────────────────┬──────────────────────────────┐
│            Morning           │             Noon      └──────┬──────┘     Evening           │             Night            │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│  _`/"".-.     Moderate or he…│      .-.      Heavy rain     │      .-.      Light drizzle  │    \  /       Partly cloudy  │
│   ,\_(   ).   16 °C          │     (   ).    15-16 °C       │     (   ).    13-15 °C       │  _ /"".-.     11-13 °C       │
│    /(___(__)  ↑ 7-12 km/h    │    (___(__)   ↘ 12-18 km/h   │    (___(__)   ↘ 19-27 km/h   │    \_(   ).   ↘ 22-33 km/h   │
│    ‚‘‚‘‚‘‚‘   14 km          │   ‚‘‚‘‚‘‚‘    14 km          │     ‘ ‘ ‘ ‘   17 km          │    /(___(__)  19 km          │
│    ‚’‚’‚’‚’   4.3 mm | 72%   │   ‚’‚’‚’‚’    6.5 mm | 71%   │    ‘ ‘ ‘ ‘    0.7 mm | 66%   │               0.5 mm | 49%   │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
                                                       ┌─────────────┐                                                       
┌──────────────────────────────┬───────────────────────┤  Mon 17 Sep ├───────────────────────┬──────────────────────────────┐
│            Morning           │             Noon      └──────┬──────┘     Evening           │             Night            │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│    \  /       Partly cloudy  │    \  /       Partly cloudy  │    \  /       Partly cloudy  │    \  /       Partly cloudy  │
│  _ /"".-.     13-14 °C       │  _ /"".-.     18 °C          │  _ /"".-.     16 °C          │  _ /"".-.     13-14 °C       │
│    \_(   ).   ↘ 16-18 km/h   │    \_(   ).   → 15-18 km/h   │    \_(   ).   → 14-18 km/h   │    \_(   ).   ↗ 13-19 km/h   │
│    /(___(__)  20 km          │    /(___(__)  20 km          │    /(___(__)  20 km          │    /(___(__)  20 km          │
│               0.0 mm | 0%    │               0.0 mm | 0%    │               0.0 mm | 0%    │               0.0 mm | 0%    │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
                                                       ┌─────────────┐                                                       
┌──────────────────────────────┬───────────────────────┤  Tue 18 Sep ├───────────────────────┬──────────────────────────────┐
│            Morning           │             Noon      └──────┬──────┘     Evening           │             Night            │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│  _`/"".-.     Light rain sho…│  _`/"".-.     Patchy rain po…│    \  /       Partly cloudy  │    \  /       Partly cloudy  │
│   ,\_(   ).   14-15 °C       │   ,\_(   ).   17 °C          │  _ /"".-.     15 °C          │  _ /"".-.     12-14 °C       │
│    /(___(__)  → 19-25 km/h   │    /(___(__)  → 21-24 km/h   │    \_(   ).   ↘ 17-24 km/h   │    \_(   ).   ↘ 15-21 km/h   │
│      ‘ ‘ ‘ ‘  17 km          │      ‘ ‘ ‘ ‘  16 km          │    /(___(__)  20 km          │    /(___(__)  20 km          │
│     ‘ ‘ ‘ ‘   0.1 mm | 23%   │     ‘ ‘ ‘ ‘   0.3 mm | 72%   │               0.1 mm | 54%   │               0.0 mm | 0%    │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘

Получаем таблицу ASCII

Чтобы получить быстрый доступ к таблице ASCII просто введите man ascii.

Простой калькулятор

Небольшие выражения можно вычислять прямо в терминале. Это можно сделать либо с помощью конструкции echo <выражение> | bc, либо echo $((<выражение>)). Например:

$ echo 35+42 | bc
77
$ echo $((35+42))
77

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

Если вы хотите выполнить команду в другой директории, но при это не хотите покидать текущую, то просто оберните команду скобками. Например, (cd /tmp && ls). Здесь скобки запускают подшелл (subshell), внутри которого мы и выполняем cd.

Узнаём, какие библиотеки нужны команде/библиотеке

Чтобы узнать, какие динамические библиотеки нужны программе или библиотеке и как они будут разрешены при запуске, используйте команду ldd:

$ ldd /usr/lib/systemd/systemd
    linux-vdso.so.1 (0x00007fff7e7c6000)
    libsystemd-shared-239.so => /usr/lib/systemd/libsystemd-shared-239.so (0x00007f265acbd000)
    librt.so.1 => /lib64/librt.so.1 (0x00007f265ac7e000)
    libseccomp.so.2 => /lib64/libseccomp.so.2 (0x00007f265ac3a000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f265ac0e000)
    ...
    libunistring.so.2 => /lib64/libunistring.so.2 (0x00007f265a076000)
    libsepol.so.1 => /lib64/libsepol.so.1 (0x00007f2659fc1000)
    libudev.so.1 => /lib64/libudev.so.1 (0x00007f2659f99000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f2659e15000)

Узнаём, что лежит внутри файла

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

$ file Pictures/wayland-screenshot.png 
Pictures/wayland-screenshot.png: PNG image data, 1920 x 1080, 8-bit/color RGBA, non-interlaced
$ file dev/gnome-builder/src/main.c 
dev/gnome-builder/src/main.c: C source, UTF-8 Unicode text

Многократный запуск команды

Чтобы запускать команду каждые несколько секунд (по умолчанию две) и смотреть на её вывод, воспользуйтесь командой watch <команда>.

Время на запуск команды

Чтобы узнать, сколько времени уходит на запуск команды, используйте time <команда>.

Системные вызовы команды

Чтобы узнать, какие системные вызовы совершает программа, введите strace <команда>.

Запоминаем набираемую команду

Если вы набираете какую-то команду и вам по какой-то причине нужно прерваться и, например, ввести другую команду, вы можете «запомнить» то, что вы ввели комбинацией Ctrl+U, а затем вставить комбинацией Ctrl+Y.

Выкачиваем сайты

Чтобы выкачать сайт используйте команду wget --random-wait -r -p -e robots=off -U mozilla <адрес сайта>.

Проводим туннели

С помощью команды ssh -N -L 2001:localhost:80 somemachine можно создать туннель от 80 порта на удалённой машине до 2001 на локальной.

 

 

---

 

du -sh * | sort -h 

Отображает размер файлов в текущей директории и сортирует по размеру от малого до самого большого файла.

 

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

 

Лучше поставить dfc гораздо красивше)

 

 

---

 

Система управления пакетами в Ubuntu полностью аналогична системе управления пакетами Debian, и использует утилиты dpkg и apt. Программы в Ubuntu, как и в Debian хранятся в пакетах вида .deb.

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

Скачанные файлы программ не удаляются после установки и хранятся в каталоге /var/cache/apt/archives. При необходимости их можно удалить командой apt-get clean или apt-get autoclean.

DPKG

dpkg -i программа Устанавливает либо обновляет пакет который был установлен ранее.

dpkg -r программа Деинсталлирует уже установленную программу но сохраняет файлы конфигурации программы.

dpkg -l Отображает список уже установленных пакетов программ.

dpkg -l | grep driver Отображает список установленных программ в названии которых есть слово «driver».

dpkg -s программа Показывает информацию по этой программе.

dpkg -P Удаляет установленную программу вместе с файлом конфигурации.

APT

apt-get install программа Установка программы. Можно устанавливать сразу несколько программ. Выглядеть это будет так: apt-get install программа программа программа программа программа программа

apt-get update Проверяет, есть ли на репозиториях обновления для установленных

программ. Список репозиториев находится в файле /etc/apt/sources.list

apt-cdrom install программа Устанавливает либо обновляет пакет с cdrom-диска

apt-get upgrade Обновляет уже установленные программы.

apt-get remove программа Деинсталлирует установленную программу.

apt-get purge программа Удаляет установленный пакет и файлы конфигурации.

apt-get autoremove Удаляет пакеты, от которых не зависят другие пакеты.

apt-get check Находит конфликтующие пакеты и поломанные зависимости в пакетах программ.

apt-get -f install Исправляет найденные поломанные зависимости.

apt-cache search программа Поиск программы в кэше.

apt-cache show программа Показывает информацию и описание пакета программы.

apt-cache showpkg программа Покажет все зависимости пакета программы.

apt-cache depends программа Отображает в виде списка зависимые пакеты программ, нужные для работы выбранной программы

Опции APT:

apt-get -h Справка

apt-get -d Скачивает программу но не устанавливает ее.

apt-get -s Команда с этой опцией ничего не делает. Просто имитирует выполнение команды (например имитация удаления программы)

apt-get -y Если программа задает вопросы эта опция отвечает Yes на все вопросы. Вопросы не выводит в консоль.

apt-get -f Продолжить действие, даже если проверка целостности пакета прошла неудачно.

apt-get -u Вдобавок ко всему покажет список обновленных пакетов.

aptitude Более удобный вариант apt. Лучше работает с зависимостями пакетов программ.

 

 

---

 

Установка.

  • apt-get install unrar rar -установить rar архиватор
  • apt-get install zip -установить zip архиватор
  • apt-get install tar - установить tar архиватор
  • apt-get install 7z -установить 7z архиватор
  • apt-get install lzma -установить LZMA архиватор

Архивация.

  • rar:
    1
    rar a new_arhiv.rar /Директория/которую/архивируем
  • zip:
    1
    zip -r new_arhiv.zip /Директория/которую/архивируем
  • tar:
    1
    tar -cvf new_arhiv.tar /Директория/которую/архивируем
  • 7z:
    1
    p7zip -d filename.7z

*архив добавляется в тот каталог в котором находится юзер, чтобы добавить архив в нужный каталог надо воспользоваться командой cd, например: cd /home/username/backup

Разархивация.

  • rar
    1
    unrar new_arhiv.rar
  • zip
    1
    unzip new_arhiv.zip
  • tar
    1
    tar -xvf arhiv.tar
  • 7z
    1
    7z x arch.7z
  • lzma
    1
    lzma -d filename.lzma

Пруф линки:

 

 

---

 

1. Общие команды

Команда arch - вывод архитектуры компьютера

Данная команда поможет узнать тип аппаратной платформы, например: i386, i586, i686 и др.

Пример использования:
$ arch
i686

Команда clear - очистка экрана

Команда clear очищает экран при работе в консоли (терминале). 

Пример использования:
$ clear

Команда date

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

Пример использования:
$ date
# date 1609171707

Первая команда выводит дату, а вторая - устанавливает дату (при условии, что команда запущена от имени root) 16 сентября (1609) 2007 года (07) и время 17:17. Как видите, установка даты осуществляется в формате MMddhhmmYY (ММ - месяц, dd - число, hh - часы, mm - минуты, YY - год).

Команда date может вывести дату в указанном вами формате. Для изучения форматов даты введите команду man date.

Команда echo

Команда echo выводит текстовую строку, указанную в качестве аргумента, например:
$ echo "Hello world!" 
Hello world!

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

Команда exit - выход из системы

Для завершения сеанса работы в системе (при условии, что вы работаете в консоли) нужно использовать команду exit. Если не завершить сеанс работы, кто угодно сможет работать в системе под вашим именем (понятно, что во время вашего отсутствия за компьютером).

Команда man - вывод справки

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

Команда passwd - изменение пароля 

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

Команда startx - запуск графического интерфейса Х.Оrg

Linux может запускаться на разных уровнях запуска. На пятом уровне запуска графический интерфейс X.Org (бывшее название: X Window) запускается автоматически (если он вообще был установлен). На третьем же уровне запуск графического интерфейса не производится. Если он вам тем не менее нужен, то его можно запустить с помощью команды startx. Никаких параметров не требуется.

Команда uptime - информация о работе системы

Команда uptime выводит статистическую информацию о работе системы: сколько времени прошло с момента последней перезагрузки (собственно, это и есть время "uptime"), сколько пользователей в данный момент подключено к системе и среднюю загрузку системы за последние 1, 5 и 15 минут.

Команда users - информация о пользователях

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

Команды w, who и whoami - информация о пользователях

Эти три родственные команды выводят следующую информацию:

- команда w - список пользователей, подключенных к системе: виртуальный терминал, с которого работает пользователь; время входа в систему для каждого пользователя, статистику использования системы (IDLE - время простоя, JCPU - использование процессора), выполняемые каждым пользователем задачи;
- команда who - список пользователей, подключенных к системе; время и дату входа каждого пользователя;
- команда whoami - имя пользования, который ввел команду. 

Команда xf86config - настройка графической подсистемы

Текстовый конфигуратор системы X.Org (она же X Window). Использовать его нужно, только если в вашем дистрибутиве нет более удобных графических или псевдографических конфигураторов. 

2. Команды для работы с текстом 

Команда diff - сравнение файлов

Команда используется для сравнения двух файлов. Формат вызова программы diff:

diff параметры файл1 файл2

В выводе программы отличающиеся строки помечаются символами > и .

Команда grep - текстовый фильтр
Предположим, что у нас есть файл протокола /var/log/messages, и вы хотите вывести все сообщения, связанные с демоном pppd. Понятно, что вручную выделить все нужные сообщения будет довольно трудно. Но с помощью grep можно автоматизировать данную задачу:

cat /var/log/messages | grep ppp

Команда cat /var/log/messages передаст содержимое файла /var/log/messages на стандартный ввод команды grep, которая, в свою очередь, выделит строки, содержащие строку ррр.

СОВЕТ
Вообще-то, просматривать журналы удобнее с помощью команды tac, которая выводит строки файла в обратном порядке - ведь сообщения дописываются в конец журнала, следовательно, если выводить строки в обратном порядке, то сначала получим самые новые сообщения, а потом уже все остальные:

tac /var/log/messages | grep ppp


Команды more и less - постраничный вывод

Большой текстовый файл намного удобнее просматривать с помощью команд less или more. Программа less удобнее, чем more, если она есть в вашей системе:

tac /var/log/messages | grep ppp | less

Команды head и tail - вывод начала и хвоста файла

Команда head выводит первые десять строк файла, a tail - последние десять. Количество строк может регулироваться с помощью параметра -n.

Пример использования:

head -n 10 /var/log/messages 
tail -n 15 /var/log/messages 

Команда wc - подсчет слов в файле

Команда wc используется:
- для подсчета слов в текстовом файле: 

wc /var/log/messages

- для подсчета количества строк (если задан параметр -1): 

wc -1 /var/log/messages

- для подсчета количества символов (параметр -с): 

wc -с /var/log/messages 

3. Команды для работы с Интернетом 

Команда ftp - стандартный FTP-клиент

Для открытия соединения с любым FTP-сервером введите команду:

ftp <имя или адрес FTP - сервера>

Можно просто ввести команду ftp, а в ответ на приглашение 
ftp>
ввести команду:
open <имя или адрес ЕТР-сервера>

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

Подключившись к серверу, вы можете ввести команду help, чтобы просмотреть список доступных команд. Для получения справки по той или иной команде введите help <имя_команды>.

Кроме команды ftp, в Linux есть и другие текстовые FTP-клиенты, например, NcFTP (http://www.ncftp.com), lukemftp (ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/), lftp (http://ftp.yars.free.net/projects/Iftp/) и др. Все эти FTP-клиенты не входят в состав дистрибутивов, их нужно устанавливать самостоятельно. Но стоит ли это делать - решать вам. Ведь все они подобны стандартному клиенту ftp и обладают двумя-тремя дополнительными функциями, которые, возможно, вам и не понадобятся. Например, NcFTP умеет докачивать файлы, a lftp - загружать одновременно несколько файлов. В любом случае вы можете изучить документацию по тому или иному FTP-клиенту (ее легко найти в Интернете), а потом решить, стоит его использовать или нет. 

Команда lynx - текстовый браузер

Eсли графический режим недоступен (например, на сервере), а по сети побродить хочется, командой lynx можно вызвать текстовый браузер lynx. В некоторых дистрибутивах вместо lynx используются браузеры links и elinks, но суть остается та же - просмотр страниц Интернета в текстовом режиме.

Команда mail - чтение почты и отправка сообщений

Программа mail - это простейший клиент для чтения и отправки почты. Позволяет читать только почту, принятую вашей системой. Если же нужно принять почту с других РОР3-серверов, тогда следует использовать другие почтовые клиенты, которые могут работать в консоли, например, mutt или pine. Для чтения предназначенных вам сообщений введите команду mail без параметров. Если хотите написать кому-то письмо, передайте в качестве параметра электронный адрес этого человека: 
mail ivanov@firma.ru

4. Команды системного администратора

Команды free и df - информация о системных ресурсах

Команда free выводит информацию об использовании оперативной и виртуальной памяти, a df - об использовании дискового пространства. 

Команда md5sum - вычисление контрольного кода MD5

Для проверки подлинности некоторых файлов, передаваемых через Интернет, используется алгоритм MD5 (точнее, контрольный код, вычисленный с использованием этого алгоритма). Разработчик программы выкладывает в Интернете пакет с этой программой и на своем сайте публикует контрольный код. Вы скачиваете пакет и вычисляете его контрольный код. Если коды отличаются, то файл при передаче был поврежден (или это другая версия пакета, которая, возможно, была подложена злоумышленником с целью ввода вражеского кода в вашу систему).
Использовать программу нужно так:

md5sum файл

Команды ssh и telnet - удаленный вход в систему

Подробное описание можете почитать на соответствующей странице руководства (man).

Команда 
lspci | grep VGA - показывает какая видеокарта установлена у вас в системе (в помощь таким программам как 
dmesg 
cat /proc/cpuinfo 


Команда для того бы узнать UUID диска:
#blkid -o value 

Команда для управления подсветкой и состоянием монитора:
#vbetool

Например для того что бы потушить монитор:
#vbetool dpms off

Что бы отключить в системе поддержку ipv6 следует внести в файл /etc/modprobe.d/blacklist.conf следующие строки и перезагрузить машину:
alias net-pf-10 off
alias ipv6 off


Чтобы увидеть общую информацию о установленнгом железе следует выполнить:
dmidecode -q

 

 

---

 

 

Как начать пользоваться командной строкой

Я не знаю, ты пользуешься Линуксом или Уиндоузом (обычно туториалы рассчитаны на линуксоидов и макосников, уиндоуз не модный среди молодежи). В макоси все практически так же как и в линуксе, в windows пошли своим путем и сделали все как в DOS.

Думаю, что в данном случае тебе поможет не рыба, а удочка, так что держи пасту. Если после прочтения у тебя будут какие-то вопросы, или по-прежнему непонятно, почему команды не работают, пиши в наш уютный тред, разберемся.

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

Как попасть в командную строку?

  • Windows XP: Пуск — Выполнить — набрать cmd — нажать [enter]
  • Windows7: Пуск — набрать cmd - наждать [enter]
  • MacOS: Запустить приложение Терминал (его можно найти поиском в той фигне которая справа вверху экрана)
  • Ubuntu: Запустить приложение Терминал или нажать Alt + Ctrl + F1 (ааа как вернуться назад? Ctrl + F7)
  • Linux: если ты линуксоид, ты и так знаешь

Во всех операционных системах

↑,↓ — стрелки вверх и вниз в командной строке позволяют смотреть предыдущие введенные команды, чтобы 2 раза не набирать. В Windows при закрытии окошка консоли вся история теряется, в других ОС — сохраняется.

[tab] — автодополняет имена файлов и команды. Если в текущем каталоге есть файл file.txt, ты наберешь fi и нажмешь [tab] то он автодополнит имя файла (или предложит варианты, если таких файлов несколько).

[ctrl+c] — прерывает выполнение команды, например, если она долго тупит

Важно: клавиша Esc не работает в командной строке. Клавиши Ctrl + C, V, X не работают как «копировать/вырезать/вставить» (иногда для вставки можно использовать Shift + Ins). Клавиша Ctrl + Q не работает как «выход».

Линукс и мак

В линуксе и маке, [ctrl+l] очищает экран, [ctrl+k] и [ctrl+u] удаляют все перед или после курсора, [ctrl+w] удаляет слово перед курсором, [ctrl+r] делает поиск по истории команд (для отмены поиска нажми [ctrl+c], escape в командной строке не работает, для завершения поиска нажми стрелку вправо/влево), [ctrl+d] завершает работу и закрывает консоль.

Еще в линуксе и маке иногда не работают Home и End, используй [ctrl+a] чтобы перейти в начала строки и [ctrl+e], чтобы в конец. [alt + b] (back) и [alt + f] (forward) двигают курсор на 1 слово назад/вперед.

Буфер обмена

В командной строке не работает ctrl+v,c,x для вставки, копирования и вырезания текста. Иногда (зависит от настроек системы) вставить текст можно через [shift+ins], иногда правой кнопкой мыши. Скопировать текст можно, выделив мышью (в Windows надо разрешить выделение текста сначала в настройках окна и нажать Enter после выделения).

Текущий каталог

В командной строке результат выполнения команд зависит от того, в каком каталоге и на каком диске ты находишься. Какой каталог текущий, в Windows написано в подсказке, а в linux можно узнать командой pwd (print working directory)

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

cd /  — перейти в корневой каталог (в линукс нет букв дисков, и корневой каталог один на всю систему)
cd /etc/apache — перейти в каталог /etc/apache
cd files — переходит в каталог files внутри текущего
cd .. — переходит в родительский кталог
cd ../.. — переходит на 2 уровня выше
cd ~ — перейти в свой домашний каталог (/home/anon например)
cd ~/test — перейти в /home/anon/test

В Windows, сначала надо перейти на нужный диск командой c:d:e: и так далее. Потом использовать cd или chdir:

d:   - перейти на диск d:
cd \ — перейти в корневой каталог
cd \windows\system32
cd ..
cd ..\..

Обрати внимание, windows и linux используют разные виды слешей. Обрати внимание, .. обозначает «родительский каталог». Обрати внимание, только в линукс и мак ~ обозначает «домашний каталог» (это /home/username или /Users/username). . (одна точка) обозначает текущий каталог и cd . никуда не перейдет. / (линукс) или \(Windows) обозначает корневой каталог.

Очистка экрана

В linux — команда clear или клавиша [ctrl+L], в windows — команда cls (clear screen).

Список файлов

Посмотреть, какие файлы есть в текущем каталоге, можно командой dir в Windows и командой ls в линуксе (ls -a — показывает все файлы, включая скрытые, ls -l — показывает не только имена, но и размер, дату создания файла, права на него).

Посмотреть права на файл в Линукс можно либо командой ls -l, либо stat file.txt

Команды и оболочка

Оболочка — это cmd.exe в Windows и bash в линукс, это та программа, которая собственно мигает курсором и выполняет твои команды. Ты набираешь команды, а она их выполняет. Команда обычно состоит из имени команды, и, иногда, дополнительных параметров, отделенных пробелом, вроде:

ls — показать список файлов в линукс
ls -l — показать файлы с подробностями
dir — показать список файлов в windows с подробностями
dir /b — показать только имена файлов, без подробностей

Подсказка

Почти у любой команды есть подсказки. Чтобы их увидеть, добавь к имени команды параметр (--help или /?):

В линукс: ls --help — выведет справку по команде ls

В линукс: man bash — выведет подробную длинную справку по команде bash (для выхода жми q, для прокрутки используй стрелки и PgUp/PgDn)

В Windows: dir /? — выведет справку по команде dir

В Windows: help выведет подсказку по основным командам

Виды команд

Команды бывают внутренние (это маленький список команд, встроенных в оболочку). Встроенные команды — это, например, cd в линукс или exit в Windows. Их мало.

Внешние команды — их большинство — это фактически программы, лежащие на диске. Оболочка ищет их не по всему диску, а только в заранее заданных папках. Список папок перечислен в специальной переменной PATH. Просмотреть эту переменную можно так:

В линуксе: echo $PATH

В windows: echo %PATH%

В linux PATH — это папки /bin, /usr/bin, /usr/local/bin, /sbin, /usr/sbin, именно в них в Линуксе хранятся почти все программы. В текущем каталоге програмы не ищутся, если это не указать явно.

В Windows PATH — это всякие системные папки вроде c:\windows и так далее + текущий каталог, в котором ты находишься. Заметь, что папки вроде c:\program files\autocad в PATH не добавлены и в Windows таким образом, из командной строки обычные программы и игры, установленные в Program Files, не запустить. Только то, что положено в системные папки.

Таким образом: если ты под линуксом, и ты набираешь команду php, то скорее всего файл php лежит в одной из *bin папок и эта команда запустит php. Если ты под Windows установил php допустим в c:\php, и не прописал этот путь в PATH, то набрав php, оболочка не найдет файл php.exe и ничего не запустит. И ты скажешь «что за кривой мануал, ничего не работает, ну его нафиг».

Печалька.

Что же делать? 1) добавить папку с php в PATH через мой компьютер — свойства и перезалогиниться в систему 2) писать вместо php полный путь c:\php\php.exe

Продолжаем. Допустим, ты хочешь запустить в командной строке файл my.php , который находится в текущем каталоге:

Линукс: php my.php
Windows: c:\php\php.exe my.php

Допустим, ты хочешь запустить php-файл не из текущего каталога. Тогда надо написать путь к нему:

Линукс: php /some/dir/my.php
Windows: c:\php\php.exe d:\files\my.php

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

Больше команд — linux

Попрактиковаться в линукс в командной строке можно на таких командах:

Создать текстовый файл: cat > file.txt [enter] ввести текст [enter][ctrl+d] — и файл создан
Просмотреть текстовый файл: cat file.txt
Просмотреть огромный текстовый файл, который не влеазает на экран: cat file.txt | less 
В просмотрщике работают стрелки и q для выхода (escape не работает).
Удалить файл: rm file.txt
Скопировать файл: cp file.txt copy.txt
Переместить/переименовать файл: mv file.txt copy.txt
Скопировать в другую папку: cp file.txt /some/other/directory
Запустить команду и сохранить ее вывод в файл: ls -la > file.txt (эта команда выведет список файлов, но не на экран, а сохранит в файл. Бывает иногда полезно).
Вывести файл, но не весь, а только первые 10 строк: cat file.txt | head -10
Вывести последние 10 строк файла:  cat file.txt | tail -10
Вывести только строки файла, содержащие слово «dog»: cat file.txt | grep dog
Найти файлы, в имени которых есть «dog», в каталоге /tmp: find /tmp -iname '*dog*'
Узнать текущее время: date
Создать папку: mkdir folder
Удалить папку: rm -r folder
Померять, сколько времени выполнялась команда: time [команда]
Узнать свой id пользователя: id
Показать список запущенных процессов: ps -lax
Показать что-то вроде диспетчера задач: top (для выхода q)
Запустить редактор, из которого хрен выйдешь, так как никакие привычные кнопки не работают: vi

Подробнее о работе команд можно узнать с помощью параметра --help, дописанного после команды.

Больше команд - Windows

Попрактиковаться в комнадной строке в Windows можно так:

help — выводит список полезных команд
dir — выводит файлы в каталоге
Создать текстовый файл: copy con file.txt[enter]ввести текст[enter][ctrl+z][enter] — файл создан
Просмотреть текстовый файл: type file.txt
Просмотреть огромный текстовый файл: type file.txt | more (enter — прокрутка, q — выход)
Удалить файл: del file.txt
Скопировать файл: copy /b file.txt copy.txt
Переименовать файл: ren file.txt copy.txt
Запустить команду и сохранить вывод в файл: dir /? > file.txt
Создать текстовый  файл с одной строкой текста: echo lalala lololo > file.txt
Дописать строчку в конец файла: echo boom >> file.txt
Создать папку: mkdir folder
Удалить папку: rmdir folder
Узнать текущее время: time и date (ctrl+с для выхода)

Подробнее о работе команд можно узнать с помощью параметра /?, дописанного после команды.

Команды для работы с сетью Интернет

В линукс показать информацию о настройке сети: ifconfig (или /sbin/ifconfig если у тебя в PATH нет /sbin)

В Windows показать информацию о сети: ipconfig

Пропинговать (проверить связь) с сервером: ping google.com

Узнать IP по имени домена: nslookup yandex.ru

Показать список открытых с компьютера соединений: netstat (в подсказке по команде указаны также параметры, с помощью которых, например, можно вывести какая программа установила это соединение) Проверить путь до какого-то сервера или узла сети:

  • в Windows: tracert google.com
  • в linux: traceroute google.com (не работает? пиши /usr/sbin/traceroute или пропиши уже себе sbin в PATH)

Больше информации

Используй ключи --help и /?

Гугли мануал по командной строке windows/linux в интернете.

 

 

---

 

Когда я начинал свою аспирантуру в Университете Хельсинки, самое страшное, что я мог видеть у моих коллег - это черный экран, в котором есть только текст и мигающий курсор. Позже я узнал, что эта программа называется Terminal и является незаменимым инструментом для биоинформатиков и других специалистов, анализирующих большие массивы данных. Так как большинство генетиков и эволюционных биологов рано или поздно столкнётся с необходимостью работы в Терминале, я решил написать вводную статью о том, что такое Terminal и для чего он нужен.

Что такое Терминал?

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

До появления привычных нам графических интерфейсов люди пользовались текстовыми терминалами, в которые вводили команды при помощи клавиатуры, а результат вычислений выводился на экран. Однако, и по сей день терминал, точнее эмулятор терминала, есть в каждой операционной системе: в Windows – это приложение cmd.exe (Command Line или просто «Консоль»), в Linux и MacOS– программа Terminal.

Terminal в MacOS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

 

 

 

Комментарии: 4

  1. Роман

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

    Ответить ↓

    1. Samoedd(Автор записи) 

      https://samoedd.com

      Всегда пожалуйста! Если возникнут дополнительные вопросы, буду рад ответить.

      Ответить ↓

  2. Мустафа

    — а почему терминал — называют ещё и эмулятором? Что он там ещё эмулирует?
    Понятие «терминал» до конца так и не открыто, потому как терминалом могут назвать всё и всяк. В противном случае, какая тогда смысловая связь между тем, что «терминал» это то самое что «консоль» — ну, тогда может, ещё пару-тройку синонимов придумаем, и будем зубрить и доказывать, что это одно и тоже.
    Вот, например: галка палка, ну чем галка не палка или наоборот.
    А то и вообще, сколько там у нас языков и наречий в мире, давай-те соберем все их транскрипции по данному термину и тело в шляпе.
    Один только англоязычный язык чего стоит, в переводе некоторых слов на русский и их понятии… не хватит запаса имеющихся матерных слов, чтобы возмущению был предел.
    Фигня это всё. Нужно, если взялись за определение термина, объяснять более доходчиво, а не то, что это часть, какой то системы. Ну и что, что она часть, мало ли таких частей у системы есть, например порт I/O и его драйвер или окно настройки драйвера или еще какой проги, тоже терминал? — ведь вроде как конкретно к системе не относится но, тоже является звеном интерфейса.

    Вот тут не хватает такой жилки, как например, взять такое понятие «Корреспондирующий счет». Если откинуть слово счёт (и так понятно) то, что кроется в термине «Корреспондирующий» Может можно пробовать поискать какую то связь в понятии созвучных слов таких как: корреспондент, почтальон, корреспонденция и все что к ней относится письмо, сообщение, извещение… в общем, искать какую то взаимосвязь что ль.

    В общем, тема сырая.
    Как-то давно в прошлом веке (серьезно) я тоже, когда еще не было в СССР компов, приходилось искать ответы на свои вопросы, в какой то бы не было макулатуре. И вот в одной древней пожелтевшей книге, которую я тоже штудировал но, ничего толком там так и не нашел, попалось одно хорошее изречении, которое наверно и мотивировало меня на дальнейшие поиски Знаний! Как говорят: Век живи и Век учись, а :(, да ладно, не будем о грустном:))
    Так вот, что я там прочитал, не помню досконально, но вроде так: «Если из тысячи книг тебе попадется та, в которой ты найдешь ответ на свой извечный вопрос — считай, тебе повезло!» А вопросов у нас по жизни, как вы всё знаете и понимаете, больше чем ответов.

 

---

 

 

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

На смену использованию TELNET при создании удаленного доступа пришло подключение по SSH, как более надежное, стабильное и безопасное. Впрочем, этот сетевой протокол все еще используется: TELNET-команды прекрасно подходят для настройки специализированных устройств - роутеров или коммуникаторов. Кроме того, с их помощью можно проводить самодиагностику и отладку самой сети.

Команды TELNET для Windows и Linux

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

Для ввода команды TELNET в Windows используется командная строка, а в Unix-системах - консоль. При этом для обоих семейств операционных систем непосредственно команды слабо отличаются.

Кроме того, в современных представителях Windows-семейства TELNET не является включенной по умолчанию службой, поэтому, чтобы в том же Windows 7 команда TELNET сработала, следует включить соответствующий сетевой протокол. Для этого нужно:

  1. Нажать кнопку "Пуск".
  2. Выбрать "Панель управления" - "Программы и компоненты" - "Включение или отключение компонентов Windows".
  3. В появившемся окне найти строки TELNET-сервер и Клиент TELNET и поставить рядом с ними галочки.
  4. Нажать кнопку "ОК".
  5. Дождаться выполнения и сохранения всех изменений.

После этого в каталоге /Windows/System32/ должен появиться исполняемый файл TELNET.

Как уже говорилось выше, команды TELNET для Linux и Windows похожи, и разница между вводимыми в консоли и в командной строке командами состоит лишь в том, что некоторые варианты для Windows могут иметь сокращенную форму.

Сама же команда TELNET в командной строке или консоли имеет вид TELNET [-a][-e Символ][-f Файл][-l Имя][-t Тип][Узел [Порт], где: [-a] - ключ автоматической авторизации, его действие похоже на результат выполнения атрибута -l, но -а использует те логин и пароль, при помощи которых клиент ранее был авторизован.

[-e Символ] - специальный служебный символ, который используется для смены окон ввода-вывода.

[-f Файл] - название файла журнала, используемого клиентом.

[-l Имя] - логин клиента, используемое для авторизации при условии работы параметра TELNET ENVIRON.

[-t Тип] - выбор типа терминала.

[Узел [Порт] - название или IP-адрес узла, к которому нужно выполнить подключение.

Это пример команды TELNET с аргументами. Если же использовать ее без аргументов, то откроется командный режим, где можно ввести следующие команды для Windows и Unix-систем:

  • open host [-port] - производит открытие соденинеия с указанной системой;
  • close - инициирует закрытие соединения и открывает командный режим;
  • quit - завершает и закрывает все активные TELNET-соединения, а за ним - и сеанс;
  • status - при помощи этой команды можно посмотреть статус подключения;
  • ? [команда] - справка по конкретной команде, а если использовать без аргумента, то предоставляет справку по всем командам в целом.

    Для Windows:

  • display - можно просмотреть текущие настройки клиента;
  • set - настроить тип терминала для подключения, аутентификацию NTLM, символ входа и журналирование, а также включить локальное отображение;
  • unset - отключить локальное эхо или включить запрос на аутентификацию во время входа.

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

 

 

---

 

 

Это делается довольно просто с помощью утилиты hardinfo.
Ставится просто:

sudo apt-get install hardinfo

Запускается довольно просто:

hardinfo | less

А ещё утилита умеет генерировать отчёт в HTML виде:

hardinfo -f html > hardinfo.report.html

Также подобное действие можно выполнить через lshw.

sudo apt-get install lshw

Смотрим так:

lshw | less

Ею тоже можно создать отчёт в HTML виде:

lshw -html > lshw.report.html

 

 

---

 

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

[Алексей Мичурин]

Конечно, администрировать сервер -- гораздо более сложное и полезное дело, чем настраивать консоль. Но про сложные и полезные вещи уже и без меня много написано, а про консоль я что-то нигде не видел, а иногда очень хочется, чтобы что-то было цветным, и динамик не пищал как резаный. Вот и решил я написать этот рассказик. Здесь далеко не все возможности. Более подробно смотрите man 4 console_codes.

 

Управление звуком

  \007 издать звук
  \033[10;#] установить частоту звукового сигнала в герцах
  \033[11;#] установить продолжительность звукового сигнала в миллисекундах

Допускается объединение двух последних управляющих последовательностей. Например \033[10;55]\033[11;30] может быть заменено эквивалентной последовательностью \033[10;55;11;30].

Пример:

#!/bin/sh
# скрипт устанавливает продолжительность и частоту
# звукового сигнала равными 5000Hz и 200ms, соответственно;
# и издаёт звуковой сигнал
#
echo -en "\033[10;5000;11;200]\7"

Управление цветом

  \033[0m все атрибуты по умолчанию
  \033[1m жирный шрифт (интенсивный цвет)
  \033[2m полу яркий цвет (тёмно-серый, независимо от цвета)
  \033[4m выделение (ярко-белый, независимо от цвета)
  \033[5m мигающий
  \033[7m реверсия (знаки приобретают цвет фона, а фон -- цвет знаков)
  \033[22m установить нормальную интенсивность
  \033[24m отменить подчеркивание
  \033[25m отменить мигание
  \033[27m отменить реверсию
  \033[30 чёрный цвет знаков
  \033[31 красный цвет знаков
  \033[32 зелёный цвет знаков
  \033[33 коричневый цвет знаков
  \033[34 синий цвет знаков
  \033[35 фиолетовый цвет знаков
  \033[36 цвет морской волны знаков
  \033[37 серый цвет знаков
  \033[40 чёрный цвет фона
  \033[41 красный цвет фона
  \033[42 зелёный цвет фона
  \033[43 коричневый цвет фона
  \033[44 синий цвет фона
  \033[45 фиолетовый цвет фона
  \033[46 цвет морской волны фона
  \033[47 серый цвет фона

Допускается объединение этих управляющих последовательностей. Например \033[1m\033[5m\033[36m может быть заменено эквивалентной последовательностью \033[1;5;36m.

Пример:

#!/bin/sh
#
# скрипт выводит на экран сообщение с использованием цвета
#
echo -en "\33[37;1;41m CAUTION \33[0m"

Пример:

#!/bin/sh
#
# скрипт запускает копию командного интерпретатора sh
# с цветным приглашением
#
export PS1="\[\033[1;30m\][\[\033[0m\]\t\[\033[1;30m\];\
\[\033[0m\]\W\[\033[1;30m\]]\[\033[36;1m\]|\[\033[0m\] "
echo "Now runing a new copy of shell width color prompt"
echo -en "use \033[1;36mexit\033[0m command or"
echo -e "\033[1;36m^D\033[0m to return back"
sh
#
# обратите внимание на то, что управляющие последовательности
# заключены в скобки "\[" и "\]"
# Это сделано для того, чтобы shell не учитывал их при
# оценке длины строки.
# В противном случае длинные строки будут переноситься неверно.
#

Управление положением курсора

  \033[#A передвинуть курсор вверх на # строк
  \033[#B передвинуть курсор вниз на # строк
  \033[#С передвинуть курсор вправо на # столбцов
  \033[#D передвинуть курсор влево на # столбцов
  \033[#E передвинуть курсор вниз на # строк и поставить в начало строки
  \033[#F передвинуть курсор вверх на # строк и поставить в начало строки
  \033[#G переместить курсор в указанный столбец текущей строки
  \033[#;#H задает абсолютные координаты курсора (строка, столбец)

Пример:

#!/bin/sh
#
# скрипт выводит на экран список устройств и на его фоне
# печатает строку " It is devices list "
#
ls -l /dev
echo -en "\033[12A\033[30G\033[1;5;31;41m It is devices list \033[0m\033[12E"

Работа с палитрой

  \033]Pnrrggbb Изменяет палитру. n -- номер цвета; rrgg и bb -- значения RGB-компонент в шестнадцатеричной форме
  \033]R Восстанавливает палитру, принятую по умолчанию

Пример:

#!/bin/sh
#
# скрипт делает фон красноватым
# такой фон удобно иметь на консоли root'a;
#
echo -en "\033]0550000"

Работа с виртуальными консолями

  \033[12;#] Сделать текущей консоль с указанным номером

Пример:

#!/bin/sh
#
# скрипт делает текущей консоль на которой запущена
# самая прожорливая задача
#
ps aOv | tail -n1 | ( read vpid vtty vother
echo -en "\033[12;${vtty}]" )

Работа с xterm

  \033]0;text\007 Присваивает имя окну и иконке
  \033]1;text\007 Присваивает имя иконке
  \033]2;text\007 Присваивает имя окну

Пример:

#!/bin/sh
#
# скрипт присваивает имена окну и иконке
#
echo -en "\033]2;My Window\007\033]1;My Icon\007"
 
 
 
 
 

 

---

 

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

Wmctrl

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

Основное преимущество wmctrl — полная независимость от какого-либо оконного менеджера. Он взаимодействует с окнами посредством протокола EWMH/NetWM, который поддерживают большинство оконных менеджеров.

 

Не буду утомлять тебя рассказами о возможностях утилиты и ее флагах, а сразу покажу пример. Все знают о существовании Yakuake и Tilda, специальных эмуляторов терминала, которые можно разворачивать и сворачивать нажатием клавиши. С помощью wmctrl ты можешь наделить такими возможностями любой другой эмулятор терминала (например, Konsole из KDE).

#! /bin/bashif [ `wmctrl -xl | grep -c Konsole` != 0 ]; then
    if [ -f /tmp/.Konsole.add ]; then
        wmctrl -r Konsole -b add,below
        rm /tmp/.Konsole.add
    else
        wmctrl -r Konsole -b add,above
        touch /tmp/.Konsole.add
    fi
else
    konsole
fi

Просто повесь его на клавиатурную комбинацию. Первое нажатие запустит терминал, а все последующие будут сворачивать/разворачивать его.

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

Чтобы этого добиться, сначала нужно определить размеры окон обоих приложений в каждом из двух требующихся состояний. Делается это с помощью команды wmctrl -lG (перед этим растяни/сожми окна до нужных размеров):

$ wmctrl -lG
0x0500001b  0 0    55   1280 726  N/A Проект OpenNet - QupZilla
0x03000005  0 900  55   380  693  N/A Telegram (6)$ wmctrl -lG
0x0500001b  0 0    55   900  693  N/A Проект OpenNet - QupZilla
0x03000005  0 900  55   380  693  N/A Telegram (6)

Опция -G добавляет четыре дополнительных столбца в середине вывода команды. В них отражены данные о смещении окон по осям X и Y, а также их ширина и высота соответственно. В моем случае я сначала использовал данные в точности, как их вывела команда. Но при подстановке в сценарий расположение окна QupZilla по оси Y по какой-то причине отличалось от расчетного, поэтому его пришлось немного подкорректировать вручную.

#!/bin/shif [ -f /tmp/.telega.half ]; then
    wmctrl -r Telegram -e '0,900,55,380,693' -b add,below
    wmctrl -r QupZilla -e '0,0,26,1280,726'
    rm /tmp/.telega.half
else
    wmctrl -r QupZilla -e '0,0,26,900,693'
    wmctrl -r Telegram -e '0,900,55,380,693' -b remove,below
    touch /tmp/.telega.half
fi

При первом запуске этот скрипт сожмет окно браузера с правой стороны и покажет в освободившемся пространстве окно мессенджера. Второй запуск закроет мессенджер и вернет окно браузера в прежнее состояние.

 

 

 

 

---

 

Эффективная профессиональная работа в Linux немыслима без использования командной строки[24]. Пользователям, привыкшим работать в системах с графическим интерфейсом, работа с командной строкой может показаться неудобной: то, что можно сделать одним перетаскиванием мышью в командной строке потребует ввода с клавиатуры нескольких слов: команды с аргументами. Однако в Linux этот вид интерфейса всегда был основным, а поэтому и хорошо развитым. В командных оболочках, используемых в Linux, есть масса способов экономии усилий (нажатий на клавиши) при выполнении наиболее распространённых действий: автоматическое дополнение длинных названий команд или имён файлов, поиск и повторное выполнение команды, уже когда-то исполнявшейся раньше, подстановка списков имён файлов по некоторому шаблону и многое другое. Преимущества командной строки становятся особенно очевидны, когда требуется выполнять однотипные операции над множеством объектов. В системе с графическим интерфейсом потребуется столько перетаскиваний мышью, сколько есть объектов, в командной строке будет достаточно одной (пусть длинной и сложной) команды.

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

Командные оболочки (shells)

 

 

Общая информация об оболочках

 

 

Командная оболочка (или интерпретатор команд) — это программа, задача которой состоит в том, чтобы передавать ваши команды операционной системе и прикладным программам, а их ответы — вам. По своим задачам ему соответствует command.com в MS-DOS или cmd.exe в Windows, но функционально оболочки в Linux несравненно богаче. На языке командной оболочки можно писать небольшие программы для выполнения ряда последовательных операций с файлами и содержащимися в них данными — сценарии (скрипты).

Зарегистрировавшись в системе (введя имя пользователя и пароль), вы увидите приглашение командной строки — строку, оканчивающуюся символом $ (далее этот символ будет использоваться для обозначения командной строки). В случае, если при установке был настроен запуск графического интерфейса при загрузке системы, то добраться до командной строки можно на любой виртуальной текстовой консоли (нажав Ctrl-Alt-F1 — Ctrl-Alt-F6) или при помощи любой программы эмуляции терминала, например xterm. Подробнее об эмуляторах терминала см. раздел Терминалы. В дистрибутиве ALT Linux 2.4 Master доступны следующие командные оболочки:

bash

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

pdkdh

Клон korn shell, хорошо известной в системах UNIX командной оболочки.

sash

Особенность этой оболочки состоит в том, что она не зависит ни от каких разделяемых библиотек и включает в себя упрощённые реализации некоторых важнейших утилит, таких как lsdd и gzip. Поэтому sash особенно полезна при восстановлении после некоторых системных сбоев или при обновлении версии важнейших разделяемых библиотек.

tcsh

Улучшенная версия C shell.

zsh

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

Оболочкой по умолчанию является bash (Bourne Again Shell). Чтобы проверить, какую оболочку вы используете, наберите команду: echo $SHELL.

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

Командная оболочка bash

 

 

Командная строка в bash составляется из имени команды, за которым могут следовать ключи (опции) — указания, модифицирующие поведение команды. Ключи начинаются с символа - или --, и зачастую состоят из одной буквы. Кроме ключей, после команды могут следовать аргументы (параметры) — названия объектов, над которыми должна быть выполнена команда (часто — имена файлов и каталогов).

Ввод команды завершается нажатием клавиши Enter, после чего команда передаётся оболочке на исполнение. В результате выполнения команды на терминале пользователя могут появиться сообщения о ходе выполнения команды или об ошибках, а появление очередного приглашения командной строки (оканчивающегося символом $) — знак того, что выполнение команды завершено и можно вводить следующую.

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

 

Ctrl-A

перейти на начало строки, это же можно сделать, нажав клавишу Home;

Ctrl-U

удалить текущую строку;

Ctrl-C

Прервать выполнение текущей команды.

 

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

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

!номер команды

 

Если ввести !!, запустится последняя из набранных команд.

Иногда в Linux имена программ и команд слишком длинны. К счастью, bash сам может завершать имена. Нажав клавишу Tab, вы можете завершить имя команды, программы или каталога. Например, предположим, что вы хотите использовать программу декомпрессииbunzip2. Для этого наберите:

bu

Затем нажмите Tab. Если ничего не происходит — значит, существует несколько возможных вариантов завершения команды. Нажав клавишу Tab ещё раз, вы получите список имён, начинающихся с bu.

Например, в системе есть программы buildhash, builtin, bunzip2:

          $ bu 
          buildhash builtin bunzip2
          $ bu

Наберите n > (bunzip — это единственное имя, третьей буквой которого является n), а затем нажмите Tab. Оболочка дополнит имя и остаётся лишь нажать Enter, чтобы запустить команду!

Заметим, что программу, вызываемую из командной строки, bash ищет в каталогах, определяемых в системной переменной PATH. По умолчанию в этот перечень каталогов не входит текущий каталог, обозначаемый ./ (точка слэш). Поэтому для запуска программы prog из текущего каталога надо дать команду ./prog.

Базовые команды

 

 

Первые задачи, которые приходится решать в любой системе: работа с данными (обычно хранящимися в файлах) и управление работающими в системе программами (процессами). Ниже перечислены команды, позволяющие выполнять наиболее важные операции по работе с файлами и процессами. Только первая из них — cd — является составляющей частью собственно командной оболочки, остальные распространяются отдельно, но всегда доступны в любой системе Linux. Все команды, приведённые ниже, могут быть запущены как в текстовой консоли, так и в графическом режиме (xterm, консоль KDE). Для получения более подробной информации по каждой из команд используйте команду man, например:

man ls
cd

Позволяет сменить текущий каталог (перемещаться по файловой системе). Она работает как с абсолютными, так и с относительными путями. Предположим, что вы находитесь в своём домашнем каталоге и хотите перейти в его подкаталог tmp/. Для этого, введите относительный путь:

cd tmp/

Чтобы перейти в каталог /usr/bin, наберите (абсолютный путь):

cd /usr/bin/

Некоторые варианты использования команды:

cd ..

позволяет вам сделать текущим родительский каталог (обратите внимание на пробел между cd и ..).

cd -

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

ls

ls (list) выдаёт список файлов в текущем каталоге. Две основные опции: -a — просмотр всех файлов, включая скрытые, -l — отображение более подробной информации.

rm

Эта команда используется для удаления файлов. Внимание: удалив файл, вы не сможете его восстановить![25]. Синтаксис: rm имя_файла.

У данной программы существует ряд параметров. Самые часто используемые: -i — запрос на удаление файла, -r — рекурсивное удаление (т. е. удаление, включая подкаталоги и скрытые файлы). Пример:

rm -i ~/html/*.html

Удаляет все файлы .html, в вашем каталоге html.

mkdirrmdir

Команда mkdir позволяет вам создать каталог, тогда как rmdir удаляет каталог при условии, что он пуст. Синтаксис:

mkdir имя_каталога
rmdir имя_каталога

Команда rmdir часто заменяется командой rm -rf, которая позволяет вам удалять каталоги, даже если они не пусты[26].

less

less позволяет вам постранично просматривать текст. Синтаксис:

less имя_файла

Бывает полезно просмотреть файл перед тем, как его редактировать; основное же применение данной команды — конечное звено цепочки программ, выводящей существенное количество текста, которое не умещается на одном экране и в противном случае слишком быстро промелькнёт[27]. Для выхода из less нажмите q (quit).

grep

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

grep шаблон_поискафайл
ps

Отображает список текущих процессов. Колонка команд указывает имя процесса, PID (идентификатор процесса) — номер процесса (используется для операций с процессом — например, отправки сигналов командой kill). Синтаксис:

ps аргументы

Аргумент u предоставляет вам больше информации, ax позволяет вам просмотреть те процессы, которые не принадлежат вам.

kill

Если программа перестала отвечать или зависла, используйте данную команду, чтобы её завершить. Синтаксис:

kill PID_номер

PID_номер здесь — идентификационный номер процесса, вы можете узнать номер процесса для каждой выполняемой программы при помощи команды ps. Обычно команда kill отправляет процессу сигнал нормального завершения, однако иногда это не срабатывает и необходимо будет использовать kill -9 PID_number — в этом случае команда будет немедленно завершена системой без возможности сохранения данных (аварийное завершение). Список сигналов, которые команда kill может отправлять процессу можно получить, отдав команду kill -l.

Midnight Commander

 

 

Если вы многие годы работали в MS-DOS/Windows, то, наверное, ощущаете себя немного «не в своей тарелке». Для того, чтобы попасть в привычную среду, запустите Midnight Commander командой mc. Midnight Commander — это свободный аналог Norton Commander и его популярного ныне потомка — Far. Если вы в какой-то момент сочтёте, что Midnight Commander что-то не умеет, то это, скорее всего, неверно. Ознакомьтесь с его описанием в /usr/share/doc/mc-номер_версии или дайте команду man mc.

Пакет coreutils

Антон Бояршинов

 
 

Пакет coreutils содержит множество маленьких утилит для работы с файлами и каталогами (создание, копирование и проч.) и текстовыми строками (объединение, сортировка и проч.). Принцип работы этих утилит унаследован от операционной системы UNIX: все они не имеют графического интерфейса и вызываются из командной строки с различными аргументами, работают с данными в простом текстовом формате и используют механизм стандартного ввода/вывода, что позволяет передавать вывод одной команды прямо на вход другой для последующей обработки, не используя промежуточных файлов (т. н. конвейер).

Эффективная работа с этими утилитами заключается именно в их комбинировании, они позволяют производить массовые однотипные операции по работе с файлами и текстовыми данными одной (пусть достаточно длинной) командой, что экономит огромное количество человеческого времени. Утилиты из этого пакета часто используются при написании сценариев командной оболочки. Далее описана большая часть утилит, входящих в пакет coreutils, для каждой утилиты приведено краткое описание ее функций. Более подробное описание по каждой утилите на русском языке вы можете получить, вызвав эту утилиту с ключом --help, а наиболее полную документацию (к сожалению, только на английском языке) — отдав команду info утилита.

Операции над файлами и каталогами

 

 

Здесь рассмотрены утилиты, работающие с объектами файловой системы: файлами, каталогами, устройствами, а также с файловыми системами в целом.

cp

Копирует файлы и каталоги.

mv

Перемещает (переименовывает) файлы.

rm

Удаляет файлы и каталоги.

df

Выводит отчёт об использовании дискового пространства (свободном месте на всех дисках).

du

Вычисляет место на диске, занимаемое файлами или каталогами.

ln

Создаёт ссылки на файлы.

ls

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

mkdir

Создаёт каталоги.

touch

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

realpath

Вычисляет абсолютное имя файла по относительному.

basename

Удаляет из полного имени файла путь (т. е. сокращает абсолютное имя файла до относительного).

dirname

Удаляет из полного имени файла имя файла (т. е. выводит полное имя каталога, в котором расположен файл).

pwd

Выводит имя текущего каталога.

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

du -b | sort -nr

Фильтры

 

 

Фильтры — это программы, которые читают данные со стандартного ввода, преобразуют их и выводят на стандартный вывод. Использование программ-фильтров позволяет организовывать конвейер: производить несколько последовательных операций над данными в одной команде. Подробнее о перенаправлении стандартного ввода/вывода и конвейере можно прочитать в документации по bash или другой командной оболочке. Многие из команд, приведённых в этом разделе, могут работать и с файлами.

cat

объединяет файлы и выводит их на стандартный вывод;

tac

объединяет файлы и выводит их на стандартный вывод, начиная с конца;

sort

сортирует строки;

uniq

удаляет дублирующиеся строки из отсортированных файлов;

tr

выполняет замену определенных символов в стандартном вводе на другие определенные символы в стандартном выводе, может быть использована для транслитерации, удаления лишних символов и для более сложных подстановок;

cut

систематизированные данные в текстовом формате можно обрабатывать при помощи утилиты cut, которая выводит заданную часть каждой строки файла; cut позволяет выводить только заданные поля (данные из некоторых колонок таблицы, в которой содержимое ячеек разделено стандартным символом — знаком табуляции или любым другим), а также символы, стоящие на определённом месте в строке;

paste

объединяет данные из нескольких файлов в одну таблицу, в которой данные из каждого исходного файла составляют отдельную колонку;

csplit

делит файл на части по шаблону;

expand

преобразует знаки табуляции в пробелы;

unexpand

преобразует пробелы в знаки табуляции;

fmt

форматирует текст по ширине;

fold

переносит слишком длинные текстовые строки на следующую строку;

nl

нумерует строки файла;

od

выводит файл в восьмеричном, шестнадцатеричном и других подобных формах;

tee

дублирует стандартный вывод программы в файле на диске;

Пример 7.2. Получение списка адресов писавших вам людей с помощью команд cat, sort и uniq

 cat *| grep ^From: |sort |uniq

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

 cat big.text.file | tr '[:space:][:punct:]' "\n" |sort
        |uniq -c |sort -n -r |less

Прочее

 

 
head

выводит начальную часть файла заданного размера;

tail

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

echo

выводит текст аргумента на стандартный вывод;

false

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

true

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

yes

бесконечно выводит одну и ту же строку (по умолчанию — yes) пока не будет прервана.

seq

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

sleep

приостанавливает выполнение на заданное число секунд;

usleep

приостанавливает выполнение на заданное число милисекунд;

comm

построчно сравнивает 2 предварительно отсортированных (командой sort) файла, выводит таблицу из трёх колонок, где в первой — строки, уникальные для первого файла, во второй — уникальные для второго, в третьей — общие для обоих файлов;

join

объединяет строки двух файлов по общему полю;

paste

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

split

разбивает файл на части заданного размера.

Вычисления

 

 

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

test

возвращает значения «истина» или «ложь» в зависимости от значения аргументов; команду test удобно использовать в сценариях для проверки условий;

date

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

expr

вычисляет выражения;

md5sum

подсчитывает контрольную сумму по алгоритму MD5;

sha1sum

подсчитывает контрольную сумму по алгоритму SHA1;

wc

подсчитывает количество строк, слов и символов в файле;

factor

разлагает числа на простые множители;

Пример 7.4. Проверка наличия файла при помощи команды test

if test -e /bin/bash; then echo "bash присутствует";
          else echo "bash отсутствует, странно"; fi;

Пример 7.5. Сравнение чисел при помощи команды test

if test 5 -gt 7; then echo "5 > 7"; else echo
          "7 > 5"; fi;

Пример 7.6. Подсчёт суммы строк во всех файлах на языке C в текущем каталоге при помощи команды wc

cat *.[ch] | wc -l

Пример 7.7. Получение вчерашней даты при помощи команды date

date -d yesterday

Ну и в завершение не будет лишним почитать полную документацию по всем утилитам, входящим в пакет coreutils:

rpm -ql
        coreutils | grep man | xargs -n1 basename | sed 's/.1.gz//' |
        xargs man

 

Поиск

Антон Бояршинов

 
 

Поиск информации в файловой системе можно условно разделить на поиск по атрибутам файла (понимая их расширительно, то есть включая имя, путь и т. п.) и поиск по содержимому. Для этих видов поиска как правило используются программы find и grepсоответственно. Благодаря удобным средствам межпроцессного взаимодействия, эти два вида поиска легко объединить, то есть искать нужную информацию только в файлах с нужными атрибутами[28].

Поиск по атрибутам

 

 

Основным средством поиcка по атрибутам файла является программа find. Обобщенный вызов find выглядит так: find путь выражение, где путь — это список каталогов, в которых надо искать, а выражение — набор выражений, описывающих критерии отбора файлов и действия, которые надо произвести над найденными файлами. По умолчанию имена найденных файлов просто выводятся на стандартный вывод, но это можно переопределить и передавать список имён найденных файлов любой команде для обработки. По умолчаниюfind ищет во всех подкаталогах каталогов, заданных в списке путей.

Выражения

 

 

Выражения, определяющие критерии поиска файлов, состоят из пар ключ — значение. Ниже перечислены некоторые из возможных параметров поиска:

-amin, -anewer, -atime

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

-cmin, -cnewer, -ctime

Время последнего изменения статуса файла.

-fstype

Тип файловой системы, на которой расположен файл.

-gid, -group

Пользователь и группа, которым принадлежит файл.

-name, -iname

Соответствие имени файла заданному шаблону.

-regex, -iregex

Соответствие имени файла регулярному выражению.

-path, -ipath

Соответствие полного имени файла (с путём) заданному шаблону.

-perm

Права доступа.

-size

Размер файла.

-type

Тип файла.

Действия

 

 

Программа find может выполнять различные действия над найденными файлами. Наиболее важные из них:

-print

Вывести имя файла на стандартный выход (действие по умолчанию);

-delete

удалить файл;

-exec

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

Об остальных можно прочитать в экранной документации по команде find, отдав команду man find.

Параметры

 

 

Параметры влияют на общее поведение find. Наиболее важные из них:

-maxdepth

максимальная глубина поиска в подкаталогах;

-mindepth

минимальная глубина поиска в подкаталогах;

-xdef

поиск только в пределах одной файловой системы.

Об остальных можно прочитать в экранной документации по команде find.

Пример 7.8. Перекодировка имён файлов и каталогов из koi8-r в cp1251

find ./ -print | tac | sed -e 's/"/\\"/' | while read name; do mv "$name"
 "`dirname "$name"`/`basename "$name" | iconv -f koi8-r -t cp1251`"; done

Терминалы

 

 

Терминал в Linux — это программа, которая предоставляет пользователю возможность вести диалог с системой при помощи интерфейса командной строки. Терминалы позволяют передавать системе и получать от неё только текстовые данные. Стандартный терминал к системе Linux можно получить на любой текстовой виртуальной консоли, а для того, чтобы получить доступ к командной стоке из графической оболочки, требуются специальные программы — эмуляторы терминала. Ниже перечислены некоторые из эмуляторов терминала и подобных программ, вошедших в дистрибутив ALT Linux 2.4 Master.

xterm

Программы: resize, uxterm, xterm.

Стандартный эмулятор терминала для X Window System. Этот эмулятор совместим с терминалами DEC VT102/VT220 и Tektronix 4014 и предназначен для программ, не использующих графическую среду напрямую. Если операционная система поддерживает изменение окна терминала (например, сигнал SIGWINCH в системах, произошедших от 4.3bsd), xterm может использовать сообщать программам, запущенным в нем, что размер окна изменился.

aterm

Aterm — это цветной эмулятор терминала rxvt версии 2.4.8, дополненный полосами прокрутки в стиле NeXT от Альфредо Кодзима (Alfredo Kojima). Он предназначен для замены xterm в случае, если не нужна эмуляция терминала Tektronix 4014.

console-tools

Программы: charset, chvt, codepage, consolechars, convkeys, deallocvt, dumpkeys, fgconsole, fix_bs_and_del, font2psf, getkeycodes, kbd_mode, loadkeys, loadunimap, mapscrn, mk_modmap, openvt, psfaddtable, psfgettable, psfstriptable, resizecons, saveunimap, screendump,setfont, setkeycodes, setleds, setmetamode, setvesablank, showcfont, showkey, splitfont, unicode_stop, vcstime, vt-is-UTF8, writevt.

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

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

screen

Утилита screen позволяет исполнять консольные программы, когда вы не можете контролировать их выполнение все время (к примеру, если вы ограничены сеансовым доступом к удалённой машине).

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

Установите пакет screen, если вам могут понадобиться виртуальные терминалы.

vlock

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

Работа с файлами

 

 
binutils

Это коллекция утилит для работы с бинарными файлами. Она включает в себя:

  • addr2line: преобразование адресов в пару файл-строка;

  • ar: создание, изменение архивов и извлечение файлов из них;

  • nm: чтение символов из объектных файлов;

  • objcopy: копирование и трансляция объектных файлов;

  • objdump: вывод информации из объектных файлов;

  • ranlib: создание индексов для содержимого архива;

  • size: вывод размеров блоков объекта или архивного файла;

  • strings: вывод печатаемых строк из файлов;

  • strip: отбрасывание символов.

 

diffutils

Набор утилит проекта GNU для сравнения файлов. Пакет diffutils включает четыре утилиты:

  • diff: сравнивает два файла и выводит различающиеся строки;

  • cmp: сравнивает файлы не построчно, а побайтово;

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

  • sdiff: предназначен для интерактивного слияния двух файлов.

Установите diffutils, если вам нужно сравнивать текстовые файлы.

patch

Программа patch предназначена для внесения исправлений, созданных командой diff, в исходные файлы. Команда diff используется для сравнения изменённого и исходного файлов и создания на основе полученной информации файла исправлений. Человек, нуждающийся в изменении исходного файла, может использовать для этого команду patch.

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

file

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

gnupg

Программы: gpg, gpgsplit, gpgv, lspgpot.

Инструмент для защиты обмена данными и хранилищ данных. Может использоваться для шифрования информации и создания цифровых подписей. Пакет включает в себя инструменты управления ключами. GnuPG использует криптографию с открытым ключом. Каждый пользователь имеет пару ключей, состоящую из секретного (закрытого) и публичного (открытого) ключей. Секретный ключ доступен только пользователю и не может быть передан другому лицу ни при каких обстоятельствах. Публичный ключ передаётся всем людям, с которыми пользователь будет обмениваться сообщениями.

kgpg

Kgpg — простой интерфейс к мощной утилите шифрования GnuPG.

slocate

Программы: locate, slocate, mklocatedb, updatedb.

Более безопасная версия программы locate. Как и locate, slocate отыскивает файлы, совпадающие с заданным шаблоном в центральной базе данных файлов (которая обычно обновляется каждую ночь). Позволяет значительно сократить время поиска файла по сравнению с find, особенно при большом количестве файлов.

stmpclean

Программы: stmpclean, tmpwatch.

Утилита stmpclean удаляет старые файлы (и старые пустые каталоги) из указанного каталога. Эта программа обычно используется для очистки каталогов временных файлов (например, /tmp), где обычно накапливаются ненужные файлы.

tree

Утилита tree рекурсивно отображает содержимое каталогов в виде дерева. tree базируется на портированной в UNIX из MS-DOS программе tree. Установите этот пакет, если вам нужно просматривать каталоги в таком виде.

 

 

 

---

 

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

В этой статье мы представим вам список наиболее часто используемых команд Linux с примерами для легкого обучения. Вы можете найти фактическое описание каждой команды на своём ПК, для этого вам необходимо ввести:

$ man "command-name"

 

Команда adduser/addgroup

Команды adduser и addgroup используются для добавления пользователя и группы в систему в соответствии с конфигурацией по умолчанию, указанной в файле /etc/adduser.conf.

$ sudo adduser sedicomm

 

Команда agetty

Agetty — это команда, которая управляет физическими или виртуальными терминалами и вызывается init. Как только она обнаруживает соединение, сразу открывает порт tty, запрашивает имя пользователя для входа и вызывает команду /bin/loginAgetty — это замена Linux getty:

$ agetty -L 9600 ttyS1 vt100

 

Команда alias

Alias ​​- полезная встроенная командная оболочка для создания псевдонимов (ярлыков) для команд Linux. Это полезно для создания новых/пользовательских команд из существующих команд оболочки Linux (включая опции):

$ alias home='cd /home/sedicomm/public_html'

 

Вышеупомянутая команда создаст псевдоним, называемый home для каталога /home/sedicomm/public_html, поэтому всякий раз, когда вы вводите home в командной строке терминала, она помещает вас в каталог /home/sedicomm/public_html.

 

Команда anacron

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

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

 

Команда apropos

Команда apropos используется для поиска и отображения краткой справочной страницы команды/программы следующим образом:

$ apropos adduser

 

Команда apt

Инструмент apt — относительно новый менеджер пакетов высокого уровня для систем Debian/Ubuntu:

$ sudo apt update

 

Команда apt-get

Apt-get — мощный и бесплатный менеджер пакетов интерфейса для систем Debian/Ubuntu. Он используется для установки новых, удаления доступных и обновления существующих пакетов программного обеспечения, а также обновления всей операционной системы.

$ sudo apt-get update

 

Команда aptitude

Aptitude — это мощный текстовый интерфейс для системы управления пакетами Debian GNU/Linux. Такими как apt-get и apt. Его можно использовать для установки, удаления или обновления пакетов программного обеспечения в системе.

$ sudo aptitude update

 

Команда arch

Arch — простая команда для отображения архитектуры машины или имени оборудования (аналогично uname -m):

$ arch

 

Команда arp

ARP (протокол разрешения адресов) — это протокол, который отображает IP-адреса сети с адресами аппаратного обеспечения (MAC) в сети IPv4.

Вы можете использовать его, как показано ниже, чтобы найти все «живые» хосты в сети:

$ sudo arp-scan --interface=enp2s0 --localnet

 

Команда at

Команда at используется для планирования задач в будущем. Это альтернатива cron и anacron, однако она запускает задачу один раз в будущем без редактирования любых файлов конфигурации:

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

$ sudo echo "shutdown -h now" | at -m 23:55

 

Команда atq

Команда atq используется для просмотра заданий в командной очереди:

$ atq

 

Команда atrm

Команда atrm используется для удаления заданий (обозначенных их номером) из очереди команд:

$ atrm 2

 

Команда awk

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

$ awk '//{print}' /etc/hosts

 

Командная batch

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

 

Команда basename

Команда basename выводит имя файла, удаляя каталоги в абсолютном пути:

$ basename bin /findhosts.sh

 

Команда bc

Bc — простой, но мощный и произвольный язык калькулятора CLI, который можно использовать следующим образом:

$ echo 20.05 + 15.00 | bc

 

Команда bg

Bg — это команда, используемая для отправки процесса в фоновый режим.

$ tar -czf home.tar.gz
$ bg
$ jobs

 

Команда bzip2

Команда bzip2 используется для сжатия или распаковки файлов.

$ bzip2 -z filename #Compress
$ bzip2 -d filename.bz2 #Decompress

 

Команда cal

Команда cal выводит календарь.

$ cal

 

Команда cat

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

$ cat file.txt

 

Команда chgrp

Команда chgrp используется для изменения правила группового владения файлом. Укажите новое имя группы в качестве первого аргумента, а имя файла — как второй аргумент:

$ chgrp sedicomm users.txt

 

Команда chmod

Команда chmod используется для изменения/обновления прав доступа к файлу:

$ chmod +x sysinfo.sh

 

Команда chown

Команда chown изменяет/обновляет права доступа пользователей и групп к файлу/каталогу:

$ chmod -R www-data:www-data /var/www/html

 

Команда cksum

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

$ cksum README.txt

 

Команда clear

Команда clear позволяет очистить экран терминала, для этого просто введите её в терминал:

$ clear

 

Команда cmp

Cmp выполняет побайтное сравнение двух файлов:

$ cmp file1 file2

 

Команда comm

Команда comm используется для сравнения двух отсортированных по очереди файлов. Это возможно с помощью команды:

$ comm file1 file2

 

Команда cp

Команда cp используется для копирования файлов и каталогов из одного места в другое.

$ cp /home/sedicomm/file1 / home/sedicomm/personal/ 

 

 

Команда date

Команда date отображает/устанавливает системную дату и время следующим образом.

$ date
$ date --set = "8 JUN 2017 13:00:00"

 

Команда dd

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

В приведенном ниже примере показано создание загрузочного USB-устройства:

$ dd if=/home/sedicomm/kali-linux-1.0.4-i386.iso of=/dev/sdc1 bs=512M; sync\

 

Команда df

Команда df используется для демонстрации использования дискового пространства файловой системы:

$ df -h

 

 

Команда diff

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

$ diff file1 file2

 

Команда dir

Команда dir работает как команда ls, она перечисляет содержимое каталога.

$ dir

 

Команда dmidecode

Команда dmidecode — это инструмент для извлечения информации об оборудовании любой системы Linux. Он преобразовывает содержимое таблицы DMI компьютера в удобный для чтения формат.

Чтобы просмотреть информацию о системном оборудовании, вы можете ввести:

$ sudo dmidecode --type system

 

Команда du

Du используется для отображения дискового пространства файлов, присутствующего в каталоге, а также его подкаталогах следующим образом:

$ du /home/aaronkilik

 

Команда echo

Команда echo выводит текст в строку выделенную для неё:

$ echo “This is Sedicomm - Linux How Tos”

 

Команда eject

Команда eject используется для извлечения съемных носителей, таких как DVD или CD ROM из системы.

$ eject /dev/cdrom
$ eject /mnt/cdrom/
$ eject /dev/sda

 

Команда env

Команда env перечисляет все текущие переменные среды и используется для их установки.

$ env

 

Команда exit

Команда exit используется для выхода из оболочки.

$ exit

 

Команда expr

Команда expr используется для вычисления выражений, как показано ниже:

$ expr 20 + 30

 

Команда factor

Factor используется для отображения простых коэффициентов числа.

$ factor 10

 

Команда Find

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

$ find /home/sedicomm/ -name trolo-lo.txt

 

Команда Free

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

$ free -h

 

Команда grep

Команда grep выполняет поиск заданного шаблона в файле (или файлах) и выводит результат в выходных строках, содержащих этот шаблон, следующим образом:

$ grep 'sedicomm' domain-list.txt

 

 

Команда groups

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

$ groups
$ group sedicomm

 

Команда gzip

Gzip помогает сжать файл, меняя его расширение на «.gz«, как показано ниже:

$ gzip passwds.txt
$ cat file1 file2 | gzip > foo.gz

 

Команда gunzip

Gunzip восстанавливает файлы, сжатые командой gzip.

$ gunzip foo.gz

 

Команда head

Head используется для отображения первых строк (10 строк по умолчанию) указанного файла или stdin на экран:

# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head 

 

Команда History

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

$ history

 

 

Команда hostname

Hostname используется для вывода или установки имени системного хоста в Linux.

$ hostname
$ hostname NEW_HOSTNAME

 

Команда hostnamectl

Команда hostnamectl управляет именем системного хоста под systemd. Она используется для вывода или изменения имени системного хоста и любых связанных настроек:

$ hostnamectl
$ sudo hostnamectl set-hostname NEW_HOSTNAME

 

Команда Hwclock

Hwclock — это инструмент для управления аппаратными часами системы.

$ sudo hwclock
$ Sudo hwclock --set --date 8/06/2017

 

Команда hwinfo

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

$ hwinfo

 

Команда id

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

$ id sedicomm

 

Команда ifconfig

Команда ifconfig  используется для настройки, просмотра и управления сетевыми интерфейсами Linux.

$ Ifconfig
$ sudo ifconfig eth0 up
$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 172.16.25.125

 

Команда ionice

Ionice используется для установки или просмотра класса планирования ввода-вывода процесса и приоритета указанного процесса.

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

$ ionice -c 3 rm /var/logs/syslog

 

Команда iostat

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

$ iostat

 

Команда ip

ip — утилита командной строки в Linux из пакета iproute2. Позволяет выполнять настройку сетевой подсистемы и является заменой таких утилит, как ifconfigroutearp.

Эта команда назначит IP-адрес определенному интерфейсу (eth1 в этом случае).

$ sudo ip addr add 192.168.56.10 dev eth1

 

Команда iptables

Iptables — это брандмауэр на основе терминалов для управления входящим и исходящим трафиком через набор настраиваемых правил таблиц.

Приведенная ниже команда используется для проверки существующих правил в системе (для этого могут потребоваться привилегии root).

$ sudo iptables -L -n -v

 

Команда iw

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

$ iw list 

 

Команда iwlist

Команда iwlist отображает подробную беспроводную информацию с беспроводного интерфейса. Приведенная ниже команда позволяет получить подробную информацию о интерфейсе wlp1s0.

$ iwlist wlp1s0 scanning

 

Команда kill

Kill используется для завершения процесса с использованием его PID, посылая ему сигнал (сигнал по умолчанию для kill — TERM).

$ kill -p 2300
$ kill -SIGTERM -p 2300

 

Команда killall

Команда killall используется для завершения процесса с использованием его имени.

$ killall firefox

 

 

Команда kmod

Команда kmod используется для управления модулями ядра Linux. Чтобы просмотреть список всех загруженных модулей, введите:

$ kmod list

 

Команда Last

Команда last отображает список последних зарегистрированных пользователей.

$ last

 

Команда ln

Команда ln используется для создания символьной ссылки между файлами с использованием флага -s, вот таким образом.

$ ln -s /usr/bin/lscpu cpuinfo

 

Команда locate

Команда locate используется для поиска файла по имени. Приведенная ниже команда будет искать файл по его точному имени:

$ locate -b '\ domain-list.txt'

 

Команда login

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

$ sudo login

 

Команда ls

Команда ls используется для отображения содержимого каталога. Она работает аналогично команде dir.

Параметр -l позволяет использовать длинный формат списка.

$ ls -l file1

 

 

Команда lshw

Команда lshw является самым простым инструментом для получения подробной информации об аппаратной конфигурации машины, вызывайте её с привилегиями суперпользователя, для получения более полной информации:

$ sudo lshw

 

Команда lscpu

Команда lscpu отображает информацию о архитектуре ЦП (количество процессоров, потоков, ядер, сокетов и т.д.).

$ lscpu

 

Команда lsof

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

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

$ lsof -u sedicomm

 

Команда lsusb

Команда lsusb показывает информацию о шинах USB как в системе так и на устройствах, подключенных к ним.

$ lsusb

 

Команда Man

Man используется для просмотра справочных страниц для команд и программ.

$ man du
$ man df

 

Команда md5sum

Команда md5sum используется для вычисления и вывода дайджеста сообщения MD5 файла. Если запустить без аргументов, debsums проверяет каждый файл в вашей системе на наличие файлов md5sum:

$ sudo debsums

 

Команда mkdir

Команда mkdir используется для создания одного или нескольких каталогов, если они еще не существуют (их можно переопределить с помощью опции -p).

$ mkdir sedicomm-files
$ mkdir -p sedicomm-files

 

Команда more

Команда more позволяет просматривать относительно длинные текстовые файлы на одном экране.

$ more file.txt

 

Команда mv

Команда mv используется для переименования файлов или каталогов. Она также перемещает файл или каталог в другое место в структуре каталогов.

$ mv test.sh sysinfo.sh

 

Команда nano

Nano — популярный небольшой, бесплатный и удобный текстовый редактор для Linux. Чтобы открыть файл с помощью nano, введите:

$ nano file.txt

 

Команда nc/netcat

Nc (или netcat) используется для выполнения любой операции, связанной с сокетами TCPUDP или UNIX. Она может обрабатывать как IPv4, так и IPv6 для открытия TCP-соединений, отправки UDP-пакетов, прослушивания на произвольных портах TCP и UDP, выполнения сканирования портов.

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

$ nc -zv 192.168.1.5 22

 

Команда netstat

Команда netstat отображает полезную информацию о сетевой подсистеме Linux (сетевые подключения, таблицы маршрутизации, статистику интерфейсов, соединения маскарадов и членства в многоадресной рассылке).

Эта команда отобразит все открытые порты в локальной системе:

$ netstat -a | more

 

Команда nice

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

Следующая команда запускает процесс «tar command», устанавливая значение «nice» равным 12.

$ nice -12 tar -czf backup.tar.bz2 /home/* 

 

Команда nmap

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

Приведенная ниже команда будет проверять открытые порты на всех хостах в указанной сети.

$ nmap -sV 192.168.56.0/24

 

Команда nproc

Команда nproc показывает количество обрабатывающих блоков, присутствующих в текущем процессе.

$ nproc

 

Команда openssl

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

$ tar -czf - * | openssl enc -e -aes256 -out backup.tar.gz

 

Команда passwd

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

$ passwd sedicomm

 

Команда pidof

Pidof отображает идентификатор процесса запущенной программы/команды.

$ pidof init
$ pidof cinnamon

 

Команда ping

Команда ping используется для определения отклика подключения между хостами в сети (или в Интернете):

$ ping sedicomm.com

 

Команда ps

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

# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head

 

Команда pstree

Pstree показывает запущенные процессы, которое берут истоки либо в PID, либо в init.

$ pstree

 

Команда pwd

Команда pwd отображает имя текущего/рабочего каталога, как показано в примере ниже:

$ pwd

 

Команда rdiff-backup

Rdiff-backup — мощный локальный/удаленный инкрементный сценарий резервного копирования, написанный на Python. Он работает в любой операционной системе POSIX, такой как LinuxMac OS X.

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

$ sudo rdiff-backup /etc /media/sedicomm/Backup/server_etc.backup

 

Команда reboot

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

$ reboot

 

Команда rename

Команда rename используется для переименования нескольких файлов одновременно. Если у вас есть набор файлов с расширением «.html», и вы хотите поменять их расширение на «.php», это можно выполнить введя команду приведенную ниже:

$ rename '/ / .html $ / \. Php /' * .html

 

Команда rm

Команда rm используется для удаления файлов или каталогов, как показано в примере ниже:

$ rm file1
$ rm -rf my-files

 

Команда rmdir

Команда rmdir помогает удалить пустые каталоги следующим образом:

$ rmdir /backup /all

 

Команда scp

Команда scp позволяет безопасно копировать файлы между хостами в сети.

$ scp ~/names.txt root@192.168.56.10:/root/names.txt

 

Команда shutdown

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

$ shutdown --poweroff

 

Команда sleep

Команда sleep используется для задержки или приостановки (в частности, выполнения команды) в течение определенного периода времени.

$ check.sh; sleep 5; sudo apt update

 

Команда Sort

Sort используется для сортировки строк текста в указанных файлах или из stdin, как показано ниже:

$ cat words.txt

 

 

Команда split

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

$ tar -cvjf backup.tar.bz2 /home/sedicomm/Documents/*

 

Команда ssh

Ssh (SSH client) — это команда для удаленного доступа и запуска команд на удаленном компьютере. Она предназначен для обеспечения защищенной зашифрованной связи между двумя ненадежными хостами по небезопасной сети, такой как Интернет.

$ ssh sedicomm@192.168.56.10

 

 

Команда stat

Stat используется для отображения состояния файловой системы (опция -f используется для указания файловой системы).

$ stat file1

 

Команда su

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

$ su
$ su sedicomm

 

Команда sudo

Sudo позволяет разрешенному пользователю системы запускать команду как root пользователь, по правилам определенным политикой безопасности, такой как sudoers.

$ Sudo apt update
$ Sudo useradd sedicomm
$ Sudo passwd sedicomm

 

Команда sum

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

$ sum output file.txt

 

Команда tac

Команда tac объединяет и отображает файлы в обратном порядке. Она просто выводит каждый файл в терминал, сначала показывая последнюю строку.

$ tac file.txt

 

Команда tail

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

Если имеется более одного файла, перед каждым заголовком указывается имя файла. Используйте её следующим образом (укажите больше строк для отображения с использованием опции -n).

$ tail long-file
$ tail -n 15 long-file

 

Командная talk

Команда talk используется для общения с другим пользователем системы/сети. Чтобы поговорить с пользователем используйте его имя для входа, однако, чтобы поговорить с пользователем на другом компьютере, используйте «user @ host».

$ talk person [ttyname]
$ talk 'user @ host '[ttyname]

 

Команда tar

Команда tar — самая мощная утилита для архивирования файлов в Linux.

$ tar -czf home.tar.gz

 

 

Команда tee

Команда tee используется для чтения файлов с терминала, как показано в примере ниже.

$ echo "Testing how tee command works" | tee file1 

 

Команда Time

Time запускает программы и суммирует использование ресурсов системы.

$ time wc /etc/hosts

 

 

Команда top

Команда top отображает все процессы в системе Linux в отношении использования памяти ЦП и обеспечивает динамическое представление текущей системы в режиме реального времени.

$ top

 

Команда Touch

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

$ touch file.txt

 

Команда tr

Tr — полезная утилита, используемая для перевода (изменения) или удаления символов из stdin и записи результата в stdout.

$ cat domain-list.txt | Tr [: lower:] [: upper:]

 

Команда uname

Команда uname отображает системную информацию, такую ​​как операционная система, имя ядра узла хоста, версия, дата релиза и т.д.

Используйте опцию -a, чтобы отобразить всю системную информацию:

$ uname

 

Команда uniq

Команда uniq отображает или пропускает повторяющиеся строки терминала. Чтобы указать количество вхождений строки, используйте параметр -c.

$ cat domain-list.txt

 

Команда uptime

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

$ uptime

 

Команда User

User показывает имена пользователей, которые вошли в настоящее время.

$ user

 

Команда vim/vi

Vim ( улучшенный Vi) популярный текстовый редактор для Unix-подобных операционных систем. Он может использоваться для редактирования всех видов текстовых и программных файлов.

$ vim file

 

 

Команда w

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

$ w

 

Команда Wall

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

$ wall “This is Sedicomm – Linux How Tos”

 

Команда watch

Команда watch запускает программу повторно, пока она отображается в полноэкранном режиме. Её также можно использовать для просмотра изменений в файле/каталоге. В приведенном ниже примере показано, как просматривать содержимое каталога.

$ watch -d ls -l

 

Команда wc

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

$ wc filename

 

Команда wget

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

$ wget -c http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz

 

Команда whatis

Команда whatis выполняет поиск и показывает краткие или однострочные описания страниц с указанными именами команд.

$ whatis wget

 

Команда which

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

$ which who

 

Команда who

Команда who показывает информацию о пользователях, которые в настоящее время вошли в систему.

$ who

 

Команда whereis

Команда whereis помогает нам находить двоичные файлы, исходные файлы и т.д..

$ whereis cat

 

Команда xargs

Команда xargs — полезная утилита для чтения элементов с терминала, разделенных пробелами или иными символами (двойными или одинарными кавычками или обратной косой чертой).

В приведенном ниже примере показано, что xargs используются для копирования файла в несколько каталогов Linux.

$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

 

Команда Yes

Команда yes используется для отображения строки несколько раз, пока она не будет завершена  с помощью [Ctrl + C].

$ yes "This is Sedicomm - Linux HowTos"

 

Команда youtube-dl

Youtube-dl — это легкая команда командной строки для загрузки видео, а также для извлечения треков MP3 с сайта YouTube.com и еще некоторых сайтов.

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

$ youtube-dl --list-formats https://www.youtube.com/watch?v=iR

 

Команда zcmp / zdiff

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

$ zcmp domain-list.txt.zip basic_passwords.txt.zip
$ zdiff domain-list.txt.zip basic_passwords.txt.zip

 

Команда zip

Zip — простая в использовании команда, используемая для сжатия (архивирования) файлов.

$ tar cf -. | Zip | dd of =/dev/nrst0 obs=16k
$ zip inarchive.zip foo.c bar.c --out outarchive.zip
$ tar cf -. | zip backup -

 

Команда zz

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

$ zz

 

Вот и все! Как уже упоминалось ранее, в Linux существует огромное множество команд. Список команд гораздо длиннее, чем мы можем предложить, поэтому не останавливайтесь и смело изучайте что-то новое.

 

 

---

 

Предположим, что вы открыли терминал в Linux и запустили в нем какую-нибудь программу. Если вы закроете окно терминала, тогда программа, которую вы запустили, тоже закроется.

 

Чтобы закрыть терминал, но при этом оставить работать запущенную из него программу, перейдите в терминал и нажмите сочетание клавиш Ctrl+Z (это позволит вам получить доступ к командой строке). Затем наберите в терминале следующие команды:

disown -h %1  
bg 1

Команда disown с ключом -h используется для того, чтобы пометить процесс с номером 1 (это наша запущенная программа) не закрываться при закрытии терминала (на нее не подействует сигнал SIGHUP), а команда bg переводит задачу в фоновый режим. Теперь вы можете спокойно закрыть терминал (кликнуть на крестик или ввести команду exit).
Команды disown и bg

Есть еще один способ, при котором окно терминала закроется сразу после запуска какой-нибудь команды. Для этого нужно добавить к команде & exit. Например, следующая команда запустит редактор GEdit и тут же закроет терминал:

 
gedit & exit