С консолью работают системы a unix b linux c windows

Блог про космос, программирование и всякое разное.

Jan 10, 2010 · Comments

КонсольUnixWindows

Довольно интересно сравнить, как устроена консоль в Windows и Unix. Вот упрощенная схема как это работает в Unix:

Консоль в Unix

Посимвольный ввод и вывод через stdin/stdout – единственный канал общения с консолью (терминалом), доступный приложению. Терминалом, при этом, может быть все что угодно – файл на диске, виртуальный терминал в X Window, труба (pipe) из другого приложения и т.д. Между терминалом и приложением передается текст. Нажатия нетекстовых клавиш (клавиш управления курсором, функциональных клавиш и т.п.) транслируются терминалом в управляющие последовательности/ESC коды (см. Ecma-35). С помощью аналогичных управляющих последовательностей приложение может посылать терминалу команды вроде «перейти на следующую строку».

Собственно говоря, полностью корректная отработка ESC кодов, — это весьма сложная задача ввиду сильнейшего разнообразия различных видов терминалов. Библиотека ncurses, к примеру, содержит описания более чем полутора тысяч разных терминальных конфигураций. Неразберихи добавляет и необходимость согласования кодировок текста, которым обмениваются терминал и приложение. К счастью, и разнообразие терминалов, и разнообразие кодировок постепенно сходит на нет – «железные» терминалы почти вымерли; Unicode шагает по планете.

Архитектура консольной подсистемы в Windows во многом отличается от Unix:

Консоль в Windows

Вместо символьного ввода-вывода, приложение общается с консолью через вызовы удаленных функций (RPC). Клавиатурный ввод передается в виде последовательности нажатий клавиш, а не в виде последовательности символов, полученной в результате нажатия этих клавиш. В результате в Windows приложение может, например, отличить Ctrl+Shift+Left от Shift+Left. С другой стороны, в Windows приложение обязано знать тип и раскладку клавиатуры, выбранные в терминале, что в случае удаленного терминала превращается в проблему.

Для приложений, которым не интересны подробности нажатий клавиш, нажатия клавиш транслируется в традиционный символьный ввод-вывод. К примеру, ReadConsole глубоко внутри вызывает ReadConsoleInput. На Unix приходится решать обратную задачу – из потока символов выделять нажатия клавиш.

Стандартный ввод-вывод отделен от собственно консоли. В результате, перенаправление стандартного ввода-вывода не перехватывает весь консольный ввод-вывод. Попробуйте на досуге перенаправить вывод Far Manager в файл. А затем посмотрите, что получится если сделать то же самое с Midnight Commander.

Продолжение, надеюсь, следует…

Содержание

  1. Различия между терминалом Mac и командной строкой Windows с точки зрения возможностей команд?
  2. 1 ответ 1
  3. Разница между текстовым режимом Linux и командной строкой Windows
  4. 5 ответов
  5. Как командная строка Mac сравнивается с Linux?
  6. 6 ответов 6
  7. Что такое командная строка? Как ее запустить на Windows, Linux и Mac?
  8. Как командная строка Mac сравнивается с Linux?

Различия между терминалом Mac и командной строкой Windows с точки зрения возможностей команд?

Как новичок в изучении использования Mac Terminal, который выполняет команды UNIX, есть различия с командной строкой Windows, которая основана на системных командах MS-DOS.

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

Кроме того, какая командная строка лучше всего подходит для работы разработчиков и программистов?

1 ответ 1

Оба пытаются решить одни и те же проблемы.

Основным отличием оболочек CMD и * nix является экосистема, в которой они выросли. CMD/BAT родом из MS-DOS, в то время как csh, ksh, bash и т.д. Все начинали с определенной разновидности unix/linux.

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

В последние годы Microsoft вложила значительные средства в PowerShell (еще один интерфейс командной строки, который поставляется со всеми текущими версиями Windows), и теперь она достаточно развита и имеет гораздо больше функций, чем CMD/BAT.

