Архив рубрики: Публикации

Найдите IP-адрес вашего роутера

Все маршрутизаторы имеют веб-интерфейс и, следовательно, настроены с веб-браузером. Хотя некоторые маршрутизаторы могут быть доступны по имени (они обычно перехватывают DNS-запросы), все они могут быть доступны по их IP-адресу.

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

IP-адрес записывается в виде четырех чисел, разделенных точками. Типичные домашние сети используют IP-адреса, которые начинаются с 192.168. Часто маршрутизатор имеет IP-адрес, например 192.168.0.1, почему именно так, прочитайте стаью по ссылке: https://19216811.ru/192-168-0-1 или 192.168.2.1.

Если ваш интернет-провайдер (ISP) установил ваш маршрутизатор, он знает и его IP-адрес, и идентификатор пользователя/пароль для него. По нашему опыту, провайдер никогда не сообщает клиенту эту информацию заранее.

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

После настройки сети каждое вычислительное устройство в сети знает IP-адрес маршрутизатора и разливает бины, если вы знаете секретное рукопожатие.

Устройства Apple называют маршрутизатор «Router». Windows называет его «Default Gateway», термин, заимствованный из TCP/IP. Chrome OS называет маршрутизатор «Gateway». Android не сообщит вам IP-адрес вашего роутера, заставив вас установить приложение.

 

WINDOWS

Пользователи Windows могут запустить командную строку и ввести «ipconfig», чтобы увидеть шлюз по умолчанию. Вывод будет выглядеть так в Windows 7 :

Конфигурация Windows IP

Ethernet-адаптер Local Area Connection:

DNS-суффикс для конкретного подключения. :

IPv4-адрес. , , , , , , , , , , : 192.168.5.29

Маска подсети . , , , , , , , , , , : 255.255.255.0

Шлюз по умолчанию . , , , , , , , : 192.168.5.1

 

Вывод команды Windows XP практически идентичен. В любой системе, если компьютер использует Wi-Fi, а не Ethernet, ищите «Беспроводное сетевое соединение» вместо «Подключение по локальной сети».

Та же команда ipconfig работает на настольной стороне Windows 8, которая также определяет маршрутизатор как «шлюз по умолчанию». Беспроводное соединение в Windows 8 называется «Адаптер беспроводной локальной сети Wi-Fi», а проводное соединение идентифицируется как «Адаптер Ethernet Ethernet».

 

 

IOS

Процедура одинакова для iOS 10 (протестировано с 10.0.2), iOS 9 (протестировано с 9.3.5 и 9.2) и iOS 8  (протестировано с 8.1.2 и 8.4.1). Перейдите в Настройки, затем Wi-Fi, затем нажмите/нажмите на название беспроводной сети, к которой вы подключены. IP-адрес маршрутизатора определяется как «Маршрутизатор» в разделе DHCP.

На  iOS 7  (протестировано с 7.1.1), перейдите в настройки, затем Wi-Fi, затем нажмите на название беспроводной сети, к которой вы подключены. Как и в iOS 8, IP-адрес маршрутизатора обозначен как «Маршрутизатор» в разделе DHCP.

В iOS 6 перейдите в настройки, затем Wi-Fi, затем нажмите стрелку справа от сети, к которой вы подключены. Интерфейс аналогичен показанному выше, IP-адрес маршрутизатора обозначен как «Маршрутизатор».

Инструкции для  iOS версии 5  идентичны инструкциям для версии 6.

Все инструкции выше предполагают, что устройству iOS был присвоен IP-адрес с использованием DHCP. В том редком случае, когда у него есть статический IP-адрес, щелкните вкладку «Статические» (показано выше) и снова найдите «Маршрутизатор».

 

OS X

В Snow Leopard перейдите в «Настройки сети», нажмите кнопку «Дополнительно», затем на вкладке TCP/IP. Как и в случае с iOS, маршрутизатор определяется как «Маршрутизатор».

В Yosemite вы можете получить IP-адрес маршрутизатора несколькими способами.

Один подход — терминальная команда. Запустите терминал с помощью Go -> Utilities -> Terminal, затем введите:

netstat -nr | grep default

 

Вывод выглядит примерно так

Default 192.168.3.1   UGSc   317    2    en0

 

В этом примере IP-адрес маршрутизатора — 192.168.3.1.

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

route -n get default

 

Ищите «шлюз» на линии отдельно. Справа от него находится IP-адрес маршрутизатора.

При использовании Wi-Fi на Yosemite нажатие Option на индикаторе Wi-Fi приводит к тому, что система отображает больше данных, чем обычный щелчок. В эти дополнительные данные включен IP-адрес маршрутизатора, обозначенный как «Маршрутизатор». Нажатие опции не отображало IP-адрес маршрутизатора в Lion, я не уверен, какой выпуск OS X представил его.

Обычный щелчок по индикатору Wi-Fi также дает IP-адрес маршрутизатора, если вы посмотрите достаточно внимательно. Нажмите на «Открыть настройки сети», затем на сетевом интерфейсе Wi-Fi в левом столбце (должен сказать «подключен»), затем нажмите кнопку «Дополнительно …», затем вкладку TCP/IP и найдите «Маршрутизатор».

Если вы не используете Wi-Fi, то: Системные настройки -> Сеть -> нажмите на «подключенный» сетевой интерфейс в столбце слева -> кнопка «Дополнительно» -> вкладка TCP/IP и найдите «Маршрутизатор».

Если этого недостаточно, IP-адрес также доступен в утилите Информация о системе (Перейти -> Утилиты -> Информация о системе). Нажмите «Сеть» в левой колонке, затем «Wi-Fi» в верхней панели (не левой панели) и найдите «Маршрутизатор» в разделе IPv4.

 

ANDROID

Обе версии Android 5.1 и 6.0 не отображают IP-адрес маршрутизатора как часть экрана настроек Wi-Fi.

Это продолжает давнюю традицию держать пользователей в неведении. Версии Android 4.4.4, 4.4.2 и 2.3 также не смогли предоставить IP-адрес маршрутизатора. Эти старые версии, по крайней мере, сообщали бы о IP-адресе вашего устройства, но в версии 5.1 он был заменен полосой радиочастот, используемой сетью, к которой вы подключены.

Как говорится, есть приложение для этого.

Наше любимое приложение для сетевой информации — Fing, о котором я писал в прошлом году. Fing предназначен для инвентаризации вычислительных устройств в вашей сети. Запустите Fing и нажмите на верхнюю строку с именем сети. Он относится к маршрутизатору как «шлюз», а IP-адрес находится ниже локального адреса и выше DNS. Он вполне может совпадать с адресом DNS, это совсем не необычно.

Еще одним замечательным приложением, которое показывает IP-адрес маршрутизатора в качестве дополнительного преимущества, является WiFi Analyzer от farproc. В WiFi Analyzer перейдите на экран списка точек доступа и нажмите на верхнюю строку, которая показывает название сети, к которой вы подключены, и ваш IP-адрес. В появившемся окне найдите IP-адрес шлюза (он находится над маской).

 

ХРОМ ОС

Перейдите на страницу настроек, либо выбрав «Настройки» в меню гамбургера, либо введя «chrome://settings» в адресной строке. Если вы используете Wi-Fi, нажмите «Сеть Wi-Fi» в разделе «Подключение к Интернету», затем на имя/SSID сети, к которой вы подключены. Откроется окно с тремя вкладками: Соединение, Сеть и Прокси. Нажмите на вкладку Сеть, как показано выше. Маршрутизатор идентифицирован как «шлюз».

Кроме того, вы можете ввести «chrome://system» в адресную строку и прокрутить вниз до раздела «маршруты», показанного выше. Текст справа скажет «по умолчанию через», а затем IP-адрес маршрутизатора. Хотя обрезка на снимке экрана выше, следующая строка заканчивается IP-адресом устройства, сразу после «src».

В другом разделе network-status также есть IP-адрес маршрутизатора, но это наименее удобный вариант.

Нажмите на серую кнопку Expand. Если Chromebook подключен через Ethernet, найдите группу данных, обозначенную как «eth0». Если он подключен по беспроводной сети, посмотрите в разделе «wlan0», как показано выше. Маршрутизатор идентифицирован как «шлюз».

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



2020-07-28T16:06:36
Сети

Командная строка Linux: краткий курс для начинающих



























3.7/5 — (3 голоса)

Linux – начинающим. Первое знакомство

    Linux-beginners-1-000.jpg
    Как показывает читательский отклик, интерес к решениям на базе Linux весьма и весьма велик, в тоже время уровень подготовки администраторов в этой области оставляет желать лучшего. Свидетельство тому, бесконечно повторяющиеся простейшие вопросы в комментариях. Во многом, это следствие того, что наши инструкции можно выполнить “дословно” и получить работающий, результат. Но есть и обратная сторона медали, такой подход не предусматривает появлению системных знаний, оставляя знание предмета на фрагментарном уровне.

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

А как быть с теми, кто только делает свои первые шаги? К сожалению, в IT-сообществе существует некоторый снобизм, мол, чего об этом говорить, это и так все знают, или “гугл в помощь”, забывая, что каждый из нас когда-то был новичком и с мистическим ужасом смотрел в черный экран Linux-консоли, абсолютно не понимая, куда он попал и что ему делать.

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

Итак, вы решили стать Linux администратором…

Немного перефразируем Маяковского “я б в Linux-админы пошел, пусть меня научат”, именно так дело в большинстве случаев и обстоит. Есть необходимость, есть желание, есть базовый набор знаний по работе с Windows системами – все это пригодится при работе с Linux системами. Гораздо хуже если какая-либо составляющая отсутствует, тогда, наверное, стоит задуматься о неправильном выборе профессии.

Сразу о том, что нужно раз и навсегда забыть. Это “религиозные войны” и “религиозный фанатизм”. Одинаково плохо отрицать возможности Linuх-систем, как и превозносить их, стремясь перевести на Linux все что нужно и не нужно. Запомните – операционная система – это инструмент, хороший специалист берет для каждой задачи наиболее подходящий, фанатик будет забивать гвозди микроскопом, потому что взять в руки молоток ему “религия не позволяет”.

Даже больше, сама по себе операционная система не имеет никакой ценности, это всего лищь среда для запуска и выполнения некоторых служб и сервисов. Без софта система мертва. Возьмем для примера клон BeOS – Haiku, ну поставили, ну посмотрели – прикольно… А дальше что?

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

Linux-beginners-1-001.jpg
Для привыкшего к графическим инструментам Windows-администратора это может показаться сложным. Но следует твердо усвоить одну истину – консоль является единственным полноценным инструментом администрирования Linux и совсем не означает ограниченность в возможностях или неполноценность системы. Даже наоборот, командная строка позволяет выполнить многие задачи намного быстрее и проще, чем графические инструменты администрирования.

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

Linux-beginners-1-002.jpg
Linux, создававшийся по образу и подобию UNIX-систем, является полноценной системой и без графической оболочки, более того мы можем запустить, закрыть или вообще сменить графическую оболочку без какого-либо влияния на работоспособность системы и даже без ее перезагрузки. Завершили сеанс Gnome, запустили KDE, а потом и вовсе вышли в консоль. Поэтому все инструменты управления системой разработаны для использования в режиме командной строки. А все панели и графические инструменты являются всего лишь надстройкой над ними.

Windows долгое время разрабатывался по принципиально иной технологии, графическая оболочка была поставлена в основу системы и долгое время даже выполнялась на уровне ядра (семейство Win 9x). Поэтому все инструменты администрирования были изначально графическими, а инструменты командной строки скорее их дополняли, чем заменяли. Любой, кто занимался восстановлением Windows, знает, что возможности инструментов командной строки там существенно ограничены и предназначены в первую очередь для восстановления системы, а не для ее администрирования.

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

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

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

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

Если вы еще не передумали становиться Linux-администратором, то поедем дальше и рассмотрим отличия в архитектуре системы.

Ядро и драйвера

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

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

В микроядерной и гибридной архитектурах, драйвера, хоть могут и работать на уровне ядра, его частью не являются и от версии ядра не зависят. Поэтому мы можем без проблем обновлять ядро или использовать один и тот-же драйвер для всех версий систем с общей структурой ядра. Например, в Windows для всего семейства современных ОС, от Windows Vista до Windows 8.1, часто используется один и тот-же драйвер.

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

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

Файловая система

Мы не будем касаться конкретных файловых систем, тут проблем возникнуть не должно, если администратор работал с Windows системами, то что такое файловая система и чем FAT отличается от NTFS он знает, поэтому разобраться в разнице между ext3, ext4 и, скажем, ReiserFS для него особого труда не составит. А поговорим о фундаментальных отличиях. В отличие от Windows, файловая система Linuх иерархична. Она начинается от корня, который обозначается знаком / (слеш), и имеет древовидную структуру. При этом абсолютно не имеет значения, что отдельные части файловой системы могут находиться на других разделах или вообще физических дисках.

Рассмотрим еще одну схему.

Linux-beginners-1-003.jpg
В Windows каждый раздел имеет собственную файловую систему и обозначающую его букву. Все пути к файлам и папкам начинаются с буквы, т.е. от корня раздела. Так если у нас на первом физическом диске, на втором логическом разделе была папка DATA, то путь к ней соответственно будет как D:DATA, если мы захотим перенести ее на второй жесткий диск, то ее пусть изменится на E:DATA. В ряде случаев это жутко неудобно, так как путь надо изменить во всех местах ее использования и даже существуют соответствующие утилиты.

В Linux подход кардинально иной. Самое время познакомиться с термином точка монтирования, который означает место файловой системы, куда подключается устройство хранения данных. Например, мы хотим вынести домашние каталоги пользователей на отдельный раздел, как на схеме выше, для этого нам нужно смонтировать второй логический раздел первого физического диска sda2 в /home. После чего перенести туда все пользовательские данные. Для системы и программ это произойдет абсолютно прозрачно, они как использовали абсолютный путь, скажем /home/andrey/data, так и будут его использовать. Добавили еще один диск и хотим вынести туда директорию /var? Нет проблем, останавливаем использующие каталог службы, монтируем sdb1 в /var и переносим данные, запускаем службы.

Всё есть файл

Еще один основополагающий принцип, который унаследован от UNIX-систем. В Linux всё есть файл: устройства, диски, сокеты и т.д., например, открыв /var/run мы увидим pid-файлы, соответствующие каждой запущенной службе в системе, а в /dev файлы каждого подключенного к системе устройства:

Linux-beginners-1-004.jpg
Что это дает? Не будем вдаваться в подробности, а разберем несколько простых примеров. Скажем, нужно создать образ оптического диска. В Windows нам понадобится для этого специализированное ПО, в Linuх все проще, CD-ROM – это блочное устройство, но в тоже время – это файл, файл блочного устройства. Берем соответствующий инструмент и копируем содержимое файла устройства в файл ISO образа:

dd if=/dev/cdrom of=/home/andrey/image.iso

Хотим заменить жесткий диск? Нет ничего проще, копируем содержимое одного файла блочного устройства в файл другого блочного устройства:

dd if=/dev/sda of=/dev/sdb

И не нужно никаких Partition Magic.

Другая ситуация, какое-либо ПО настоятельно ищет библиотеку lib-2-0-1.so, а у нас есть совместимая с ней, но более новая, lib-2-1-5.so, как быть? Создаем символическую ссылку на lib-2-1-5.so с именем lib-2-0-1.so и все будет работать. Потому что все есть файл и символическая ссылка тоже тип файла. А теперь попробуйте подсунуть Windows приложению lib-2-0-1.lnk вместо lib-2-1-5.dll…

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

ifconfig

выведет на экран сведения о сетевых адаптерах системы:

Linux-beginners-1-005.jpg
А теперь вспоминаем, что все есть файл, в том числе и устройство отображения (экран), поэтому просто перенаправим стандартный поток вывода вместо экрана в нужный нам файл:

ifconfig > ~/123.txt

После чего вывод команды будет сохранен в файл 123.txt в корневой директории пользователя:

Linux-beginners-1-006.jpg

Потоки и конвейер

В прошлом примере мы затронули стандартный поток вывода. В Linux существуют стандартные для всех процессов потоки ввода-вывода данных stdin, stdout и поток вывода ошибок stderr. Что это значит? Как минимум то, что процесс обмена данными между различными процессами стандартизован. Это позволяет создавать конвейеры, когда стандартный поток вывода одной команды передается стандартному потоку ввода другой. Например, мы хотим посмотреть список установленных пакетов в системе, в частности пакеты squid. Для этой цели есть команда:

dpkg -l

Ээээ… Это что такое и как тут что-то понять? На экране быстро промелькнули сведения о всех установленных в системе пакетах и все что мы можем видеть, это “хвост” этого вывода:

Linux-beginners-1-007.jpg
Но ведь нам и не нужен весь вывод этой команды, нас интересуют исключительно пакеты squid. Поэтому направим вывод этой команды на ввод другой, которая уже отберет и покажет то, что нам нужно:

dpkg -l | grep squid

Linux-beginners-1-008.jpg
Вот это совсем другое дело!

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

cat /etc/squid3/squid.conf | grep -v ‘^#’ | sed ‘/^$/d’ > ~/mysquid.conf

И вот что у нас получилось:

Linux-beginners-1-009.jpg
Просто и понятно, все опции как на ладони. Это стало возможным в результате использования конвейера трех команд, первая вывела в поток содержимое файла, вторая отобрала все строки кроме комментариев, а третья удалила пустые, результат мы направили в файл.

Буквы большие, буквы маленькие

Linux, как и UNIX, является регистрозависимой системой. И это надо помнить! Потому что, в отличие от Windows, myfile.txt, Myfile.txt и myfile.TXT – это три разных файла. В целях совместимости с другими системами не стоит этим злоупотреблять и хранить файлы, имя которых отличается только регистром, а хорошим тоном считается использование в именах только строчных букв.

Расширения и типы файлов

В Windows системах тип файла определяется его расширением, если мы переименуем exe-файл в jpg, то он не запустится, и система будет пытаться обработать его как картинку. В Linux тип файла определяется по его содержимому и расширение используется исключительно для совместимости с другими системами или для удобства пользователя. Возможность исполнения файла обеспечивается установкой соответствующего атрибута. Так в Windows чтобы сделать скрипт исполняемым, надо было изменить расширение с txt на bat, в Linux для этого нужно сделать файл исполняемым. Непонимание этого момента приводит к ситуациям, когда начинающий администратор не понимает, почему его скрипт myscript.sh не выполняется. На самом деле расширение .sh нужно только для удобства, чтобы сразу было ясно, это скрипт Bash Shell, а чтобы он работал, ему надо поставить атрибут исполняемого, а называться он может как угодно, хоть myscript.pupkin-vasya.

Требования

  • сервер с Ubuntu 16.04 (см. руководство Vscale: создаём первый сервер).

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

  • Mac OS X: Terminal (default), iTerm 2;
  • Windows: PuTTY;
  • Linux: Terminal, KDE Konsole, XTerm.

С подробным описанием команд для Ubuntu можно ознакомиться в официальной документации Командная строка Ubuntu.

Вход на сервер через терминал

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

Для работы через консоль следует нажать сочетание клавиш Ctrl+Alt+F1, для возврата в графический интерфейс – сочетание клавиш Ctrl+Alt+F7.

Для запуска терминала нажмите сочетание клавиш Ctrl+Alt+T.

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

kamilla@kamilla-Aspire-V3-371:~$