Это действительно сводится к тому, что у вас есть доступ и вам удобно использовать на данной платформе. Вы даже можете запустить bash в Windows 10 сейчас!

Источник

Разница между текстовым режимом Linux и командной строкой Windows

5 ответов

Оба они основаны на одной идее и называются интерфейсами командной строки (см. Википедию). Они работают с одними и теми же принципалами, просто используя разные ключевые слова для выполнения одинаковых команд. Однако следует отметить, что команды, хотя и имеют схожие названия, могут не выполнять ту же самую функцию. Это просто абстракции функций нижнего уровня операционной системы. Подобно тому, как люди могут объяснять похожие идеи, используя разные слова и фразы, то же самое применимо и в этой ситуации. Для справки вот список команд Bash: http://ss64.com/bash/ и тот же веб-сайт. есть команды Windows.

Возможно, вы захотите начать здесь со своего чтения.

Разница в операционной системе. Командная строка (cmd) и эмулятор терминала (оболочка linux bash или аналогичный) представляют собой текстовые интерфейсы для операционной системы. Они позволяют управлять файловой системой и запускать программы без графического интерфейса.

Хотя внешне они в чем-то похожи, эти два интерфейса командной строки имеют разное происхождение:

Командная строка Windows в значительной степени основана на командной строке MS-DOS / PC-DOS, которая, в свою очередь, была основана на командном процессоре консоли CP / M. Интерфейс CP / M CCP сам был основан на более ранней операционной системе под названием RSTS.

Оболочки Linux восходят к исходной оболочке Томпсона UNIX; оболочка Томпсона заимствована из оболочки Multics (откуда возник термин « оболочка »).

Источник

Как командная строка Mac сравнивается с Linux?

Знание того, что Mac построен на Unix, заставляет задуматься, а не сладкое ли это место между ними. Но мне интересно: насколько похожа командная строка Mac на bash Linux? Могу ли я разобраться с использованием сценариев vim, bash, git и т.д.? Будут ли общие команды, такие как изменение каталогов, другими? Кто-нибудь знает онлайн ресурс «сравни и сравнивай»?

6 ответов 6

Это очень похоже, но если вы знаете о каких-либо различиях между BSD и Linux, ожидайте, что Mac будет работать с BSD.

bash сам по себе является небольшим подмножеством «командной строки». Чтобы быть полезным, вы обычно используете некоторые другие распространенные утилиты UNIX, такие как awk, или ls, или cut. Из-за своей истории (она произошла от BSD, а не от Linux или SystemV), версии утилит для Mac будут отличаться от тех, которые вы привыкли использовать в Linux (также как версии GNU). Они будут иметь по крайней мере некоторые различия флагов, а также некоторые отличия вывода и функциональности по сравнению с Linux Сценарии, которые их используют, должны быть изменены для компенсации. BSD awk против GNU gawk довольно сильно отличается. ИЛИ вы можете получить эти версии GNU из macports и установить свой PATH так, чтобы это были значения по умолчанию (по сравнению со встроенными версиями).

MacOS X также имеет несколько новых интересных инструментов. open это хорошо, он откроет объект, как если бы вы дважды щелкнули по нему. defaults позволяют вам установить некоторые настройки, некоторые даже не на панелях настроек GUI. textutil может быть полезен, а say может быть веселым.

Источник

Что такое командная строка? Как ее запустить на Windows, Linux и Mac?

myphoto

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

2019 12 15 09 00 03 5df5a1c458919

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

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

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

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

Мои уроки по работе с командной строкой здесь.

Командная строка есть во всех операционных системах, будь то Windows, Linux, Mac OS и др.

Давайте посмотрим, как можно запустить ее различных операционных системах.

Windows

Есть несколько вариантов, как это можно сделать.

2019 12 15 08 57 44 5df5a14803e9e

Нажмите сочетание клавиш «Win + R» и наберите команду cmd.

1576066835267 5df0df1593534

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

1576066835495 5df0df1792c95

Mac OS.

На компьютерах операционной системы Apple вызов командной строки выполняется с помощью системной утилиты Terminal.

1576066834234 5df0df1369806

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

Linux.

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

Мои уроки по работе с командной строкой здесь.

Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:

Или зарегистрируйтесь через социальные сети:

Источник

Как командная строка Mac сравнивается с Linux?

Это очень похоже, но если вы знаете о каких-либо различиях между BSD и Linux, ожидайте, что Mac будет работать с BSD.

bash сам по себе является небольшим подмножеством «командной строки». Чтобы быть полезным, вы обычно используете другие распространенные утилиты UNIX, такие как awk, ls или cut. Из-за своей истории (она произошла от BSD, а не от Linux или SystemV), версии утилит для Mac будут отличаться от тех, которые вы привыкли использовать в Linux (также как версии GNU). Они будут иметь по крайней мере некоторые различия флагов, а также некоторые отличия вывода и функциональности по сравнению с Linux. Сценарии, которые их используют, должны быть изменены для компенсации. BSD awk против GNU gawk довольно сильно отличается. ИЛИ, вы можете получить эти версии GNU из macports или home brew и установить свой PATH так, чтобы это были значения по умолчанию (по сравнению со встроенными версиями).

MacOS X также имеет несколько новых интересных инструментов. open хорошо, он откроет объект, как если бы вы дважды щелкнули по нему. defaults позволяет вам установить некоторые настройки, некоторые даже не в панелях настроек GUI. textutil может быть полезным и say может быть весело.

Функциональность командной строки в Mac и Linux действительно схожи, поскольку OS X имеет вид UNIX (называемый Darwin) под GUI, который вы видите.

Оболочкой по умолчанию в OS X является bash, поэтому, если вы с ней знакомы, вы все настроите правильно.

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

Основным источником различий являются:

Тем не менее, есть также много классных хаков, доступных из командной строки в OS X (например, open commnand). Есть много предыдущих тем и сообщений в блоге там с дополнительной информацией.

Источник

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Операционные системы

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

Задолго до появления Windows, в 70-х годах двадцатого века на свет появилась операционная система Unix, предназначенная для работы на мейнфреймах. Изначальным названием системы было UNICS (Uniplexed Information and Computing Service), но в итоге ее стали называть Unix. В те времена не существовало персональных компьютеров. Компьютеры отождествлялись с мейнфреймами — большими машинами, занимающими целые этажи зданий.

Кстати, именно для написания Unix создавался язык Си

Мейнфрейм

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

Мейнфрейм

Unix оказалась очень удачной операционной системой, но была платной и закрытой (нельзя посмотреть исходный код). На ее основе создавались новые системы, которые со временем теряли обратную совместимость. Другими словами, приходилось писать программу под каждую операционную систему, которую необходимо поддерживать. Такая ситуация усложняла и удорожала жизнь всем настолько сильно, что был принят стандарт POSIX (Portable Operating System Interface for UNIX). Сейчас это не один стандарт, а целое семейство стандартов. Оно описывает работу ключевых компонентов операционной системы и способов взаимодействия с ними из программ, написанных на Си.

В те же времена начали активно развиваться сети и сначала появились прообразы интернета, а затем и сам интернет. Компьютеры становились меньше, а серверов — все больше. В 1991 году студент Линус Торвальдс решил написать свою собственную свободную операционную систему, которая совместима со стандартом POSIX. Благодаря интернету Линус смог собрать большое сообщество разработчиков, которые довольно быстро выпустили рабочую операционную систему под названием Linux и, самое главное, выложили в открытый доступ ее исходный код. С тех пор популярность Linux для серверного окружения быстро росла.