, где:

  • kamilla – имя текущего пользователя (суперпользователь/администратор);
  • kamilla-Aspire-V3-37 – имя хоста (сервер);
  • : – разделитель;
  • ~ – текущая директория (в какой папке выполняется команда) пользователя (по умолчанию /home/
  • $ – символ приглашения ввода для пользователей с обычными правами;
  • # – символ приглашения ввода для суперпользователя/администратора root (например, root@cs49647:~#).

Базовые команды, используемые при настройке сервера

После создания нового сервера необходимо предпринять несколько шагов по его базовой настройке (см. руководство Начальная настройка сервера под управлением ОС Ubuntu).

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

ssh -p №port demo@adress

, где:

  • №port – номер заданного порта при начальной настройке сервера;
  • demo – имя пользователя;
  • adress – ip-адрес сервера.

Для входа на сервер под учетной записью root используйте команду, заменив SERVER_IP_ADDRESS на публичный IP-адрес Вашего сервера:

ssh root@SERVER_IP_ADDRESS

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

adduser DEMO

Для открытия конфигурационного файла в текстовом редакторе под пользователем root введите команду:

nano /etc/ssh/sshd_config

Для замены строчки в открывшемся конфигурационном файле найдите, например, строчку Port 22 и замените число 22 на любое другое число (от 1025 и до 65536).

После внесения изменений сохраните и закройте файл, нажав сочетание клавиш CTRL-X, затем клавишу Y, затем клавишу ENTER.

Для перезапуска сервиса SSH выполните следующую команду:

service ssh restart

Для выполнения команды с привилегиями root-пользователя, перед ней следует поставить слово sudo:

sudo command_to_run
Для завершения сессии выполните команду:

exit

Обзорное описание команд, аргументов и опций для них

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

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

Для того чтобы открыть страницу с подробным описанием команды Linux, например ip address, введите команду man с именем команды:

man ip address

Запуск без аргументов и опций

При запуске команд без аргументов:

  • cd – возврат в домашнюю директорию текущего пользователя;
  • ls – вывод списка файлов и директорий в текущем каталоге.

 Пример:

Выполнив команду ls без параметров, получаем список файлов в каталоге:

testk@cs49647:~$ ls
linux.jpg  template  ubuntu.jpg

Запуск с аргументами (параметрами)

Большинство команд рассчитано на запуск с передачей аргументов (параметров).

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

cd /usr/bin

Запуск с опциями

Многие команды также поддерживают опции (флаги, ключи) запуска, позволяющие изменять результат выполнения команды. Опции представляют собой одиночный символ после символа «-», либо в расширенном написании после «–».

 Пример:

Выполнив команду ls с опциями -A, -S, -1, получаем список всех файлов, включая «скрытые», расположенных по одному на каждой строке и отсортированных по размеру:

testk@cs49647:~$ ls -AS1
.gtkrc-2.0
linux.jpg
ubuntu.jpg
template
.filter

Запуск с аргументами и опциями (одновременно)

Структура записи команды с опциями и аргументами: 

команда -опции аргументы

 Пример:

Команда ls -la /home выведет подробный (-l) листинг директории /home, включая скрытые файлы (-a):

testk@cs49647:~$ ls -la /home
total 12
drwxr-xr-x  3 root  root  4096 Oct 14 16:13 .
drwxr-xr-x 22 root  root  4096 Oct 20 10:25 ..
drwxr-xr-x  4 testk testk 4096 Oct 19 10:52 testk

Переменные окружения

Окружение/среда (environment) – это набор пар ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ, которые могут использоваться запускаемыми процессами.

Просмотр переменных окружения

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

env

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

env | more

Просмотр значения переменной

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

Чтобы вывести на экран значение какой-нибудь переменной окружения, достаточно набрать echo $ИМЯ_ПЕРЕМЕННОЙ, например, просмотр домашней директории пользователя, хранящийся в переменной окружения $HOME:

echo $HOME

Для перехода в домашнюю директорию следует использовать команду:

cd $HOME

Установка переменных окружения

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

VAR=value

, где

VAR – название переменной;

value – значение переменной.

Пример:

Выполнив команду var=value, после вывода на просмотр получаем результат value:

testk@cs49647:~$ var=value
testk@cs49647:~$ echo $var
value

Использование встроенной консоли VScale

Для работы с командной строкой также можно использовать встроенную консоль VScale, нажав в меню справа кнопку “Открыть консоль”.


Откроется консоль следующего вида.

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

Шпаргалка по работе в командной строке Linux

Включение/выключение

Перезагрузить компьютер:rebootили shutdown -r nowВыключить компьютер:shutdown -h nowВыключить компьютер через заданное время:shutdown -h hh:mmили shutdown -h +mОкончание сеанса работы в терминале:exit

Управление пользователями

Включить корневую учетную запись:sudo passwd rootЗаблокировать корневую учетную запись:sudo passwd -l rootДобавить пользователя:adduser имя_пользователяУдалить пользователя:deluser имя_пользователяУдалить пользователя вместе с домашним каталогом:deluser имя_пользователя -remove-homeИзменить имя пользователя и название его домашнего каталога:usermod -l новое_имя_пользователя -d /home/новое_имя_пользователя -m старое_имя_пользователяИзменить пароль пользователя:passwd имя_пользователяВосстановить пароль к учетной записи в режиме восстановления системы (нажать Esc в процессе загрузки GRUB):passwd имя_записи

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

Показать информацию о файловых системах:sudo mountПоказать список разделов:dfПоказать содержание текущего каталога:du -hПоказать объем указанного каталога:du -S имя_каталогаОтобразить путь к текущему каталогу:pwdСоздать каталог:mkdir имя_каталогаСкопировать каталог:cp каталог_1 каталог_2Переместить каталог_1 в каталог_2:mv каталог_1 каталог_2Войти в каталог:cd /имя_каталогаПоказать содержание каталога:ls /имя_каталогаПоказать содержание каталога, включая скрытые файлы и каталоги:ls -a /имя_каталогаПоказать полную информацию о содержании каталога:ls -l /имя_каталогаУдалить пустой каталог:rmdir имя_каталогаУдалить каталог с содержанием:rm -r имя_каталога

Работа с файлами

Создать файл в текущем каталоге:touch имя_файла.txtНайти файл:locate имя_файлаОбновить базу поиска файлов:updatedbПросмотреть текстовый файл:cat /путь/имя_файлаПросмотреть текстовый файл в обратном порядке — от последней строки к первой:tac /путь/имя_файлаСкопировать файл_1 в файл_2:cp файл_1 файл_2Переместить файл_1 в файл_2:mv файл_1 файл_2Переместить файл с сохранением оригинала (в конец имени файла дописывается символ ~):mv -b файл целевой_каталогУдалить файл:rm имя_файлаЗаписать информацию в файл, перезаписав его:echo текст > имя_файла.txtДобавить информацию в файл без его перезаписи:echo текст >> имя_файла.txtСлить несколько текстовых файлов в один:cat файл_1 файл_2 > итоговый_файл

Работа с архивами

Создать архив из содержимого каталога:tar -cvf имя_архива.tar имя_каталога/Сжать файлы:bzip2 имя_файлаgzip имя_файлаzip имя_файлаРаспаковать архив:gunzip имя_архива.tar.gzbunzip имя_архива.tar.bzbunzip2 имя_архива. ar.bz2tar xvf имя_архива.tartar xzf имя_архива.tgz

Управление правами доступа

Пример:-r–r—–dr–r—–Дефис вначале означает обычный файл, d — каталог (директорию). Дальше три группы по три символа означают права доступа для владельца, членов группы, в которую входит владелец, и для всех остальных пользователей соответственно.дефис означает отсутствие прав,
r — означает право на чтение,
w — право на запись,
x — право на выполнение.Просмотреть права доступа:ls -l имя_файла_или_каталогаЗадать права доступа:chmod *** имя_файла_или_каталога где *** — права доступа, указанные абсолютным способом, или:
chmod группа=/+/-тип доступа имя_файла_или_каталога где группа: u (user, владелец), g (group, группа), o (other, другие), a (all, все), например: chmod a+rw имя_файлаИзменить владельца:chown имя_пользователя имя_файлаРаспространенные права доступа:644 = rw-r–r–
666 = rw-rw-rw-
777 = rwxrwxrwx

Порядок цифр соответствует порядку пользователей (ugo), цифра в каждой позиции складывается из значений 4, 2 и 1 для прав r, w и x, соответственно. Так право полного доступа для владельца и отсуствие каких-либо прав для группы и прочих пользователей будет 700 (4+2+1.0.0).

Управление программами

Обновить список программного обеспечения:apt-get updateОбновить систему:apt-get upgradeНайти программу в репозитарии по ключевому слову:apt-cache search ключевое_словоПоказать информацию о пакете:apt-cache show название_пакетаУстановить программу из репозитария:apt-get install имя_пакетаУдалить установленную программу:apt-get remove имя_пакетаУдалить программу вместе с файлами настройки:apt-get remove purge имя_пакетаУстановить программу из скомпилированного пакета:dpkg -i имя_пакета.debУдалить программу:dpkg -r имя_пакета.debОчистить локальное хранилище полученных файлов пакетов:apt-get cleanПросмотреть список установленных пакетов:dpkg -lДобавить частный источник программного обеспечения PPA (Personal Package Archive):add-apt-repository ppa:user/ppa-nameУстановить программу из бинарного файла (предварительно необходимо перейти в каталог с файлом программы):./имя_файла.binРазрешить исполнение файла (если необходимо):chmod a+x имя_файла.bin /> Установить программу из исходных файлов (предварительно необходимо перейти в каталог с файлом программы):./configure
make
make installУдалить программу, установленную из исходных файлов:make uninstallЗапустить графическую программу с правами root:gksudo имя_программы

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

Отобразить список зарегистрированных в системе пользователей:whoПоказать информацию об использовании оперативной памяти:freeПоказать список запущенных процессов:psЗавершить процесс:killall имя_процессаПоказать список процессов в реальном времени:topВнести изменения в файл конфигурацииgedit /путь/к_файлуСнизить скорость чтения диска в приводе:hdparm -E 4 /dev/dvdrom

Диагностика системы

Проверить жесткий диск на «битые» секторы:badblocksПоказать состояние сетевых интерфейсов:ifconfigПоказать состояние беспроводных сетевых устройств:iwconfigПроверить таблицу маршрутизации:routeПроверить доступность компьютера в сети:ping имя_сайта_или_ip_адрес Остановить процесс: Ctrl+CПроверить маршрут следования пакета:traceroute имя_сайта_или_ip_адресПоказать информацию о подключенных USB-устройствах:lsusbОтобразить список PCI-шин и подключенных к ним устройств:lspciОтобразить список оборудования системы:lshw

Получение помощи

Показать Введение в пользовательские команды:man introОтобразить краткое описание команды:whatis имя_командыВывести информацию о команде:man имя_командыinfo имя_командыимя_команды –helpНайти информацию по ключевым словам:man -k ключевое_словоПоиск по странице:/ключевое_словоПродолжить поиск:NВывести историю команд:historyВыполнить команду из списка истории команд:!номер_команды!первые_буквы_командыОчистить экран консоли:clear

Объединение команд

Последовательное выполнение команд:команда1 ; команда2Последовательное выполнение команд при условии успешного выполнения предыдущей команды:команда1 && команда2Последовательное выполнение команд при условии неудачного выполнения предыдущей команды:команда1 || команда2Последовательное выполнение команд с передачей результатов выполнения предыдущей команды последующей:команда1 | команда2Запуск команды в фоновом режиме:команда &

Символы подстановки

  • Текущий каталог: .
  • Родительский каталог: ..
  • Домашний каталог пользователя: ~
  • Один произвольный символ: ?
  • Любое количество произвольных символов: *
  • Символ из указанного диапазона: [a,b,x-z], например, [a,b].rar
  • Любые символы, кроме указанных: [!ab], например, [!ab].rar
  • Подстановка с помощью фигурных скобок: например, {a,b}{1,2} создаст строку a1 a2 b1 b2
  • Указание специального символа: или апостроф, например, ’имя файла’, или имя файла

Основные команды Linux

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

ls — вывод имен файлов

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

-A — включить в список «скрытые» файлы («скрытые» файлы в Linux имеют в своем названии точку в начале имени файла, например, .gtkrc-2.0). -S — отсортировать файлы по размеру. -t — отсортировать по дате изменения. -1 — выводить имена в столбик, по одному на каждой строке. -l — вывести подробную информацию о каждом файле, размер файла, владелец файла, права доступа, дата изменения.

Теперь приведу несколько примеров. Выполнив команду ls без параметров, вы получите просто список файлов в каталоге.

admin@pingvinus:~/information$ ls fonts.tar.gz linux.jpg report.odt template ubuntu.jpg

Теперь выполним команду с опциями -A, -S, -1. В результате получим список всех файлов, включая «скрытые», расположенных по одному на каждой строке и отсортированных по размеру.

admin@pingvinus:~/information$ ls -AS1 fonts.tar.gz .gtkrc-2.0 linux.jpg report.odt ubuntu.jpg template .filter

Выполним команду ls с опцией -l. Получим подробную информацию о каждом файле.

admin@pingvinus:~/information$ ls -l -rw-r–r– 1 admin admin 217589 2009-02-12 13:35 fonts.tar.gz -rw-r–r– 1 admin admin 162348 2009-02-03 20:50 linux.jpg -rw-r–r– 1 admin admin 155847 2009-02-15 12:54 report.odt -rw-r–r– 1 root root 120736 2009-02-12 12:55 template -rw-r–r– 1 admin admin 134404 2009-02-12 12:24 ubuntu.jpg

mkdir — создание каталога

Команда mkdir предназначена для создания новой директории. Чтобы создать новую директорию, выполните mkdir <имя директории=””>. Для того, чтобы создать сразу несколько директорий, укажите их имена через пробел, например:mkdir mydir1 mydir2 mydir3

cp — копирование файла

Утилита cp используется для создания копии файла. Для обычного копирования используется следующий синтаксис cp <имя файла=”” источника=””> <имя файла=”” назначения=””>.

При использовании cp есть один нюанс, который нужно обязательно помнить. Если файл назначения уже существует, то cp перезапишет его. Поэтому, чтобы избежать случайного уничтожения существующего файла, нужно использовать команду cp с опцией -i. Перед перезаписью файла будет выдан запрос на ваше согласие. Например, если мы копируем файл linux.jpg в файл windows.jpg и windows.jpg уже существует, то будет выдан запрос на перезапись файла:

admin@pingvinus:~/information$ cp -i linux.jpg windows.jpg cp: переписать `windows.jpg’? y

Опция -r (или -R) используется для копирования одной директории в другую.

mv — перемещение, переименование файла

Утилита mv предназначена для перемещения, переименования файла. Для переименования файла используется синтаксис mv <имя файла=””> <новое имя=”” файла=””>. Для перемещения файла в другую директорию используется синтаксис mv <имя файла=””> <директория>. С mv можно также использовать опцию -i, чтобы случайно не перезаписать существующий файл.

rm — удаление файла

Команда rm предназначена для удаления файлов. Основные опции команды:

-i — выводить запрос перед удалением каждого файла. -r (или -R) — удалить директории и их содержимое.

cd — смена текущего каталога

Команда cd предназначена для смены каталога, в котором вы сейчас находитесь. Например, вы сейчас находитесь в своем домашнем каталоге ~ и хотите перейти в каталог ~/information, тогда нужно просто выполнить команду cd information.

admin@pingvinus:~$ cd information/ admin@pingvinus:~/information$

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

admin@pingvinus:~/information$ cd admin@pingvinus:~$

Чтобы перейти в каталог на уровень выше (в родительский каталог) можно использовать синоним «две точки» — .., которые в Linux служат синонимом пути родительского каталога. Например, находясь в каталоге ~/information мы можем перейти в каталог ~ следующим образом:

admin@pingvinus:~/information$ cd .. admin@pingvinus:~$

cat — вывод содержимого файла

Утилита cat выводит содержимое текстового файла. Простейший синтаксис команды cat <имя файла=””>. Утилита cat может использоваться для соединения конкатенации двух текстовых файлов, собственно от этого и происходит название утилиты (catenation, concatenation). Например, у нас есть два файла download и ubuntu и в каждом по две строки. Сначала мы выведем содержимое файлов по отдельности, а затем сделаем конкатенацию двух файлов.admin@pingvinus:~/information$ cat download first line of file download second line of file download admin@pingvinus:~/information$ cat ubuntu first line of file ubuntu second line of file ubuntu admin@pingvinus:~/information$ cat download ubuntu first line of file download second line of file download first line of file ubuntu second line of file ubuntu

pwd — вывод полного пути текущего каталога

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

admin@pingvinus:~/information$ pwd /home/admin/information

man — получение руководства

Системная утилита man выводит страницы системной документации. С ее помощью можно получить информацию по любым командам Linux. Для этого используется синтаксис man <имя утилиты=””>. Например, чтобы вывести руководство по утилите ls, используйте команду man ls. Войдите, чтобы ставить лайкимне нравитсяЛайков: +1 войдите, чтобы ставить лайки

Промежуточные команды

1. echo – команда “echo” помогает нам перемещать некоторые данные, обычно текст, в файл. Например, если вы хотите создать новый текстовый файл или добавить в уже созданный текстовый файл, вам просто нужно ввести «echo hello, меня зовут hich >> new.txt». Вам не нужно разделять пробелы с помощью обратной косой черты здесь, потому что мы заключаем в две треугольные скобки, когда мы заканчиваем то, что нам нужно написать.


результат команды echo в linux

2. cat – Используйте команду cat для отображения содержимого файла. Обычно используется для удобного просмотра программ.


результат команды echo в linux

3. nano, vi, jed – nano и vi уже установлены текстовые редакторы в командной строке Linux. Команда nano – хороший текстовый редактор, который помечает ключевые слова цветом и может распознавать большинство языков. И vi проще, чем nano. Вы можете создать новый файл или изменить файл с помощью этого редактора. Например, если вам нужно создать новый файл с именем «check.txt», вы можете создать его с помощью команды «nano check.txt». Вы можете сохранить ваши файлы после редактирования, используя последовательность Ctrl + X, затем Y (или N для no). По моему опыту, использование nano для редактирования HTML выглядит не очень хорошо из-за его цвета, поэтому я рекомендую jed текстовый редактор. Мы скоро приступим к установке пакетов.

4. sudo – широко используемая команда в командной строке Linux, sudo означает «SuperUser Do». Поэтому, если вы хотите, чтобы любая команда выполнялась с правами администратора или root, вы можете использовать команду sudo. Например, если вы хотите отредактировать файл, такой как viz. alsa-base.conf, для которого требуются права root, вы можете использовать команду – sudo nano alsa-base.conf. Вы можете ввести корневую командную строку с помощью команды «sudo bash», а затем ввести свой пароль пользователя. Вы также можете использовать команду «su», но перед этим вам нужно установить пароль root. Для этого вы можете использовать команду «sudo passwd» (не с орфографической ошибкой, это passwd). Затем введите новый пароль root.

5. df – используйте команду df, чтобы увидеть доступное дисковое пространство в каждом из разделов вашей системы. Вы можете просто ввести df в командной строке и увидеть каждый смонтированный раздел и его использованное / доступное пространство в % и в килобайтах. Если вы хотите, чтобы оно отображалось в мегабайтах, вы можете использовать команду «df -m».


результат команды df -m в linux

6. du – Используйте du, чтобы узнать, как файл используется в вашей системе. Если вы хотите узнать размер занимаемого места на диске для конкретной папки или файла в Linux, вы можете ввести команду df и имя папки или файла. Например, если вы хотите узнать размер дискового пространства, используемое папкой документов в Linux, вы можете использовать команду «du Documents». Вы также можете использовать команду «ls -lah», чтобы просмотреть размеры всех файлов в папке.

7. tar – Используйте tar для работы с tarballs (или файлами, сжатыми в архиве tarball) в командной строке Linux. У него длинный список применений. Он может использоваться для сжатия и распаковки различных типов архивов tar, таких как .tar, .tar.gz, .tar.bz2 и т. д. Это работает на основе аргументов, данных ему. К примеру, “tar -cvf” для создания .tar архива, –xvf для распаковки .tar архива, –tvf для просмотра содержимого архива и т.д.

8. zip, unzip – используйте zip для сжатия файлов в zip-архив и unzip для извлечения файлов из zip-архива.

9. uname – используйте uname, чтобы показать информацию о системе, в которой работает ваш дистрибутив Linux. Использование команды «uname -a» выводит большую часть информации о системе: дату выпуска ядра, версию, тип процессора и т. д.


результат команды uname -a в linux

10. apt-get – используйте apt для работы с пакетами в командной строке Linux. Используйте apt-get для установки пакетов. Это команда требует прав суперпользователя, поэтому используйте команду sudo с ним. Например, если вы хотите установить текстовый редактор jed (как я упоминал ранее), мы можем ввести команду «sudo apt-get install jed». Точно так же любые пакеты могут быть установлены следующим образом. Рекомендуется обновлять ваш репозиторий каждый раз, когда вы пытаетесь установить новый пакет. Вы можете сделать это, набрав «sudo apt-get update». Вы можете обновить систему, набрав «sudo apt-get upgrade». Мы также можем обновить дистрибутив, набрав «sudo apt-get dist-upgrade». Команда «apt-cache search» используется для поиска пакета. Если вы хотите найти его, вы можете ввести «apt-cache search jed» (для этого не требуется root).

11. chmod – используйте chmod, чтобы сделать файл исполняемым и изменить разрешения, предоставленные ему в Linux. Представьте, что на вашем компьютере есть код Python с именем numbers.py. Вам нужно будет запускать «python numbers.py» каждый раз, когда вам нужно его запустить. Вместо этого, когда вы делаете его исполняемым, вам просто нужно запустить «numbers.py» в терминале, чтобы запустить файл. Чтобы сделать файл исполняемым, вы можете использовать команду «chmod + x numbers.py» в этом случае. Вы можете использовать «chmod 755 numbers.py», чтобы дать ему права root, или «sudo chmod + x numbers.py» для исполняемого файла root. Вот еще немного информации о команде chmod.

12. hostname – Используйте команду hostname, чтобы узнать ваше имя в вашем хосте или сети. По сути, он отображает ваше имя хоста и IP-адрес. Просто набрав «hostname», вы получите имя хоста. Набрав «hostname -I», вы получите свой IP-адрес в сети.

13. ping – используйте ping для проверки вашего соединения с сервером. Википедия говорит: «Ping – это утилита для администрирования компьютерной сети, используемая для проверки доступности хоста в сети Интернет-протокола (IP)». Например, когда вы набираете, , «ping google.com», он проверяет, может ли он подключиться к серверу и вернуться обратно. Он измеряет это время в оба конца и дает вам подробную информацию о нем. Использовать эту команду можно и для проверки интернет-соединения. Если он пингует сервер Google (в данном случае) – интернет-соединение активно!


результат команды ping в linux

Советы и рекомендации по использованию командной строки Linux

  • Вы можете использовать команду clear, чтобы очистить терминал, если он там скопилось слишком много команд.
  • TAB можно использовать для заполнения в терминале. Например, вам просто нужно набрать «cd Doc», а затем TAB, и терминал заполняет все остальное и делает его «cd Documents».
  • Ctrl + C может использоваться для безопасной остановки любой команды в терминале. Если Crtl+C не сработал, то можно использовать Ctrl + Z чтобы остановить процесс, запущенный в терминале.
  • Вы можете выйти из терминала, используя команду exit.
    Выключить или перезагрузить компьютер можно с помощью команд sudo halt и sudo reboot.

<хедер class=”read-next-card-хедер”>

5 инструментов, чтобы запомнить команды Linux навсегда

  • Semen Lobachevskiy

Semen Lobachevskiy 7 янв. 2019• 3 мин. чтенияchmod в Linux

Команда chmod используется для изменения прав доступа к файлам или каталогам.

<хедер class=”post-card-хедер”> Инструкции

[spoiler title=”Источники”]

  • https://interface31.ru/tech_it/2014/09/linux-nachinayuschim-chast-1-pervoe-znakomstvo.html
  • https://community.vscale.io/hc/ru/community/posts/209004205-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%B0%D1%8F-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0-Linux-%D0%BA%D1%80%D0%B0%D1%82%D0%BA%D0%B8%D0%B9-%D0%BA%D1%83%D1%80%D1%81-%D0%B4%D0%BB%D1%8F-%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85
  • https://vasilevsky.net/linux-commands
  • https://pingvinus.ru/note/command-line-fundamentals
  • https://omgubuntu.ru/basic-linux-commands-for-beginners/


[/spoiler]


2020-07-27T15:39:49
Linux

Руководство по использованию команды “useradd” в Linux



























Rate this post

 

В этом руководстве показано, как создавать пользователей в Linux с помощью командной строки.

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

Создание

Синтаксис:

useradd <имя пользователя=””> [опции]

* опции не являются обязательными при создании пользователя.

Пример:

useradd dmosk

* в данном примере создается учетная запись dmosk.

Для учетной записи стоит сразу создать пароль:

passwd dmosk

* после ввода, система попросит ввести пароль дважды.

1. Как добавить нового пользователя в Linux

Для создания/добавления нового пользователя используется команда “useradd” с аргументом “username”, где username – это имя нового пользователя, которое будет использоваться для входа в систему.
За один раз можно добавить только одного пользователя, и его имя должно быть уникальным (то есть отличаться от имен других пользователей, уже существующих в системе).

Например, добавляем пользователя “techmint”:


[root@tecmint ~]# useradd tecmint

После выполнения данной команды, новый пользователь будет создан в заблокированном состоянии. Чтобы разблокировать пользовательский аккаунт, необходимо задать его пароль с помощью команды “passwd”.


[root@tecmint ~]# passwd tecmint Changing password for user tecmint. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.

После создания нового пользователя его запись автоматически добавляется в пароль “/etc/passwd” и имеет следующий вид:

tecmint:x:504:504:tecmint:/home/tecmint:/bin/bash

Она состоит из семи разделенных двоеточием полей, каждое из которых имеет свое назначение:

Username: имя пользователя, используемое для входа в систему. Может иметь длинц от 1 до 32 символов.
Password: пользовательский пароль (или символ x), который хранится в зашифрованном виде в файле /etc/shadow.
User ID (UID): каждый пользователь должен иметь User ID (UID) – идентификатор пользователя. По умолчанию UID 0 зарезервирован для root, а UID в диапазоне 1-99 для других предопределенных аккаунтов. UID в диапазоне 100-999 предназначены для пользовательских аккаунтов и групп.
Group ID (GID): идентификатор группы – Group ID (GID), хранится в файле /etc/group file.
User Info: это опциональное поле и оно позволяет вам задать дополнительную информацию о пользователе, например полное имя. Это поле заполняется с помощью команды “finger”.
Home Directory: абсолютный путь к домашней директории пользователя.
Shell: абсолютный путь к командной оболочке пользователя, например /bin/bash.

2. Создание пользователя с нестандартным размещением домашней директории

По умолчанию команда “useradd” создает домашнюю директорию пользователя в /home и называет ее именем пользователя. Поэтому, например, для приведенного выше примера, мы увидим домашнюю директорию созданного нами пользователя “tecmint” в “/home/tecmint”.
Однако это действие можно изменить с помощью опции “-d”, указав после нее расположение новой домашней директории. Например, приведенная ниже команда создаст пользователя “anusha” с домашней директорией “/data/projects”.


[root@tecmint ~]# useradd -d /data/projects anusha

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


[root@tecmint ~]# cat /etc/passwd | grep anusha anusha:x:505:505::/data/projects:/bin/bash

3. Создание пользователя с заданным User ID

В Linux каждый пользователь имеет свой собственный UID (Unique Identification Number). По умолчанию при создании нового пользователя ему присваивается userid 500, 501, 502 и т.д.
Но мы можем создать пользователя с заданным userid с помощью опции “-u”. Например, приведенная ниже команда создает пользователя “navin” с userid “999”.


[root@tecmint ~]# useradd -u 999 navin

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


[root@tecmint ~]# cat /etc/passwd | grep tecmint navin:x:999:999::/home/navin:/bin/bash

Замечание: Обратите внимание, что user ID должен отличаться от user ID пользователей, уже существующих в системе.

4. Создание пользователя с заданным Group ID

Аналогично, каждый пользователь имеет свой GID (Group Identification Number). Мы можем создавать пользователей с заданным group ID с помощью опции -g.

В этом примере мы добавим пользователя “tarunika” с заданными UID и GID:


[root@tecmint ~]# useradd -u 1000 -g 500 tarunika

Проверим, правильно ли сработала команда:


[root@tecmint ~]# cat /etc/passwd | grep tarunika tarunika:x:1000:500::/home/tarunika:/bin/bash

5. Добавление пользователя в несколько групп

Опция “-G” используется для добавления пользователя в дополнительные группы. Названия групп разделяются запятой без пробелов.
В приведенном ниже примере мы добавляем пользователя “tecmint” в группы admins, webadmin и developer.


[root@tecmint ~]# useradd -G admins,webadmin,developers tecmint

Теперь проверим, в каких группах числится пользователь, с помощью команды id.


[root@tecmint ~]# id tecmint uid=1001(tecmint) gid=1001(tecmint) groups=1001(tecmint),500(admins),501(webadmin),502(developers) context=root:system_r:unconfined_t:SystemLow-SystemHigh

6. Добавление пользователя без домашней директории

В некоторых ситуациях мы не хотим, по соображениям безопасности, давать пользователям домашние директории. В таком случае, когда пользователь авторизуется в системе сразу после ее запуска, его домашней директорией будет root. Если такой пользователь использует команду su, то он авторизуется в домашней директории предыдущего пользователя.
Для создания пользователя без домашней директории используется опция “-M”. Например, создадим пользователя “shilpi” без домашней директории.


[root@tecmint ~]# useradd -M shilpi

Давайте проверим, что пользователь создан без домашней директории, с помощью команды ls:


[root@tecmint ~]# ls -l /home/shilpi ls: cannot access /home/shilpi: No such file or directory

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

По умолчанию, когда мы добавляем пользователя с помощью команды “useradd”, его аккаунт не имеет сроков действия, то есть дата истечения сроков его жизни установена в 0 (никогда не истекает).
Однако мы можем установить дату истечения с помощью опции “-e”, задав дату в формате YYYY-MM-DD. Это полезно при создании временных аккаунтов для каких-то конкретных задач.
В приведенном ниже примере мы создаем пользователя “aparna” со сроком жизни его аккаунта до 27 апреля 2015 года в формате YYYY-MM-DD.


[root@tecmint ~]# useradd -e 2015-03-27 aparna

Далее, проверяем сроки действия аккаунта и пароля с помощью команды “chage”.


[root@tecmint ~]# chage -l aparna Last password change : Mar 28, 2014 Password expires : never Password inactive : never Account expires : Mar 27, 2015 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7

8. Создание пользователя с ограниченным временем действия пароля

Аргумент “-f” используется для того, чтобы задать количество дней, через которое пароль перестанет действовать. По умолчанию его значение равно -1, при этом время действия пароля не ограничивается.
В примере мы задаем для пользователя “tecmint” время действия пароля 45 дней с помощью опций “-e” и “-f”.


[root@tecmint ~]# useradd -e 2014-04-27 -f 45 tecmint

Ключи (опции)

КлючОписание и примеры
























-bЗадает базовый каталог для домашнего каталога
useradd dmosk -b /var/home
-cСоздает комментарий для описания учетной записи
useradd dmosk -c “Пользователя для управления системой”
-dПолный путь к домашнему каталогу пользователя
useradd dmosk -d /home/newuser
-DПозволяет показать или изменить настройки по умолчанию, которые будут применяться при последующем создании пользователей
useradd dmosk -Ds /bin/bash
-eДата, после которой учетная запись устареет.
useradd dmosk -e 2017-12-31
-fЧисло дней, после которого учетная запись с устаревшим паролем будет заблокирована
useradd dmosk -f 0
-gЗадает основную группу
useradd dmosk -g altternativegroup
-GЗадает дополнительные группы
useradd dmosk -G wheel
-kПуть к источнику скелета (файлы с шаблонами для нового пользователя)
useradd dmosk -k /var/skel
-mПри создании пользователя создать домашний каталог
useradd dmosk -m
-MНе создавать домашний каталог
useradd dmosk -M
-NНе создавать основную группу с таким же именем, как у пользователя
useradd dmosk -N
-oРазрешает создание учетной записи с повторяющимся UID
useradd dmosk -u 15 -o
-pЗадает пароль
useradd dmosk -p pass
-rСистемная учетная запись (без домашнего каталога и с идентификаторами в диапазоне SYS_UID_MIN – SYS_UID_MAX из файла /etc/login.defs)
useradd dmosk -r
-RКаталог, в который выполняется chroot
useradd dmosk -R /var/chroot/home
-sПуть до оболочки командной строки
useradd dmosk -s /bin/csh
-uЗадает UID
useradd dmosk -u 666
-UИмя группы будет таким же, как у пользователя
useradd dmosk -U

Актуальный список ключей можно получить командой useradd -h.

Редактирование

Синтаксис:

usermod <имя пользователя=””> [опции]

Пример:

usermod dmosk -G wheel

* эта команда добавит пользователя dmosk в группу wheel

Удаление

Синтаксис:

userdel <имя пользователя=””> [опции]

Пример:

userdel dmosk

Блокировка

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

usermod -L <имя пользователя=””>

Пример:

usermod -L dmosk

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

usermod -U <имя пользователя=””>

Работа с группами

Добавление:

groupadd <группа> [опции]

Редактирование:

groupmod <группа> [опции]

Удаление:

groupdel <группа> [опции]

Примеры работы с учетными записями

Команда useradd

Во-первых, давайте посмотрим на поведение команды useradd по умолчанию. Вы когда-нибудь запускали следующую команду?

useradd NewUser

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

Например, в нашей системе указанная выше команда добавила следующую запись в файл /etc/passwd.

Команда useradd в Linux

Если вы читали статью о перечислении пользователей в Linux, вы, вероятно, уже знакомы с содержанием файла /etc/passwd. Сначала это выглядит хорошо, но если вы начнете копать, вы скоро заметите, что некоторые вещи не совсем правильные.

Во-первых, второе поле содержит «х». Это означает, что заполнитель для информации о пароле находится в /etc/shadow. Но мы не установили пароль. Это означает, что тестовый пользователь не сможет войти в систему.

Во-вторых, домашний каталог. Дело в том, что /home/test не существует. Даже после того, как вы установили пароль, произойдет ошибка, если пользователь войдет в систему. В зависимости от другой конфигурации ваша система Linux может запретить пользователю входить без действительного домашнего каталога. Скорее всего, пользователь test позволит войти в систему, по крайней мере, в текстовом режиме. Но пользователь test не сможет создать свой домашний каталог.

В-третьих, оболочкой по умолчанию является sh, а не bash. Мы не используем sh как оболочку. Вы, вероятно, тоже не знаете, потому что bash является оболочкой по умолчанию в большинстве дистрибутивов Linux.

В то время как useradd-х поведение можно немного изменить, отредактировав /etc/login.defs, существует мало шансов, что приведенная выше команда создаст полную учетную запись пользователя. Useradd является низкоуровневая утилита. Тем не менее, просмотр настроек в /etc/login.defs может быть полезен.

Синтаксис команды useradd

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

Синтаксис команды следующий:

useradd опцииимяпользователя

Создание нового пользователя

Чтобы просто создать пользователя используется команда useradd без каких-либо опций. Указывается только имя пользователя.

sudo useradd pupkin

Данная команда создает нового пользователя с системными параметрами по умолчанию, которые прописаны в файле /etc/default/useradd

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

sudo passwd pupkin

Создание нового пользователя с домашней директорией в /home

Создадим пользователя и его домашнюю директорию.

sudo useradd -m pupkin

Домашняя директория создается по умолчанию в каталоге /home. Имя директории совпадает с именем пользователя.

Создание нового пользователя с произвольной домашней директорией

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

Создаем домашнюю директорию для будущего пользователя:

sudo mkdir -p /users/pupkin

Копируем файлы и директории, которые по умолчанию создаются в домашней директории пользователя в данной системе. Данные файлы находятся в директории /etc/skel

sudo cp -rT /etc/skel /users/pupkin

Создаем пользователя и указываем домашнюю директорию:

sudo useradd -d /users/pupkin pupkin

Меняем права доступа у домашней директории:

sudo chown -R pupkin:pupkin /users/pupkin

Задаем пароль для пользователя:

sudo passwd pupkin

Можно просмотреть информацию о пользователе, которая сохранена в файле /etc/passwd

cat /etc/passwd | grep pupkin pupkin:x:1001:1001::/users/pupkin:/bin/sh

Команда useradd. Создание пользователя с произвольной домашней директорией

Создание нового пользователя с произвольными UID, GID

Каждый пользователь в Linux имеет свой числовой идентификатор — UID, а также идентификатор основной группы пользователя — GID.

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

useradd -u 1234 -g 1222 pupkin

Создание пользователя с указанием оболочки (shell)

По умолчанию новые пользователи создаются с оболочкой /bin/sh Чтобы задать другую оболочку, используется опция -s /путь/до/оболочки

sudo useradd -m -s /bin/bash pupkin

Смотрите также: Как определить и изменить командную оболочку (shell) в Linux

Создать пользователя и добавить его в группы

Обычно пользователи в Linux принадлежат нескольким группам. Чтобы при создании нового пользователя задать группы, к которым он будет принадлежать, используется опция -G список,групп

sudo useradd -m -G adm,cdrom,wheel -s /bin/bash pupkin

Смотрите также: «Добавление пользователя в группу. Списки пользователей и групп в Linux»

В чем отличия adduser и useradd?

useradd — это низкоуровневая утилита для создания пользователей в Linux.

adduser — представляет собой более простое решение для создания пользователей и по факту является надстройкой над useradd, groupadd и usermod.

Утилита adduser доступна не во всех дистрибутивах Linux. Реализация adduser также может отличаться. Если в дистрибутиве присутствует утилита adduser, то для создания пользователей рекомендуется использовать именно ее.

Команда Adduser

Adduser недоступен. в некоторых дистрибутивах Linux. На других это мягкая ссылка на useradd. В то время как на некоторых других, это сценарий Perl.

Adduser – это интерактивная утилита высокого уровня. В качестве бэкэнда используется утилита низкого уровня useradd. Настройки в /etc/login.defs будут использоваться при использовании adduser. На дистрибутивах, основанных на Debian, даже страница man рекомендует использовать его с помощью команды useradd.

Вызов adduser только с именем пользователя проведет вас через ряд вопросов.

Команда Adduser

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

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

sudo useradd -d /home/test -m -s/bin/bash -c FullName,Phone,OtherInfo test && passwd test

В опции -с могут быть удалены без проблем, то разделенный запятыми список, который следует будут добавлены комментарии к /etc/passwd. Но даже тогда adduser сохраняет две дополнительные команды.

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

  • –system: добавить системного пользователя. По умолчанию системные пользователи помещаются в группу nogroup. Чтобы добавить системного пользователя в существующую группу, укажите параметр –gid или –ingroup.
  • –home DIR: использовать DIR в качестве домашнего каталога вместо стандартного. При необходимости будет создан каталог и скопированы файлы скелета.
  • –shell SHELL: используйте SHELL вместо значения по умолчанию.
  • –ingroup GROUP: установить первичную группу пользователя на GROUP
  • –add_extra_groups: добавить нового пользователя в дополнительную группу, определенную в файле конфигурации.

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

  • Оболочка по умолчанию
  • Домашний каталог
  • Дополнительные группы
  • Добавить дополнительные группы


[spoiler title=”Источники”]

  • https://linuxinsider.ru/kak-sozdat-polzovatelya-linux/
  • https://www.dmosk.ru/miniinstruktions.php?mini=linux-users
  • http://rus-linux.net/MyLDP/consol/15-primerov-po-useradd.html
  • https://andreyex.ru/linux/komandy-linux-i-komandy-shell/useradd-protiv-adduser-v-chem-raznitsa/
  • https://pingvinus.ru/note/useradd


[/spoiler]


2020-07-27T15:39:49
Linux

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



























Rate this post

Когда дело доходит до систем контроля версий, очень немногие могут затмить GIT в актуальности, производительности и распространенности. GIT был разработан Линусом Торвальдсом в 2005 году, и сегодня, миллионы компаний используют его для эффективного управления кодом и контроля над версиями своих проектов. Программное обеспечение с открытым исходным кодом может быть загружено для различных платформ, таких как Linux, Windows, Solaris и Mac; больше информации об основах GIT можно получить здесь. В этом руководстве вы узнаете основные GIT команды. 

Описание

Git является распределенной системой для управления версиями разрабатываемых файлов. Создана она была в 2005 году автором ОС Linux. Эта система осуществляет синхронизацию работы с сайтом, а также сохраняет и обновляет изменения в файлах. Это очень удобный подход в случае работы над проектом нескольких разработчиков. На сегодняшний день во многих известных проектах используется именно Git. Что такое использование дает? К примеру, разработкой операционной системы Android занимается большое число программистов. Было бы крайне неудобно, если бы один из них вносил изменения, а другие об этом не знали. Git же позволяет всем быть в курсе всех изменений, а в случае ошибок вернуться к предыдущим версиям файлов.

Основные команды

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

  • git add файлы копирует файлы в их текущем состоянии на сцену.
  • git commit сохраняет снимок сцены в виде коммита.
  • git reset — файлы восстанавливает файлы на сцене, а именно копирует файлы из последнего коммита на сцену. Используйте эту команду для отмены изменений, внесённых командой git add файлы. Вы также можете выполнить git reset, чтобы восстановить все файлы на сцене.
  • git checkout — файлы копирует файлы со сцены в рабочую директорию. Эту команду удобно использовать, чтобы сбросить нежелательные изменения в рабочей директории.

Вы можете использовать git reset -p, git checkout -p, и git add -p вместо имён файлов или вместе с ними, чтобы в интерактивном режиме выбирать, какие именно изменения будут скопированы.

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

  • git commit -a аналогичен запуску двух команд: git add для всех файлов, которые существовали в предыдущем коммите, и git commit.
  • git commit файлы создаёт новый коммит, в основе которого лежат уже существующие файлы, добавляя изменения только для указанных файлов. Одновременно, указанные файлы будут скопированы на сцену.
  • git checkout HEAD — файлы копирует файлы из текущего коммита и на сцену, и в рабочую директорию.

Использование слепков, а не патчей

Главным отличием Git от других систем контроля версий является то, как она смотрит на данные. Большая часть программ хранит информацию в виде списка изменений, называемых патчами для файлов. Такие системы к хранимым данным относятся как к набору файлов, а также набору изменений, которые сделаны для каждого файла, относительно времени. Как хранит свои данные Git? Что такое есть в этой системе, что отличает ее от других? Вместо патчей, хранимые данные здесь считаются набором слепков маленькой файловой системы. Всякий раз, когда пользователь фиксирует новую версию проекта, система просто сохраняет слепок состояния файлов на текущий момент. Чтобы повысить эффективность в том случае, когда файл не изменялся, система не сохраняет его, а делает ссылку на ранее сохраненный экземпляр, в который были внесены последние изменения.

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

Преимущественно локальные операции

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

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

Наблюдение за целостностью данных

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

Данные чаще всего добавляются

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

Состояния файлов

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

  • Зафиксированное, то есть файл сохранен в локальном хранилище.
  • Измененное, когда правки были внесены, но сохранение еще не выполнено.
  • Подготовленное – измененные файлы, которые отмечены для сохранения.

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

  • Каталог Git, где хранятся метаданные, а также база данных объектов. Эта часть системы самая важная.
  • Рабочий каталог, который является извлеченной из базы данных копией какой-то версии проекта.
  • Файл, содержащий информацию о последующем сохранении.

Устанавливаем Git

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

  • Установка Git из исходников.
  • Установка пакета для используемой платформы.

Установка Git из исходников

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

Для установки понадобятся необходимые библиотеки: expat, curl, libiconv, openssl, zlib. После их инсталляции можно загрузить последнюю версию системы контроля версий, скомпилировать ее и установить.

Установка в операционной системе Windows

Если у пользователя нет Linux, а хочется использовать Git, Windows также поддерживает эту систему. И установить ее очень просто. Существует проект msysGit, процедура установки которого является одной из самых простых. Необходимо просто загрузить файл инсталлятора, который можно найти на странице проекта в GitHub, а затем запустить его. По окончании установки на компьютере будет две версии – графическая и консольная.

Первоначальная настройка Git

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

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

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

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

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

Если указать опцию –global, такие настройки нужно будет сделать один раз.

Выбор текстового редактора

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

Проверка параметров

Чтобы знать основы Git, необходимо уметь проверять используемые настройки. Для этого применяется команда git config –list. Она выводит все доступные параметры, которые сможет найти. Некоторые имена настроек могут присутствовать в списке несколько раз. Это происходит из-за того, что Git считывает один ключ из различных файлов. В такой ситуации для каждого ключа используется последнее значение. Есть возможность проверять значения определенных ключей, вписав в команду вместо «–list» – «{ключ}».

Строим репозитории

В первую очередь нужно понять что такое git-репозиторий? Ответ очень прост: это набор файлов. Папка `.git`. Важно понимать, что это только набор файлов и ничего больше. Раз 20 наблюдал проблему у коллег с авторизацией в github/gitlab. Думая, что это часть git-системы, они пытались искать проблему в конфигруации git, вызывать какие-то git-команды.
А если это просто файлы, то к ним нужно как-то получить доступ, иметь возможность оттуда читать и туда писать? Да! Я называю это «транспортом». Это может и некорректно, но мне так было удобно запомнить. Более правильный вариант: «Протокол передачи данных». Самые распространённые варианты:

  1. FILE — мы имеем прямой доступ к файлам репозитория.
  2. SSH — мы имеем доступ к файлам на сервере через ssh.
  3. HTTP(S) — используем http в качестве приёма/передачи.

Вариантов намного больше. Не важно какой транспорт будет использован, важно чтобы был доступ на чтение или чтение/запись к файлам.
Поэтому, если вы никак не можете клонировать репозиторий с github, и нет в логах никаких подсказок, возможно у вас проблема с транспортом.
В частности, при клонировании вот так:
git clone git@github.com:user/repo.git
урл «превращается» в
git clone ssh://git@github.com:user/repo.git
Т.е. используется SSH и проблемы нужно искать в нём. Как правило, это неправильно настроенный или не найденный ssh-ключ. Гуглить надо в сторону «SSH Auth Key git» или, если совсем по взрослому, проверить, что же происходит:
ssh -vvv git@github.com
Какие протоколы поддерживаются поможет справка (раздел GIT URLS):
git clone –help
Репозиторий можно клонировать, но для начала поиграемся со своими:

  1. Придумаем свой удалённый репозиторий
  2. Сделаем два клона с него, от имени разработчиков (dev1 и dev2)

Кроме самого репозитория есть ещё и workspace, где хранятся файлы с которыми вы работаете. Именно в этой папке лежит сам репозиторий (папка .git ). На серверах рабочие файлы не нужны, поэтому там хранятся только голые репозитории (bare-repo).
Сделаем себе один (будет нашим главным тестовым репозиторием):
$ mkdir git-habr #создадим папку, чтоб не мусорить $ cd git-habr $ git init –bare origin Initialized empty Git repository in /home/sirex/proj/git-habr/origin/
Теперь клонируем его от имени разработчиков. Тут есть только один нюанс, которого не будет при работе с сервером: git, понимая, что репозитории локальные и находятся на одном разделе, будет создавать ссылки, а не делать полную копию. А нам для изучения нужна полная копия. Для этого можно воспользоваться ключом –no-hardlinks или явно указать протокол:
$ git clone –no-hardlinks origin dev1 Cloning into ‘dev1’… warning: You appear to have cloned an empty repository. done. $ git clone –no-hardlinks origin dev2 Cloning into ‘dev2’… warning: You appear to have cloned an empty repository. done.
Итог: у нас есть 3 репозитория. Там ничего нет, зато они готовы к работе.

Создание в данном каталоге

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

Клонирование репозитория

Для получения копии уже существующего репозитория нужна команда git clone. С ее помощью Git получит копию почти всех данных с сервера. Это касается всех версий каждого файла. Очень удобная возможность, так как в случае выхода из строя сервера программист сможет использовать клон на любом клиенте для возврата сервера в то состояние, в каком он был при клонировании. Это похоже на точку восстановления.

Удаленный доступ и его особенности

Командная работа над проектом невозможна без обучения управлению удаленными репозиториями. Каждая модификация проекта хранится в Сети или на сервере системы контроля версий, такой как Git. Вариантов проекта с небольшими отличиями может быть несколько, и все они доступны другим разработчикам. Некоторые репозитории можно только просматривать, в другие разрешено вносить изменения. Для каждого такого действия в системе Git существует несколько специальных команд, позволяющих управлять удаленными копиями проектов. Все они являются модификацией основной команды — git remote.

Управление удаленным репозиторием в Git

Ниже рассмотрен процесс работы с удаленными хранилищами в Git. Обычно пользователям системы приходится делиться рядом коммитов, а не одним набором изменений. Вместо того, чтобы отправлять набор изменений из рабочей копии в центральный репозиторий, Git позволяет разработчикам обмениваться целыми ветвями между отдельными хранилищами. У каждого пользователя может быть несколько репозиториев, каждый из которых обычно доступен только для чтения или чтения и записи. Сотрудничество с другими людьми предполагает управление этими удаленными репозиториями. Именно для этого нужна команда для удаленного доступа — git remote. Она является одной из частей более широкой системы, отвечающей за синхронизацию изменений.

Особенности удаленного доступа

Записи, зарегистрированные при помощи команды удаленного доступа, используются в сочетании с командами git remote push, fetch и pull. Как git fetch, так и git pull можно использовать для чтения из удаленного репозитория. Команда git remote позволяет создавать, просматривать и удалять подключения к другим репозиториям. Например, push используется для того, чтобы поместить данные в хранилище, а pull, наоборот, чтобы получить. Команда fetch нужна, чтобы извлечь всю информацию, отсутствующую на локальной копии, из удаленного репозитория. После ее выполнения создаются ссылки на все новые ветки, в которых находятся недостающие данные. То есть обновления не сливаются с текущим проектом, а располагаются отдельно.

Впоследствии данные нужно будет сливать вручную, если возникнет такая необходимость. Для автоматического извлечения и соединения репозиториев используется git remote pull. Удаленные подключения больше напоминают закладки, чем прямые ссылки в другие репозитории. Вместо предоставления доступа в режиме реального времени они служат удобными именами, которые могут использоваться для ссылки на не очень удобный URL-адрес.

Команда удаленного доступа по сути является интерфейсом для управления списком записей, которые находятся в файле ./.git/config. Она нужна для управления удаленными хранилищами, удаления несуществующих, отслеживания определенных веток и смены адресов удаленных репозиториев (git change remote).

Отображение удаленных хранилищ

По умолчанию Git удаляет список ранее сохраненных удаленных подключений к другим репозиториям. При этом создается строка, в которой будут указаны имена удаленных репозиториев. Вызов git remote с параметром -v покажет список имен закладок репозитория и, кроме того, соответствующие им URL-адреса. Опция -v означает verbose. Команда git remote add создаст новую запись соединения в удаленном репозитории. После того как удаленная запись была настроена при помощи команды удаленного доступа, ее имя может быть передано другим командам Git для связи с хранилищем.

Конфигурация команды удаленного доступа

Ниже рассмотрены варианты использования команды для управления репозиториями. Простая запись git remote выдает список удаленных подключений. Существует несколько ее конфигураций. Команда удобна для внесения изменений в файл ./.git/config. Также его можно редактировать и вручную при помощи текстового редактора. Команда для удаленного доступа Git является одной из тех, что принимает дополнительные “подкоманды”.

Варианты “подкоманд”:

  1. Команда “git remote add ” используется для создания нового подключения к удаленному репозиторию. После добавления удаленного управления появляется возможность использовать как удобный ярлык для в других командах. Эта подкоманда принимает параметр -f, который добавляет имя ветви сразу после создания удаленной записи. А также параметр –tags”, который немедленно извлекает <имя> и импортирует каждый тег из удаленного репозитория.
  2. Еще одна команда git remote rm позволяет удалить соединение с удаленным репозиторием. Она изменяет /.git/config и удаляет файл с именем . Если затем выполнить эту команду с префиксом remote_test, можно увидеть, что запись больше не существует.
  3. Запись git remote rename переименовывает удаленное соединение. При этом сначала указывается старое имя, а затем — новое. Чтобы изменить удаленный URL-адрес репозитория, необходимо обновить конфигурационный файл новым URL-адресом. В противном случае вы получите сообщение об ошибке.
  4. Команда get-url выводит URL-адреса для удаленного доступа. При добавлении параметра – all будут перечислены все URL-адреса доступных удаленных хранилищ.

Всякие полезности

Git позволяет настраивать aliasы для различных команд. Это бывает очень удобно и сокращает время набора команд. Приводить здесь примеры не буду, в Интернете их полно, просто поищите.
Перед тем, как отдавать свои изменения их можно перестроить на самих себя, чтобы привести историю в порядок.
Например, в логах может быть такое:
9982f7b Finally make test works b21f8a5 Fixed typo in Test 3eabaab Fixed typo in Test e514869 Added Test for Foo b4439a2 Implemented Method for Foo 250adb1 Added class Foo
Перестроим сами себя, но начиная с 6 коммитов назад:
dev2(dev)$ git rebase -i dev~6 # т.к. нам всё равно отдавать это в origin/dev мы можем перестроить прямо на него dev2(dev)$ git rebase -i origin/dev
Теперь в интерактивном режиме можно объединить (squash) первые два коммита в один и последние четыре. Тогда история будет выглядеть так:
0f019d0 Added Test for class Foo a3ae806 Implemented class Foo
Такое намного приятнее передавать в общим репозиторий.
Обязательно посмотрите, что умеет git config и git config –global. Перед тем, как начнёте работать с реальным проектом, неплохо было бы настроить свой username и email:
git config –global user.name sirex git config –global user.email jsirex@gmail.com
На одном проекте у нас велась параллельная разработка очень многих фич. Они все разрабатывались в отдельных ветках, но тестировать их нужно было вместе. При этом на момент выпуска билда для тестирования не было понятно, готовы фичи или нет: могли поменяться требования или найтись серьёзные баги. И стал вопрос: как продолжить работу над всеми фичами не объединяя их в принципе никогда, но объединяя всё перед релизом? Противоречие? Git красиво помогает решить эту проблему и вот как:

  1. для выпуска билда была создана отдельная ветка, куда все фичи мержились (git merge –no-ff)
  2. ветка отдавалась на тестирование
  3. разработка продолжалась в своих ветках
  4. новые изменения опять объединялись (git merge –no-ff)
  5. Если тестируемую временную ветку просто удалить, все связанные коммиты с ней исчезнут и история опять распадётся на много отдельных веток. А их потом можно снова пересобрать
  6. Когда какая-то фича абсолютна готова к релизу, только её одну можно перестроить на dev и протолкнуть в релиз.
  7. Операция с остальными, неготовыми ветками, повторяется

Удаление файла в Git

Удалить из системы любой файл можно, если исключить его из индекса, то есть из отслеживаемых файлов. Для этого нужна команда git rm. Она также убирает файл из рабочего каталога пользователя. Затем нужно выполнить коммит. После него файл попросту исчезнет и отслеживаться больше не будет. Если же он изменен и уже проиндексирован, то применяют принудительное удаление с параметром -f. Такой способ предотвратит удаление тех данных, которые еще не записались в снимок состояния и которые нет возможности восстановить из системы.

Отмена изменений

В любой момент может появиться необходимость в отмене какого-либо действия. Если пользователь выполнил коммит рано, забыв внести некоторые файлы, то можно перевыполнить его, используя опцию –amend. Такая команда использует для коммита индекса. Если после выполнения последнего сохранения не производилось никаких изменений, то проект будет в таком же состоянии, и появится редактор для комментариев, где пользователь сможет отредактировать все, что нужно. Нужно помнить, что не каждую операцию отмены можно будет отменить. Иногда можно безвозвратно удалить необходимые данные. Следует быть внимательными.

Переключение веток

Команда git checkout позволяет перемещаться между ветками, созданными командой git branch. При переключении ветки происходит обновление файлов в рабочем каталоге в соответствии с версией, хранящейся в этой ветке, а Git начинает записывать все новые коммиты в этой ветке. Рассматривайте эту команду как способ выбрать направление для развития в рамках своей разработки.

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

Иногда команду git checkout можно спутать с командой git clone. Разница между этими двумя командами заключается в том, что при клонировании (clone) выполняется извлечение кода из удаленного репозитория, тогда как при переключении (checkout) происходит переключение между версиями кода, который уже находится в локальной системе.

Использование: существующие ветки

Если предположить, что ваш рабочий репозиторий уже содержит существующие ветки, вы можете переключаться между этими ветками с помощью команды git checkout. Чтобы узнать, какие ветки доступны и как называется текущая ветка, выполните команду git branch.

$> git branch master another_branch feature_inprogress_branch $> git checkout feature_inprogress_branch

В вышеприведенном примере показано, как просмотреть список доступных веток с помощью команды git branch и переключиться на конкретную ветку (в данном случае — на ветку feature_inprogress_branch).

Новые ветки

Команда git checkout часто используется вместе с командой git branch . С помощью команды git branch можно создать новую ветку. Когда вы захотите начать работу над новой функцией, создайте новое ответвление от ветки master с помощью команды git branch new_branch. Затем переключитесь на новую ветку с помощью команды git checkout new_branch. Команда git checkout также принимает аргумент -b, который действует как вспомогательный метод, позволяя создать новую ветку и сразу переключиться на нее. Вы можете работать сразу с несколькими функциями в одном репозитории, переключаясь между ними с помощью git checkout.

git checkout -b В вышеприведенном примере одновременно создается ветка и сразу же выполняется переключение на нее. Опция -b — это удобный способ сообщить системе Git, чтобы она выполнила команду git branch перед выполнением команды git checkout .git checkout -b По умолчанию команда git checkout -b создает ветку new-branch от текущего указателя HEAD. Команде git checkout можно передать необязательный параметр — еще одну ветку. В вышеприведенном примере передается , поэтому ответвление new-branch будет создано от ветки existing-branch, а не от текущего указателя HEAD.

Переключение веток

Переключение веток — простая операция. При выполнении следующей команды указатель HEAD будет перенесен на последний коммит ветки .git checkout

Git отслеживает историю операций переключения в журнале ссылок reflog. Чтобы просмотреть эту историю, выполните команду git reflog.

Переключение на удаленную ветку

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

git fetch –all

В современных версиях Git переключение на удаленную ветку не отличается от переключения на локальную ветку.

git checkout

В более старых версиях Git необходимо создать новую ветку на основе удаленной (remote).

git checkout origin/

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

git checkout -b git reset –hard origin/

Открепленные указатели HEAD

Теперь, когда мы рассмотрели три основных варианта использования команды git checkout на ветках, важно обсудить состояние detached HEAD, или состояние открепленного указателя HEAD. Помните, что HEAD — это указатель на текущий снимок в Git. Сама команда git checkout просто обновляет указатель HEAD, чтобы он ссылался на указанную ветку или коммит. Когда HEAD указывает на ветку, Git молчит, но при попытке переключиться на коммит он переходит в состояние detached HEAD (открепленный указатель HEAD).

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

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

Добавление Git Remote

Удаленный репозиторий должен существовать до того, как вы добавите git remote в ваш локальный репозиторий. Вы можете создать репозиторий в службе хостинга Git, такой как GitHub, GitLab и BitBucket, или на своем частном сервере Git.

Чтобы добавить новый удаленный каталог, перейдите в каталог, в котором хранится ваш репозиторий, и используйте команду git remote add, за которой следует удаленное имя и удаленный URL:

git remote add

Например, чтобы добавить новый remote с именем staging указывающим на git@gitserver.com:user/repo_name.git, введите:

git remote add staging git@gitserver.com:user/repo_name.git

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

git remote -v

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

origin https://github.com/user/repo_name.git (fetch) origin https://github.com/user/repo_name.git (push) staging git@gitserver.com:user/repo_name.git (fetch) staging git@gitserver.com:user/repo_name.git (push)

На самом деле команда git remote add изменяет файл репозитория .git/config и новое соединение с удаленным репозиторием.

.git/config… [remote “staging”] url = git@gitserver.com:user/repo_name.git fetch = +refs/heads/*:refs/remotes/staging/*

Вы можете добавить новый remote, отредактировав файл .git/config с помощью текстового редактора, но использовать команду намного проще.

Вот и все. Вы успешно добавили Git remote.

Чтобы перенести ваш код на remote, вы должны использовать:

git push

Чтобы извлечь и извлечь из удаленного использования:

git fetch git pull

15 команд Git, о которых вы, возможно, не знали

1. Изменение последнего коммита

git commit –amend

—amend позволяет добавлять подготовленные (staged) изменения к предыдущему коммиту (например, добавлять забытый файл). Если изменений нет, то —amend даст вам возможность переписать сообщение этого коммита (commit message). А если приписать —no-edit, то наоборот: можно будет внести изменения в сам коммит, не затрагивая commit message.

Узнать больше: git help commit

2. Интерактивное добавление отдельных частей файлов

git add -p

-p (или —patch) позволяет интерактивно выбирать для добавления в коммит части отслеживаемый файлов. Таким образом коммит будет содержать только нужные изменения.

Узнать больше: git help add

3. Интерактивное скрытие отдельных частей файлов

git stash -p

Опцию —patch можно добавлять не только к git-add. Добавленная к git stash, она позволяет интерактивно выбирать части отслеживаемых файлов, которые вы хотели бы скрыть.

Узнать больше: git help stash

4. Скрытие файлов, включая неотслеживаемые

По умолчанию при скрытии файлов неотслеживаемые файлы не учитываются. Чтобы изменить это поведение и включить в stash также и эти файлы, нужно использовать параметр -u. Есть также параметр -a (—all), который позволяет скрывать как неотслеживаемые, так и игнорируемые файлы, но это, вероятно, не то, что вам обычно нужно.

5. Интерактивный «сброс» выбранных частей файлов

git checkout -p

—patch можно также использовать для выборочного сброса частей отслеживаемых файлов. Я задал этой команде псевдоним git discard.

Узнать больше: git help checkout

6. Переключение в предыдущую ветку

git checkout –

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

7. Сброс всех локальных изменений

git checkout .

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

8. Показать изменения

git diff –staged

Эта команда показывает все подготовленные изменения (проиндексированные). Если вы введете просто git diff, будут показаны изменения только в рабочей директории.

Узнать больше: git help diff

9. Локальное переименование веток

git branch -m old-name new-name

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

git branch -m new-name

Узнать больше: git help branch

10. Переименование веток удаленно

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

git push origin :old-namegit push origin new-name

11. Открыть все файлы с конфликтами одновременно

Перемещение (rebasing) может приводить к конфликтам. Следующая команда откроет все файлы, где нужно разрешить эти конфликты.

git diff –name-only –diff-filter=U | uniq | xargs $EDITOR

12. Что изменилось?

git whatchanged –since=‘2 weeks ago’

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

13. Удаление файла из последнего коммита

Скажем, вы сделали коммит файла по ошибке. Этот файл можно быстро удалить из последнего коммита путем комбинации команд rm и commit —amend:

git rm –cached git commit –amend

Шпаргалка программиста по работе с Git

28 декабря 2011

Некоторое время назад я открыл для себя Git. И знаете, я проникся. То есть, по-настоящему проникся. Теперь я использую Git не только на работе (где я с ним, собственно, познакомился), но и для своих проектиков, которые я стал хранить на BitBucket. Последний начал поддерживать Git относительно недавно. В отличие от GitHub, BitBucket позволяет совершенно бесплатно создавать как открытые, так и закрытые репозитории.

В чем состоит отличие Git от Subversion?

Главное отличие Git от Subversion заключается в том, что Git — распределенная система контроля версий. Звучит ужасающе, но на практике это означает очень простую вещь. Каждый разработчик держит у себя на диске отдельный репозиторий. Обратите внимание — не копию репозитория, не некоторые бранчи, а тупо отдельный и при этом абсолютно полноценный репозиторий.

Пока мы работаем в рамках своего репозитория, все происходит в точности, как в Subversion. Мы коммитим и откатываем изменения, создаем, мержим и удаляем бранчи, разрешаем конфликты и тд. Помимо этого, предусмотрены команды для работы с репозиториями на удаленных машинах. Например, «git push» означает мерж локальных изменений в удаленный репозиторий, а «git pull» — наоборот, мерж изменений из удаленного репозитория в локальный. Обмен данными по сети обычно происходит с использованием протокола SSH.

В результате имеем:

  • Git присущи все те же преимущества от использования VCS, что мы получаем в Subversion.
  • Git дает нам нормальное шифрование «из коробки», безо всяких танцев с бубнами, как в случае с Subversion.
  • Если сервер с «главным» репозиторием, куда пушат свои изменения все разработчики (хотя формально в Git нет никакого «главного» репозитория), вдруг прилег — ничего страшного. Делаем коммиты в локальный репозиторий и ждем, когда сервер вернется.
  • Даже если сервер доступен, все равно удобнее сделать пяток локальных коммитов, а затем отправить их на сервер одним пушем.
  • Сервер вообще не нужен. Вы можете использовать Git только локально. И не обязательно для работы с исходниками. Например, можно использовать Git для того, чтобы иметь возможность откатиться к предыдущим версиям файлов (каких-нибудь электронных таблиц) или вернуть случайно удаленные.
  • Git не раскидывает по каталогам служебную информацию (помните «.svn»?), вместо этого она хранится только в корне репозитория.
  • Git нынче очень моден (хотя это далеко не единственная распределенная система контроля версий, например, есть Mercurial и Darcs), в связи с чем растет число разработчиков, использующих его. Как следствие, используя Git, легче получить помощь на каком-нибудь форуме или собрать команду разработчиков, знакомых с этой VCS.
  • Существует множество полезных утилит для работы с Git — Qgit, gitk, gitweb и другие. «Из коробки» есть импорт и экспорт в/из Subversion/CVS.
  • Git поддерживают многие хостинги репозиториев (GitHub, BitBucket, SourceForge, Google Code, …) — есть из чего выбрать.
  • Большой популярностью пользуется GitHub. Используя Git, вы увеличиваете вероятность того, что кто-то захочет безвозмездно написать патч для вашего open source проекта.

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

Я использовал Git при написании программы из заметки Генерация почти осмысленных текстов на Haskell, сидя под своей любимой FreeBSD. Вот как примерно выглядела моя работа с Git.

В первую очередь необходимо поставить Git:

pkg_add -rgit

Затем создаем пару ssh ключей, если не создавали ее ранее:

ssh-keygen
cat ~/.ssh/id_rsa.pub

Заходим на БитБакет, создаем git-репозиторий под новый проект, а в свойствах аккаунта прописываем свой открытый ssh-ключ. Затем клонируем репозиторий:

cd ~/projects/haskell
git clonegit@bitbucket.org:afiskon/hs-textgen.git
cd hs-textgen

Делаем какие-то изменения:

echotest> TODO.TXT

Добавляем новый файл в репозиторий и делаем коммит:

git add TODO.TXT
git commit-a

Поскольку я не указал описание коммита, запускается редактор VIM, с помощью которого я и ввожу описание. Затем я отправляю все сделанные мною изменения на БитБакет:

git push origin

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

git branch new_feature
git checkout new_feature

Работаем с этой веткой. Если ничего хорошего не вышло, возвращаемся к основной ветке (она же «trunk» или «ствол»):

git checkout master

Если вышло что-то хорошее, мержим ветку в master (о разрешении конфликтов рассказано в следующем параграфе):

git commit-a# делаем коммит всех изменений в new_feature
git checkout master # переключаемся на master
git merge new_feature # мержим ветку new_feature

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

git push origin

Если мы правим код с нескольких компьютеров, то перед началом работы не забываем «накатить» в локальный репозиторий последнюю версию кода:

git pull origin

Работа в команде мало чем отличается от описанного выше. Только каждый программист должен работать со своей веткой, чтобы не мешать другим программистам. Одна из классических ошибок при начале работы с Git заключается в push’евсех веток, а не только той, с которой вы работали. Вообще я бы советовал первое время перед выполнением каждого push делать паузу с тем, чтобы подумать, что и куда сейчас уйдет. Для большей безопасности советую при генерации ssh-ключей указать пароль. Тогда каждый запрос пароля со стороны Git будет для вас сигналом «Эй, ты делаешь что-то, что затронет других».

Fun fact! Нравится статья? Поддержи автора, чтобы он мог писать больше полезных статей!

Для работы с Git под Windows можно воспользоваться клиентом TortoiseGit. Если память не подводит, для работы ему нужен Git for Windows. Для генерации ключей можно воспользоваться утилитой PuTTyGen. Только не забудьте экспортировать открытый ключ в правильном формате, «Conversions → Export OpenSSH key».

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

Шпаргалка по командам

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

Создать новый репозиторий:

git init project-name

Если вы планируете клонировать его по ssh с удаленной машины, также скажите:

git config–bool core.bare true

… иначе при git push вы будете получать странные ошибки вроде:

Refusing to update checked out branch: refs/heads/master
By default, updating the current branch in a non-bare repository
is denied, because it will make the index and work tree inconsistent
with what you pushed, and will require ‘git reset –hard’ to match
the work tree to HEAD.

Клонировать репозиторий с удаленной машины:

git clonegit@bitbucket.org:afiskon/hs-textgen.git

Если хотим пушить один код в несколько репозиториев:

git remote add remotename git@gitlab.example.ru:repo.git

Добавить файл в репозиторий:

git add text.txt

Удалить файл:

git rm text.txt

Текущее состояние репозитория (изменения, неразрешенные конфликты и тп):

git status

Сделать коммит:

git commit-a-m”Commit description”

Сделать коммит, введя его описание с помощью $EDITOR:

git commit-a

Замержить все ветки локального репозитория на удаленный репозиторий (аналогично вместо origin можно указать и remotename, см выше):

git push origin

Аналогично предыдущему, но делается пуш только ветки master:

git push origin master

Запушить текущую ветку, не вводя целиком ее название:

git push origin HEAD

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

git pull origin

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

git pull origin master

Накатить текущую ветку, не вводя ее длинное имя:

git pull origin HEAD

Скачать все ветки с origin, но не мержить их в локальный репозиторий:

git fetch origin

Аналогично предыдущему, но только для одной заданной ветки:

git fetch origin master

Начать работать с веткой some_branch (уже существующей):

git checkout-b some_branch origin/some_branch

Создать новый бранч (ответвится от текущего):

git branch some_branch

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

git checkout some_branch

Получаем список веток, с которыми работаем:

git branch# звездочкой отмечена текущая ветвь

Просмотреть все существующие ветви:

git branch-a# | grep something

Замержить some_branch в текущую ветку:

git merge some_branch

Удалить бранч (после мержа):

git branch-d some_branch

Просто удалить бранч (тупиковая ветвь):

git branch-D some_branch

История изменений:

git log

История изменений в обратном порядке:

git log–reverse

История конкретного файла:

git log file.txt

Аналогично предыдущему, но с просмотром сделанных изменений:

git log-p file.txt

История с именами файлов и псевдографическим изображением бранчей:

git log–stat–graph

Изменения, сделанные в заданном коммите:

git show d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4

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

git blame file.txt

Удалить бранч из репозитория на сервере:

git push origin :branch-name

Откатиться к конкретному коммиту (хэш смотрим в «git log»):

git reset–hard d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4

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

git reset–soft d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4

Попытаться обратить заданный commit:

git revert d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4

Просмотр изменений (суммарных, а не всех по очереди, как в «git log»):

git diff# подробности см в “git diff –help”

Используем vimdiff в качестве программы для разрешения конфликтов (mergetool) по умолчанию:

git config–global merge.tool vimdiff

Отключаем диалог «какой mergetool вы хотели бы использовать»:

git config–global mergetool.prompt false

Отображаем табы как 4 пробела, например, в «git diff»:

git config–global core.pager ‘less -x4’

Создание глобального файла .gitignore:

git config–global core.excludesfile ~/.gitignore_global

Разрешение конфликтов (когда оные возникают в результате мержа):

git mergetool

Создание тэга:

git tag some_tag # за тэгом можно указать хэш коммита

Удаление untracked files:

git clean-f

«Упаковка» репозитория для увеличения скорости работы с ним:

git gc

Иногда требуется создать копию репозитория или перенести его с одной машины на другую. Это делается примерно так:

mkdir-p/tmp/git-copy
cd/tmp/git-copy
git clone–baregit@example.com:afiskon/cpp-opengl-tutorial1.git
cd cpp-opengl-tutorial1.git
git push–mirrorgit@example.com:afiskon/cpp-opengl-tutorial2.git

Следует отметить, что Git позволяет использовать короткую запись хэшей. Вместо «d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4» можно писать «d8578edf» или даже «d857».

Дополнение: Также в 6-м пункте Мини-заметок номер 9 приводится пример объединения коммитов с помощью git rebase, а в 10-м пункте Мини-заметок номер 11 вы найдете пример объединения двух репозиториев в один без потери истории.

Работа с сабмодулями

Более подробно сабмодули и зачем они нужны объясняется в заметке Простой кроссплатформенный OpenGL-проект на C++. Здесь упомянем самое главное.

Добавить сабмодуль:

git submodule add https://github.com/glfw/glfw glfw

Инициализация сабмодулей:

git submodule init

Обновление сабмодулей, например, если после git pull поменялся коммит, на который смотрит сабмодуль:

git submodule update

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

  1. Скажите git rm–cached имя_сабмодуля;
  2. Удалите соответствующие строчки из файла .gitmodules;
  3. Также грохните соответствующую секцию в .git/config;
  4. Сделайте коммит;
  5. Удалите файлы сабмодуля;
  6. Удалите каталог .git/modules/имя_сабмодуля;

Что могу посоветовать

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

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

  • пушить коммиты почаще, чтобы коллеги быстрее получали доступ к новым изменениям
  • пулиться почаще – обратная ситуация, почаще получать свежие изменения
  • всегда пультесь с флажком ребейза – git pull –rebase origin master
  • не удивляйтесь, что при пуллах и пушах могут возникать подобные ситуации, как мы рассматривали выше
  • не стесняйтесь спрашивать коллег, если увидели незнакомую ситуацию
  • больше практикуйтесь. Посадите домашний проект на git и работайте с ним

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

В следующем уроке мы узнаем, что такое ветки и будем активно работать с ними. Там мы будем активно использовать git push и git pull, и это поможет закрепить уже пройденный материал.

Спасибо за внимание и до встречи!


[spoiler title=”Источники”]

  • https://www.hostinger.ru/rukovodstva/osnovnie-git-komandy
  • https://FB.ru/article/278293/git—chto-takoe-git-dlya-nachinayuschih-opisanie
  • https://marklodato.github.io/visual-git-guide/index-ru.html
  • https://habr.com/ru/post/174467/
  • https://FB.ru/article/429161/git-remote-opisanie-poryadok-rabotyi-repozitsii
  • https://www.atlassian.com/ru/git/tutorials/using-branches/git-checkout
  • https://andreyex.ru/operacionnaya-sistema-linux/kak-dobavit-git-remote/
  • https://techrocks.ru/2019/04/03/15-useful-git-commands/
  • https://eax.me/git-commands/
  • https://webdevkin.ru/courses/git/git-push-pull


[/spoiler]


2020-07-27T15:39:45
Linux

SCP Команда Linux для Удалённого Копирования Файлов

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

Справка по команде ipconfig и ее параметрам



























5/5 — (1 голос)

Вывод полной конфигурации TCP/IP для всех адаптеров. Без этого параметра команда ipconfig выводит только IP-адреса, маску подсети и основной шлюз для каждого адаптера. Адаптеры могут представлять собой физические интерфейсы, такие как установленные сетевые адаптеры, или логические интерфейсы, такие как подключения удаленного доступа. /renew [адаптер] Обновление конфигурации DHCP для всех адаптеров (если адаптер не задан) или для заданного адаптера. Данный параметр доступен только на компьютерах с адаптерами, настроенными для автоматического получения IP-адресов. Чтобы указать адаптер, введите без параметров имя, выводимое командой ipconfig. /release [адаптер] Отправка сообщения DHCPRELEASE серверу DHCP для освобождения текущей конфигурации DHCP и удаление конфигурации IP-адресов для всех адаптеров (если адаптер не задан) или для заданного адаптера. Этот адаптер отключает протокол TCP/IP для адаптеров, настроенных для автоматического получения IP-адресов. Чтобы указать адаптер, введите без параметров имя, выводимое командой ipconfig. /flushdns Сброс и очистка содержимого кэша сопоставления имен DNS клиента. Во время устранения неполадок DNS эту процедуру используют для удаления из кэша записей отрицательных попыток сопоставления и других динамически добавляемых записей. /displaydns Отображение содержимого кэша сопоставления имен DNS клиента, включающего записи, предварительно загруженные из локального файла Hosts, а также последние полученные записи ресурсов для запросов на сопоставление имен. Эта информация используется службой DNS клиента для быстрого сопоставления часто встречаемых имен без обращения к указанным в конфигурации DNS-серверам. /registerdns Динамическая регистрация вручную имен DNS и IP-адресов, настроенных на компьютере. Этот параметр полезен при устранении неполадок в случае отказа в регистрации имени DNS или при выяснении причин неполадок динамического обновления между клиентом и DNS-сервером без перезагрузки клиента. Имена, зарегистрированные в DNS, определяются параметрами DNS в дополнительных свойствах протокола TCP/IP. /showclassidадаптер Отображение кода класса DHCP для указанного адаптера. Чтобы просмотреть код класса DHCP для всех адаптеров, вместо параметра адаптер укажите звездочку (*). Данный параметр доступен только на компьютерах с адаптерами, настроенными для автоматического получения IP-адресов. /setclassidадаптер [код_класса] Задание кода класса DHCP для указанного адаптера. Чтобы задать код класса DHCP для всех адаптеров, вместо параметра адаптер укажите звездочку (*). Данный параметр доступен только на компьютерах с адаптерами, настроенными для автоматического получения IP-адресов. Если код класса DHCP не задан, текущий код класса удаляется. /? Отображение справки в командной строке.

Заметки

  • Команда ipconfig является эквивалентом для командной строки команды winipcfg, имеющейся в Windows Millennium Edition, Windows 98 и Windows 95. Хотя Windows XP не имеет графического эквивалента команде winipcfg, для просмотра и обновления IP-адреса можно воспользоваться окном «Сетевые подключения». Для этого откройте окно Сетевые подключения, щелкните правой кнопкой мыши сетевое подключение, выберите команду Состояние, а затем откройте вкладку Поддержка.
  • Данная команда доступна только на компьютерах с адаптерами, настроенными для автоматического получения IP-адресов. Это позволяет пользователям определять, какие значения конфигурации были получены с помощью DHCP, APIPA или другой конфигурации.
  • Если имя адаптер содержит пробелы, его следует заключать в кавычки (т. е. имя_адаптера).
  • В именах адаптеров, задаваемых для команды ipconfig, поддерживается использование подстановочного знака звездочки (*) для задания имен, начинающихся с указанной строки или содержащих указанную строку. Например, имя Подкл* будет включать все адаптеры, начинающиеся со строки «Подкл», а имя *сет*  все адаптера, содержащие строку «сет».
  • Эта команда доступна, только если в свойствах сетевого адаптера в объекте Сетевые подключения в качестве компонента установлен протокол Интернета (TCP/IP).

Параметры утилиты IPCONFIG

ipconfig [/all] [/renew [адаптер]] [/release [адаптер]] [/flushdns] [/displaydns] [/registerdns] [/showclassid адаптер] [/setclassid адаптер [код_класса]], где

  • /all – Вывод полной конфигурации TCP/IP для всех адаптеров. Без этого параметра команда ipconfig выводит только IP-адреса, маску подсети и основной шлюз для каждого адаптера. Адаптеры могут представлять собой физические интерфейсы, такие как установленные сетевые адаптеры, или логические интерфейсы, такие как подключения удаленного доступа.

  • /renew [адаптер] – Обновление конфигурации DHCP для всех адаптеров (если адаптер не задан) или для заданного адаптера. Данный параметр доступен только на компьютерах с адаптерами, настроенными для автоматического получения IP-адресов. Чтобы указать адаптер, введите без параметров имя, выводимое командой ipconfig.

  • /release [адаптер] – Отправка сообщения DHCPRELEASE серверу DHCP для освобождения текущей конфигурации DHCP и удаление конфигурации IP-адресов для всех адаптеров (если адаптер не задан) или для заданного адаптера. Этот адаптер отключает протокол TCP/IP для адаптеров, настроенных для автоматического получения IP-адресов. Чтобы указать адаптер, введите без параметров имя, выводимое командой ipconfig.

  • /flushdns – Сброс и очистка содержимого кэша сопоставления имен DNS клиента. Во время устранения неполадок DNS эту процедуру используют для удаления из кэша записей отрицательных попыток сопоставления и других динамически добавляемых записей.

  • /displaydns – Отображение содержимого кэша сопоставления имен DNS клиента, включающего записи, предварительно загруженные из локального файла Hosts, а также последние полученные записи ресурсов для запросов на сопоставление имен. Эта информация используется службой DNS клиента для быстрого сопоставления часто встречаемых имен без обращения к указанным в конфигурации DNS-серверам.

  • /registerdns – Динамическая регистрация вручную имен DNS и IP-адресов, настроенных на компьютере. Этот параметр полезен при устранении неполадок в случае отказа в регистрации имени DNS или при выяснении причин неполадок динамического обновления между клиентом и DNS-сервером без перезагрузки клиента. Имена, зарегистрированные в DNS, определяются параметрами DNS в дополнительных свойствах протокола TCP/IP.

  • /showclassid адаптер – Отображение кода класса DHCP для указанного адаптера. Чтобы просмотреть код класса DHCP для всех адаптеров, вместо параметра адаптер укажите звездочку (*). Данный параметр доступен только на компьютерах с адаптерами, настроенными для автоматического получения IP-адресов.

  • /setclassid адаптер [код_класса] – Задание кода класса DHCP для указанного адаптера. Чтобы задать код класса DHCP для всех адаптеров, вместо параметра адаптер укажите звездочку (*). Данный параметр доступен только на компьютерах с адаптерами, настроенными для автоматического получения IP-адресов. Если код класса DHCP не задан, текущий код класса удаляется.

  • /? – Отображение справки в командной строке.

ipconfig Использование

В командной строке введите «ipconfig» для запуска утилиты с параметрами по умолчанию. Вывод команды по умолчанию содержит IP-адрес, маску сети и шлюз для всех физических и виртуальных сетевых адаптеров.

ipconfig поддерживает несколько параметров командной строки, как описано ниже. Команда «ipconfig /?» отображает набор доступных опций.

ipconfig /?

ipconfig /all

Эта опция отображает одну и ту же информацию IP-адресации для каждого адаптера в качестве опции по умолчанию. Кроме того, он отображает настройки DNS и WINS для каждого адаптера.

ipconfig /release

Освобождение адресов для всех подключений с соответствующим именем, например «Проводное подключение Ethernet 1» или «Проводное подключение Ethernet 2».

Эта опция прекращает любые активные соединения TCP / IP во всех сетевых адаптерах и освобождает эти IP-адреса для использования другими приложениями. «ipconfig /release» может использоваться с конкретными именами подключений Windows. В этом случае команда будет влиять только на указанные соединения и не все. Команда принимает либо имена полного соединения, либо имена подстановочных знаков. Примеры:

  • ipconfig /release «Local Area Connection 1»
  • ipconfig /release *Local*

ipconfig /renew —  Обновление адресов всех адаптеров

Этот параметр повторно устанавливает соединения TCP / IP во всех сетевых адаптерах. Как и в случае с опцией release, ipconfig /renew принимает необязательный спецификатор имени соединения.

ipconfig /renew EL* — Обновление адресов для всех подключений, имя которых начинается с «EL»

Параметры Both /renew и /release работают только на клиентах, настроенных для динамической (DHCP) адресации.

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

ipconfig / showclassid, ipconfig / setclassid

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

ipconfig /displaydns, ipconfig /flushdns

Эти параметры обеспечивают доступ к локальному кэшу DNS, который поддерживает Windows. Параметр / displaydns печатает содержимое кеша, а параметр / flushdns стирает содержимое.

Этот DNS-кеш содержит список удаленных имен серверов и IP-адресов (если есть), которым они соответствуют. Записи в этом кеше поступают из DNS-запросов, которые возникают при попытке посетить веб-сайты, названные FTP-серверами и другими удаленными узлами. Windows использует этот кеш для повышения производительности Internet Explorer и других веб-приложений.

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

  • IP — адрес в веб — сайт, сервер электронной почты или других изменений сервера (редкое явление). Имя и адрес этого сайта обычно остаются в вашем кеше в течение 24 часов после вашего последнего посещения. Возможно, вам понадобится очистить кеш, чтобы получить доступ к серверу раньше.
  • Веб-сайт или другой сервер был отключен, когда вы последний раз его посещали (надеюсь, это редкое событие), но с тех пор он вернулся в Интернет. Кэш обычно будет хранить запись о том, что сервер отключен в течение 5 минут после вашего последнего посещения. Возможно, вам понадобится очистить кеш, чтобы получить доступ к серверу раньше.

ipconfig /registerdns

Подобно приведенным выше параметрам, этот параметр обновляет параметры DNS на компьютере под управлением Windows. Однако вместо простого доступа к локальному кешу DNS этот параметр инициирует обмен данными с DNS-сервером (и сервером DHCP) для повторной регистрации с ними.

Эта опция полезна при устранении неполадок , связанных с соединение с провайдером Интернет — услуг, таких как неспособность получить динамический IP — адрес или невозможность подключения к ISP сервера DNS

Подобно параметрам / release и / renew, / registerdns необязательно обновляет имена определенных адаптеров. Если параметр имени не указан, / registerdns обновляет все адаптеры.

ipconfig против winipcfg

До Windows 2000 Microsoft Windows поддерживала утилиту  winipcfg вместо ipconfig. По сравнению с ipconfig winipcfg предоставил аналогичную информацию о IP-адресе, но через примитивный графический интерфейс пользователя, а не в командной строке.

Как вывести на экран командную строку

Как упоминалось выше, для ввода команды ipconfig all необходима такая утилита, как командная строка на Windows. На других операционных системах, таких как UNIX-подобные, эта команда также присутствует, но об этом позже.

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

  1. Самый обыденный для заядлого пользователя Windows алгоритм действий по открыванию командной строки будет через меню «Пуск». Для этого войдите в данное меню и проследуйте в раздел «Все программы». Там, крутя колесико мыши вниз, отыщите папку под названием «Стандартные» и уже в ней найдите ту самую утилиту «Командная строка».

  2. Второй способ намного быстрее первого, но, возможно, далекие от компьютера люди его не поймут. Но все же откройте меню «Пуск» и на боковой панели найдите строку «Выполнить». После нажатия появится окошко в левом нижнем углу рабочего стола. В поле для ввода напишите «cmd.exe» и нажмите «ОК».

  3. Если по каким-то причинам вы не нашли «Выполнить», то третий способ специально для вас. Вместо безуспешных поисков просто нажмите сочетание горячих клавиш Win + R и заветное окошко появится. Ну, а дальше вы знаете, что делать, ввести в строку «cmd.exe» и нажать «ОК».

Командная строка открыта, а это значит, что можно приступать к рассматриванию команд ipconfig all, ping и tracert.

IPConfig

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

Введя эту команду, перед вами появится вся информация об IP-адресе ПК, а также будут затронуты DHCP, DNS, шлюз и маска подсети. Конечно, вы можете задать резонный вопрос, а что делать с этой информацией дальше? Да, после ввода команды ipconfig или же ipconfig all проблемы сами собой не устранятся. Однако, вы сможете понять, в чем именно заключается проблема.

Например, если на экране показывает, что шлюз у вас 0.0.0.0, то знайте, что проблема с маршрутизатором.

Примеры использования ipconfig.exe

ipconfig – отобразить базовые сетевые настройки для всех сетевых адаптеров, присутствующих в системе.
ipconfig /all – отобразить подробную информацию о настройках всех сетевых адаптеров, присутствующих в системе.
ipconfig /renew “Подключение по локальной сети 2” – обновить сетевые настройки, полученные от DHCP – сервера только для сетевого подключения с именем “Подключение по локальной сети 2”.
ipconfig /release *локальной* – обновить сетевые настройки, полученные от DHCP – сервера для всех сетевых подключений, в имени которых присутствует строка “локальной”
ipconfig /release “Подключение по локальной сети 2” – освободить сетевые настройки, полученные от DHCP – сервера только для сетевого подключения с именем ” Подключение по локальной сети 2″.
Если для параметров release и renew не указано имя адаптера, то аренда IP-адреса для всех адаптеров, для которых существуют привязки к TCP/IP, будет освобождена или обновлена.
ipconfig /dysplaydns – вывести на экран содержимое кэш службы разрешения имен DNS ( службы DNS-клиент).
ipconfig /flushdns – очистить содержимое кэш службы разрешения имен DNS
ipconfig /showclassid “Подключение по локальной сети” – отобразить все допустимые для этого сетевого подключения идентификаторы классов DHCP.
ipconfig /setclassid “Local Area Connection” TEST – установить для адаптера с именем “Local Area Connection” идентификатор класса DHCP “TEST”.
ipconfig /setclassid6 “Local Area Connection” TEST – установить для адаптера с именем “Local Area Connection” идентификатор класса DHCPv6 “TEST”.
Если для параметра setclassid или setclassid6 не указан идентификатор класса, то существующий идентификатор класса будет удален.
Наиболее часто используется команда ipconfig /all, позволяющая получить подробные сведения о сетевых настройках. Отображаются сведения о настройке протокола IP и о настройках сетевых адаптеров. Пример сведений о настройках IP:
Настройка протокола IP для Windows
Имя компьютера . . . . . . . . . : comp0
Основной DNS-суффикс . . . . . . :
Тип узла. . . . . . . . . . . . . : Смешанный
IP-маршрутизация включена . . . . : Нет
WINS-прокси включен . . . . . . . : Нет
В некоторых версиях утилиты ipconfig.exe вместо типа узла “Смешанный”, может отбражаться “Гибридный” (Hybrid). Тип узла определяет алгоритм определения и регистрации имен Netbios. С точки зрения протокола NETBIOS, узлы могут быть следующих типов:
b-node (b) – Использует только широковещательную регистрацию и просмотр имен.
p-node (p) – использует только соединения точка-точка для просмотра и регистрации имен.
m-node (m) и h-node (h) – смешанные типы, использующие как широковещательные сообщения, так и обращение к серверам имен.
Компьютеры под управлением Windows представляют собой узлы h-node или узлы смешанного типа, использующие WINS (NBNS) сервер для регистрации и просмотра имен, и используют широковещательные запросы, если сервер не доступен.
Пример отображаемой конфигурации сетевого адаптера :
Ethernet adapter Подключение по локальной сети : – имя сетевого подключения, присвоенное операционной системой.
DNS-суффикс подключения . . . . . : – DNS-суффикс из настроек сетевого подключения
Описание. . . . . . . . . . . . . : Realtek 8139d Adapter #2 – название сетевого адаптера..
Физический адрес. . . . . . . . . : 00-14-02-7B-ED-67 – MAC- адрес данного адаптера.
DHCP включен. . . . . . . . . . . : Да – признак использования DHCP для конфигурирования сетевого адаптера
Автонастройка включена. . . . . . : Да – признак автоматической настройки параметров адаптера с использованием функции автоматического назначения адресов (APIPA) при отсутствии сервера DHCP. Данный режим позволяет назначить приватный немаршрутизируемый IP-адрес сетевому адаптеру и определяется значением ключа реестра
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTcpipParametersInterfacesGUID адаптераIPAutoconfigurationEnabled
Значение 0 (тип DWORD) параметра IPAutoconfigurationEnabled отключает APIPA. Если значение этого параметра равно 1 , или параметр отсутствует в реестре, APIPA активируется. Обычно, в системах семейства Windows данный режим активирован.
Автонастройка IPv4-адреса . . . . : 169.254.254.18(Основной) – автоматически полученный локальный адрес, если используется APIPA. На практике, такое значение IP-адреса означает, что сервер DHCP недоступен.
Локальный IPv6-адрес канала . . . : fe80::7c22:e7f8:3a71:8249%16(Основной) – локальный IPv6 адрес, если используется адресация IPv6
IPv4-адрес. . . . . . . . . . . . : 10.10.11.77(Основной) – используемый для данного адаптера IPv4 – адрес.
Маска подсети . . . . . . . . . . : 255.255.224.0 – маска подсети.
Аренда получена. . . . . . . . . . : 2 марта 2015 г. 22:44:48 – дата и время получения сетевой конфигурации от сервера DHCP
Срок а
ренды истекает. . . . . . . . . . : 3 марта 2015 г. 2:31:27
– срок истечения аренды сетевых настроек. Определяется сервером DHCP.
Основной шлюз. . . . . . . . . : 10.10.11.1 – IP – адрес маршрутизатора, используемого в качестве шлюза по умолчанию.
Код класса DHCPv4. . . . . . . . . . : TEST – код класса DHCP, если он существует.
DHCP-сервер. . . . . . . . . . . : 10.10.11.11 – – IP-адрес DHCP-сервера, от которого получена сетевая конфигурация.
Следующие 2 параметра (идентификатор участников DHCP – DUID и идентификатор арендованного адреса IAID) присутствуют при автоматическом конфигурировании настроек протокола IPv6 . В крупных сетях могут присутствовать несколько серверов DHCPv6. При автоматическом конфигурировании сетевого адаптера, все они получают от клиента специальный запрос DHCP REQUEST. Каждый из них проверяет, ему ли был направлен запрос. Сервер не приступает к обработке пакетов с DUID, отличающимся от его собственного. При совпадении DUID, сервер помечает адрес как присвоенный и возвращает ответ DHCP REPLY. На этом обработка запроса завершается.
IAID – это специальный идентификатор арендуемого IPv6-адреса длиной 4 байта. Клиенту выделяется адрес на время, определенное сервером (срок аренды). Когда предпочитаемый срок действия адреса заканчивается, клиент отправляет серверу пакет DHCP RENEW с запросом на продление этого срока. В сообщение включается идентификатор IAID, код которого также хранится в базе данных DHCP сервера. Если сервер готов продлить срок действия адреса, он отправляет ответ DHCP REPLY и клиент получает возможность использования арендованного адреса без повторного получения настроек.
IAID DHCPv6 . . . . . . . . . . . : 234890384 – идентификатор арендованного адреса IAID
DUID клиента DHCPv6 . . . . . . . : 00-01-00-01-14-E2-78-C0-00-0C-1E-7C-29-E3 – идентификатор участников DHCP
DNS-серверы. . . . . . . . . . . : 94.25.128.74
                                                94.25.208.74
– адреса DNS – серверов, используемых для разрешения имен в IP-адреса узлов.
NetBios через TCP/IP. . . . . . . . : Включен – режим использования NetBios через протокол TCP/IP.
Вывод команды IPCONFIG, как правило, не помещается на экране, поэтому для постраничного отображения результатов можно использовать команду more в цепочке с командой IPCONFIG:
ipconfig /al | more
При необходимости, результаты можно записать в текстовый файл, используя перенаправление вывода:
ipconfig /all > C:ipconfig-all.txt – записать результаты в текстовый файл ipconfig-all.txt на диске C:. Для русскоязычных версий Windows нужно учитывать, что результаты выполнения команды, записанные в текстовый файл, представлены в DOS-кодировке (OEM 866) и для их просмотра потребуется программное обеспечение, позволяющее просматривать текст в данной кодировке, например редактор файлового менеджера Far или средства для преобразования текста в кодировку Windows (CP 1251) ( например, утилита iconv. Можно обойтись, например, стандартным средством Microsoft Word ( winword.exe ), используя командный файл следующего содержания:
ipconfig /all > %TEMP%ipconfig-all.txt
start “winword” winword.exe %TEMP%ipconfig-all.txt

Первая команда записывает результаты выполнения IPCONFIG в текстовый файл ipconfig-all.txt каталога временных файлов, путь которого определяется значением переменной TEMP, а вторая – открывает этот файл с помощью winword.exe. При открытии, приложение Microsoft Word выдаст запрос на преобразование файла и предложит выбрать исходную кодировку текста – Кириллица (DOS) .
Также можно воспользоваться стандартным буфером обмена Windows, записав в него вывод результатов команды IPCONFIG. Для этого нужно выполнить ее в цепочке с командой clip
ipconfig /all | clip
Результат выполнения команды будет записан в буфер обмена Windows, после чего в используемом редакторе (Блокнот, Wordpad, Word, OpenOffice Writer) можно выполнить вставку из буфера обмена (нажмите Ctrl+V или Shift+Insert)

Видео – Работа с утилитой IPCONFIG