Но сам Linux — это только ядро операционной системы, оно непригодно для использования без сопутствующих программ. К тому моменту, когда Линус начал свою разработку, уже существовал проект GNU (рекурсивный акроним — GNU’s Not UNIX), основанный Ричардом Столлманом, в рамках которого были разработаны и постоянно развивались свободные программы, составляющие основной инструментарий для разработки программ на языке Си: текстовый редактор Emacs, компилятор языка Си gcc (GNU Compiler Collection или набор компиляторов GNU), командная оболочка bash (bourne again shell или «возрожденный» shell), библиотека важнейших функций для программ на Си libc. Все эти программы были написаны для операционных систем, похожих на Unix. Поэтому в них использовались стандартные для UNIX системные вызовы — POSIX. Благодаря этому Linux сразу начал поставляться с GNU-утилитами, например, архиваторами или командной оболочкой bash, которую мы начнем изучать в этом курсе. Удивительный факт для людей, знакомых только с Windows, состоит в том, что Linux (как и Unix) не имеет графической оболочки. Это не значит, что ее нельзя добавить. Можно! Более того, существует много разных опциональных графических оболочек.

History Of OS

Сейчас Linux не используется в чистом виде. Вместо этого конечные пользователи имеют дело с дистрибутивами. Дистрибутив, кроме Linux и GNU-программ, включает в себя утилиты для установки и настройки самого Linux, поддержку регулярного обновления самого ядра и его окружения. В остальном внутри работает тот же Linux. Количество дистрибутивов огромно, но некоторые из них особо популярны, одни делаются энтузиастами, за другими стоят большие компании. Самыми популярными дистрибутивами являются Ubuntu и ее разновидности: например, Ubuntu Server оптимизирован для работы на серверах, а Xubuntu — это разновидность Ubuntu с графической оболочкой, подходящей для маломощных компьютеров. Ubuntu полностью бесплатна.

Ubuntu

Windows, в отличие от Unix-подобных операционных систем, изначально создавалась для однопользовательского режима и никогда не пыталась быть совместимой с POSIX. Ей удалось захватить рынок персональных компьютеров, но на серверах она почти не встречается, даже несмотря на наличие Windows Server. Во-первых, она стоит денег, во-вторых, Windows не совместима с POSIX от слова «совсем». И хотя в ней есть командная строка, которая известна как cmd.exe, ее функциональность оставляет желать лучшего, а опыт работы с ней никак не поможет при работе в Linux-окружении, с которым все равно придется столкнуться.

Как и в случае изучения иностранных языков, мы рекомендуем осваивать Linux и его командную строку через полное погружение. Для этого надо установить Ubuntu основной системой или активировать ее внутри Windows. Если вы счастливый обладатель Mac, то можно ничего не делать. Операционная система macOS основана на Unix и является даже более POSIX-совместимой, чем Linux. У нее прекрасная командная строка и инструментарий для работы.

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


Самостоятельная работа

Если у вас Windows, то настройте окружение в соответствии с этой статьёй.

При добавлении пароля для учётной записи Ubuntu никаких символов, даже привычных «*», отображаться не будет. Однако не стоит переживать: эта особенность терминала Linux продиктована соображениями безопасности.


Дополнительные материалы

  1. Установка Ubuntu основной системой
  2. Установка Ubuntu на Windows
  3. Книги по операционным системам

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

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

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

Соответствие консольных команд Windows и Linux

Описание Команда CMD Windows Команда Linux
Вызов справочной системы HELP apropos, man, whatis
Вызов командного интерпретатора (оболочки) CMD bash, csh, sh
Очистка экрана CLS clear, reset
Вывод сообщения на экран ECHO echo
Пауза в работе PAUSE sleep
Настройка параметров терминала MODE stty
Установка значений переменных окружения (указание путей к каталогам) PATH, SET, SETx env, set
Изменение системной даты DATE date
Изменение системного времени TIME date
Выход из командной строки EXIT exit
Работа с файлами и каталогами
Отображение списка файлов и каталогов DIR dir, ls
Создание каталога MKDIR mkdir
Удаление каталога RMDIR rmdir
Удаление файла DEL, ERASE rm
Переход в другой каталог CD cd
Копирование файлов или каталогов COPY, XCOPY cp
Переименование файла REN, RENAME mv
Перемещение файлов MOVE mv
Поиск файла WHERE find, locate
Вывод на экран содержимого файла TYPE, MORE cat, less, more
Сравнение содержимого двух файлов COMP, FC cmp, diff, diff3, sdiff
Сортировка строк в текстовом файле SORT sort
Изменение атрибутов файла ATTRIB chmod
Создание символьной ссылки на файл или каталог MKLINK ln
Резервное копирование данных ROBOCOPY cpio, tar
Вызов текстового редактора EDIT (нет в Windows Vista и старше) vi
Работа с томами и разделами
Создание разделов FDISK fdisk
Управление разделами DISKPART parted, partx
Форматирование диска, создание файловой системы DISKPART, FORMAT mformat, mkfs
Проверка файловой системы CHKDSK fsck
Управление системой.
Отобразить список процессов TASKLIST, QUERY PROCESS ps
Уничтожить процесс TASKKILL kill, killall
Перезагрузить компьютер SHUTDOWN shutdown, reboot
Выключить компьютер SHUTDOWN shutdown, halt
Выполнить команду от имени другого пользователя RUNAS sudo
Отобразить имя компьютера HOSTNAME hostname
Пользователи и группы.
Создать нового пользователя NET USER useradd
Изменить параметры пользователя NET USER usermod
Изменить пароль пользователя NET USER passwd
Удалить пользователя NET USER userdel
Создать новую группу пользователей NET GROUP groupadd
Изменить параметры группы NET GROUP groupmod
Удалить группу NET GROUP groupdel
Отобразить список активных пользователей QUERY USER users
Работа с сетью.
Работа с таблицей соответствия IP и MAC адресов ARP arp arp
Конфигурация протокола IP IPCONFIG, NETSH ifconfig, ip
Работа с таблицей маршрутизации ROUTE route
Опрос узла по протоколу ICMP PING ping
Клиент Telnet TELNET telnet
Работа с DNS-сервером в интерактивном режиме NSLOOKUP dig, nslookup
Трассировка маршрута к удаленному узлу TRACERT traceroute
Отобразить статистику сетевых соединений NETSTAT netstat

Строчные и заглавные буковки для команд командной строки Виндовс воспринимаются одинаково, ECHO и echo — будет интерпретировано как одна и та же команда. При работе в командной строке Линукс соблюдение регистра символов строго обязательно.

Этот урок переехал в мой гитхаб: https://github.com/codedokode/pasta/blob/master/soft/cli.md

Ниже — старая, неактуальная версия.


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

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

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

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

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

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

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

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

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

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

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

Линукс и мак

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

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

Буфер обмена

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подсказка

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

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

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

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

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

Виды команд

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

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

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

В windows: echo %PATH%

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

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

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

Печалька.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://archive-ipq-co.narod.ru

Как настроить полноценное окружение разработчика, привыкшего к Linux и Mac OS X.

Традиционно считается, что разработчики (в особенности связанные с бэкенд-разработкой) предпочитают использовать unix-like-системы. Причиной тому было немало. Ситуация начала несколько меняться в 2017 году — именно тогда вышел первый стабильный релиз Windows Subsystem for Linux (также известен под более ранним названием BashOnWindows), который дал разработчикам то, чего они так давно ждали, — полноценный Linux в качестве приложения в Windows!

Но не всё оказалось так просто — лишь к концу 2018 года WSL стало возможно использовать полноценно, при этом способ отнюдь не очевиден. О нём и пойдёт речь.

Конечная цель

Для начала пара слов о том, что такое вообще Windows Subsystem for Linux, он же WSL в сокращённом варианте. Это прослойка между ядром Windows и приложениями для Linux, которая позволяет преобразовывать системные вызовы к ядру Linux в вызовы к ядру Windows. Благодаря тому, что виртуализация практически отсутствует, такое решение работает быстрее традиционной виртуализации, где эмулируется целый компьютер, как это происходит в Oracle VirtualBox и VMWare Player.

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

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

В статье будет рассматриваться именно настройка среды разработки в WSL — для примера возьмём небольшой проект, написанный на Python/Angular/Go (а почему бы и нет?), разрабатываемый в Visual Studio Code. Однако описанные рекомендации в целом подойдут для любого другого редактора или IDE.

Установка для Windows 10 x64

Важный момент: WSL официально поддерживается только в Windows 10 x64, начиная с Anniversary Update. Если у вас иная версия — альтернативное решение представлено в следующем разделе.

  • Включить поддержку Windows Subsystem for Unix, открыв PowerShell от администратора и выполнив команду:

PS C:Windowssystem32> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

  • Если у вас установлена десктопная редакция Windows 10: зайти в Microsoft Store и установить необходимый вам дистрибутив. Для нашего эксперимента будет использована Ubuntu 18.04 LTS. Затем вы сможете запустить ваш дистрибутив через меню «Пуск».
  • Если у вас установлена иная редакция Windows, без Microsoft Store (например, Windows 10 LTSC либо Windows Server): в PowerShell выполнить следующие команды:

PS C:Windowssystem32> cd ~
PS C:Userssomebody> Rename-Item .Ubuntu.appx .Ubuntu.zip
PS C:Userssomebody> Expand-Archive .Ubuntu.zip .Ubuntu
PS C:Userssomebody> cd .Ubuntu
PS C:Userssomebody> .ubuntu1804.exe

При первом запуске необходимо задать ваши логин и пароль.

vagrant up

Далее уже вам откроется консоль с Ubuntu.

Установка для 32-битных редакций Windows 10 и Windows 7, 8 и 8.1

К сожалению, на этих редакциях WSL не поддерживается. Но мы можем без особого труда заменить его Vagrant — мощной утилитой для конфигурирования виртуальных машин. Vagrant работает поверх других сред виртуализации: VirtualBox, VMWare Player или Microsoft Hyper-V. Поэтому стоит понимать, что такой вариант будет по умолчанию медленнее, нежели WSL. А в случае с VirtualBox значительно медленнее из-за файловой системы vboxsf.

Установить Vagrant можно с официального сайта. Также вам потребуется VirtualBox и Git. После этого создайте папку для вашей виртуальной машины, в ней создайте файл Vagrantfile со следующим содержимым:

Vagrant.configure(«2») do |config|
config.vm.box = «bento/ubuntu-18.04»
config.vm.synced_folder «c:/», «/windows»
# Необходимо указать для каждого порта, который вы хотите расшарить из ВМ или в ВМ
config.vm.network :forwarded_port, host: 5432, guest: 5432
config.vm.provider «virtualbox» do |vb|
vb.memory = 2048
end
end

После чего в том же PowerShell или cmd выполните команду:

vagrant up

После загрузки, настройки и запуска виртуальной машины вы попадёте в консоль Linux. Ура!

Устанавливаем всякие скучные вещи

Разворачиваем наше окружение под Python/JS/Go.

:~$ sudo apt update
:~$ sudo apt install build-essential
:~$ sudo apt install -y git nodejs golang python-dev libreadline-dev libbz2-dev libssl-dev libsqlite3-dev libxslt1-dev libxml2-dev libffi-dev
:~$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
:~$ # Инсталлятор попросит вас добавить загрузку pyenv в ~/.bashrc
:~$ source ~/.bashrc
:~$ pyenv install 3.7.2
:~$ pyenv global 3.7.2

Быстро проверяем работоспособность версий и, собственно, версии:

:~$ nodejs -v
v8.10.0
:~$ go version
go version go1.10.4 linux/amd64
:~$ python -V
Python 3.7.2
:~$

Неужели всё уже работает?

Конечно нет.

Сразу стоит отметить важный факт: ни Visual Studio Code, ни Sublime Text, ни даже ваша любимая IDE ничего не знают о существовании WSL. Из коробки более-менее с ним умеют работать только продукты от JetBrains. Лично мне Visual Studio Code по настройке, скорости работы нравится куда больше (но это текстовый редактор, о чём не стоит забывать).

И единственное, что вы можете сделать в Visual Studio Code, установленной на Windows, — подключить себе WSL вместо стандартного PowerShell в терминале. Это делается в User Settings:

{
«terminal.integrated.shell.windows»: «C:\Windows\System32\wsl.exe»,
# Добавьте сюда иные настройки по вашему усмотрению
}

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

  • Установите MobaXterm и Cmder. Конечно, вы можете по своему выбору заменить их на альтернативные приложения. MobaXterm — мощный SSH-терминал со встроенным X-сервером, что позволяет ему рендерить приложения, которые запускаются на удалённом X-сервере (в данном случае — внутри WSL). Cmder — локальный эмулятор терминала с поддержкой PowerShell, cmd, bash, WSL и не только, с нормальным копипастом.
  • Запустите Cmder. По умолчанию он запустит cmd, но при двойном клике на нижнюю панель покажет окно, где есть возможные варианты.
  • Нам нужен тот вариант, что отмечен как {WSL::bash}. Он запустит в новой вкладке консоль внутри WSL.
  • Запустите MobaXterm. Он сразу же увидит WSL, установленную в системе. Для запуска X-сервера нажмите выделенную на скриншоте кнопку.
  • Настроим WSL для запуска GUI-приложений. Для этого откройте файл ~/.bashrc и допишите в него:

export DISPLAY=:0

  • После этого выполните команду source ~/.bashrc для применения изменений.
  • Не обязательно, но желательно установить XFCE (или другой DE на ваш вкус), а также поставить шрифты, иначе от внешнего вида VS Code у вас, возможно, вытекут глаза. По крайней мере, люди жалуются.

:~$ sudo apt install -y xfce4
:~$ sudo apt install -y fonts-noto fonts-noto-hinted fonts-noto-mono fonts-noto-unhinted

  • Скачайте установщик Visual Studio Code с официального сайта.
  • Установите зависимости и сам VS Code:

:~$ sudo apt install libgtk2.0-0 libxss1 libasound2
:~$ sudo dpkg -i <code deb file>
:~$ sudo apt install -f

  • Запустите VS Code при помощи команды code.

Вот теперь работает :) Ещё более кратко и по сути расписано вот тут.

Однако до совершенства есть ещё один штрих.

{

«window.titleBarStyle»: «native»,

}

Добавьте приведённую выше настройку в User Settings. В противном случае окно VS Code не будет ресайзиться.

А ты ещё докажи, что работает

Разворачивается оно стандартно для подобного рода проектов.

# You are on a project root
:~$ python -m venv env/
:~$ source env/bin/activate
:~$ pip install -r requirements.txt
:~$ cd frontend
:~$ npm install
:~$ ng build outDir=../backend/microblog/static
:~$ cd ../backend
:~$ python manage.py runserver

Отличия в настройке между Vagrant и WSL

Единственное существенное различие в контексте статьи — необходимость пробрасывать порты в хостовую файловую систему. По умолчанию Vagrant поднимает SSH-туннель на порту 2222 — именно туда вам будет необходимо логиниться из Cmder и добавить соответствующее соединение в MobaXterm.

Более подробно об использовании Vagrant с MobaXterm можно прочитать по ссылке.

Итоги

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

A terminal is at the end of an electric wire, a shell is the home of a turtle, tty is a strange abbreviation and a console is a kind of cabinet.

Well, etymologically speaking, anyway.

In unix terminology, the short answer is that

  • terminal = tty = text input/output environment
  • console = physical terminal
  • shell = command line interpreter

Console, terminal and tty are closely related. Originally, they meant a piece of equipment through which you could interact with a computer: in the early days of unix, that meant a teleprinter-style device resembling a typewriter, sometimes called a teletypewriter, or “tty” in shorthand. The name “terminal” came from the electronic point of view, and the name “console” from the furniture point of view. Very early in unix history, electronic keyboards and displays became the norm for terminals.

In unix terminology, a tty is a particular kind of device file which implements a number of additional commands (ioctls) beyond read and write. In its most common meaning, terminal is synonymous with tty. Some ttys are provided by the kernel on behalf of a hardware device, for example with the input coming from the keyboard and the output going to a text mode screen, or with the input and output transmitted over a serial line. Other ttys, sometimes called pseudo-ttys, are provided (through a thin kernel layer) by programs called terminal emulators, such as Xterm (running in the X Window System), Screen (which provides a layer of isolation between a program and another terminal), Ssh (which connects a terminal on one machine with programs on another machine), Expect (for scripting terminal interactions), etc.

The word terminal can also have a more traditional meaning of a device through which one interacts with a computer, typically with a keyboard and display. For example an X terminal is a kind of thin client, a special-purpose computer whose only purpose is to drive a keyboard, display, mouse and occasionally other human interaction peripherals, with the actual applications running on another, more powerful computer.

A console is generally a terminal in the physical sense that is by some definition the primary terminal directly connected to a machine. The console appears to the operating system as a (kernel-implemented) tty. On some systems, such as Linux and FreeBSD, the console appears as several ttys (special key combinations switch between these ttys); just to confuse matters, the name given to each particular tty can be “console”, ”virtual console”, ”virtual terminal”, and other variations.

See also Why is a Virtual Terminal “virtual”, and what/why/where is the “real” Terminal?.


A shell is the primary interface that users see when they log in, whose primary purpose is to start other programs. (I don’t know whether the original metaphor is that the shell is the home environment for the user, or that the shell is what other programs are running in.)

In unix circles, shell has specialized to mean a command-line shell, centered around entering the name of the application one wants to start, followed by the names of files or other objects that the application should act on, and pressing the Enter key. Other types of environments don’t use the word “shell”; for example, window systems involve “window managers” and “desktop environments”, not a “shell”.

There are many different unix shells.
Popular shells for interactive use include Bash (the default on most Linux installations), zsh (which emphasizes power and customizability) and fish (which emphasizes simplicity).

Command-line shells include flow control constructs to combine commands. In addition to typing commands at an interactive prompt, users can write scripts. The most common shells have a common syntax based on the Bourne_shell. When discussing “shell programming”, the shell is almost always implied to be a Bourne-style shell. Some shells that are often used for scripting but lack advanced interactive features include the Korn shell (ksh) and many ash variants. Pretty much any Unix-like system has a Bourne-style shell installed as /bin/sh, usually ash, ksh or bash.

In unix system administration, a user’s shell is the program that is invoked when they log in. Normal user accounts have a command-line shell, but users with restricted access may have a restricted shell or some other specific command (e.g. for file-transfer-only accounts).


The division of labor between the terminal and the shell is not completely obvious. Here are their main tasks.

  • Input: the terminal converts keys into control sequences (e.g. Lefte[D). The shell converts control sequences into commands (e.g. e[Dbackward-char).
  • Line editing, input history and completion are provided by the shell.
    • The terminal may provide its own line editing, history and completion instead, and only send a line to the shell when it’s ready to be executed. The only common terminal that operates in this way is M-x shell in Emacs.
  • Output: the shell emits instructions such as “display foo”, “switch the foreground color to green”, “move the cursor to the next line”, etc. The terminal acts on these instructions.
  • The prompt is purely a shell concept.
  • The shell never sees the output of the commands it runs (unless redirected). Output history (scrollback) is purely a terminal concept.
  • Inter-application copy-paste is provided by the terminal (usually with the mouse or key sequences such as Ctrl+Shift+V or Shift+Insert). The shell may have its own internal copy-paste mechanism as well (e.g. Meta+W and Ctrl+Y).
  • Job control (launching programs in the background and managing them) is mostly performed by the shell. However, it’s the terminal that handles key combinations like Ctrl+C to kill the foreground job and Ctrl+Z to suspend it.

Понравилась статья? Поделить с друзьями:
  • Саймон р microsoft windows 2000 api энциклопедия программиста
  • С какой флешки можно установить windows 10
  • Саботер не запускается на windows 10
  • Сам включился тестовый режим в windows 10
  • С какой скоростью записывать образ windows