Как перейти с Linux на Windows

Обновлено: 21.11.2024

В командной строке Windows (powershell и cmd) при нажатии клавиши Esc в строке все, что вы ввели в командной строке, удаляется.

Я обнаружил, что нажатие клавиши Esc в командной строке bash ничего не дает. Нажатие Esc, а затем Backspace удаляет слово, но это нужно делать для каждого слова.

Я постепенно изучаю Bash и иногда набираю что-то глупое в середине строки и чувствую, что лучше снова печатать с нуля. Для этого нажмите клавишу Backspace — единственный способ, который я нашел до сих пор.

Я знаю о команде очистки и сочетании клавиш Ctrl-L, но я не говорю об очистке всего терминала. Просто линия.

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

4 ответа 4

Вы хотите kill-whole-line , но это не связано по умолчанию в bash. back-kill-line ( Ctrl X Backspace ) и unix-line-discard ( Ctrl U ) стирают от текущей точки до начала строки, поэтому просто перейдите в конец строки и используйте любой из них.

Вы правы, это ни к чему не привязано. Я только что узнал, что с помощью bind -P . Я предполагаю, что Ctrl-U, а затем Ctrl-Y — единственный вариант.

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

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

Вы можете использовать Ctrl + C, чтобы отказаться от того, что вы вводили, и получить пустую новую командную строку, см. Неправильно ли использовать CTRL + C для возврата в командную строку?.

Ctrl+a — переход в начало строки, Ctrl+k — удаление в конец строки

Сначала попробуйте ^U, в большинстве реализаций режима редактирования командной строки Emacs он уже удаляет всю строку. В тех случаях, когда удаляется только левая часть курсора (например, строка чтения GNU), после этого нажмите ^K.

Чтобы немного расширить ответ Игнасио Васкес-Абрамса, вы можете получить (почти) Windows-подобное поведение от клавиши Esc в bash, привязав строку kill-whole-line к Esc с помощью следующей команды

Если вы добавите строку в файл ~/.inputrc, привязка будет сохраняться между сеансами.

Обратите внимание, однако, что это очень нестандартно, поскольку bash фактически использует клавишу Esc в качестве еще одной изменяющей клавиши (например, непостоянный Alt или Ctrl). Если вы посмотрите на список существующих привязок клавиш (с помощью bind -P ), вы, вероятно, увидите несколько команд, привязанных к комбинациям клавиш, которые начинаются с «\e» (например,

который настраивает комбинацию Esc + B для перемещения курсора назад к самому последнему началу слова — почти как Ctrl + ← , за исключением того, что вам нужно продолжать отпускать Esc (а также B , конечно), если вы хотите сделать это более одного раза подряд).

И это объясняет, почему я сказал, что поведение, которое вы получаете, почти похоже на Windows: когда вы нажимаете Esc , bash проверяет, используете ли вы его в сочетании с другой клавишей; поэтому, если вы привяжете его к kill-whole-line , будет небольшая задержка между нажатием (или, скорее, отпусканием) Esc и bash, очищающим строку для вас.

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

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

Если включена подсистема Windows для Linux, вы можете переключиться на оболочку Linux, запустив bash в командной строке. Можно ли пойти другим путем и переключиться обратно на командную строку?

5 ответов 5

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

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

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

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

поэтому мне нужно использовать cmd.exe для использования командной строки o

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

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

В сборке 14951 добавлена ​​возможность выполнять файлы .exe в Bash. Многие исполняемые файлы Windows находятся в каталоге /mnt/c/Windows/System32.Имена команд Bash различают прописные и строчные буквы и включают суффикс ".exe".

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

Результаты: C:\Windows\System32\bash.exe

Bash – это консольное приложение Windows. Вот почему вы можете запустить его из командной строки.

Наоборот, это не работает. Хотя Bash имеет доступ файловой системы к C:\Windows\System32\cmd.exe (командная строка Windows), это не двоичное приложение, которое он понимает.

Полагаю, вы могли бы придумать обходной путь. Вы можете включить telnet/SSH в Windows и войти таким образом, чтобы получить командную строку Windows.

Крис Хоффман

Крис Хоффман
Главный редактор

Крис Хоффман – главный редактор How-To Geek. Он писал о технологиях более десяти лет и два года был обозревателем PCWorld. Крис писал для The New York Times, давал интервью в качестве эксперта по технологиям на телевизионных станциях, таких как NBC 6 в Майами, и освещал свою работу в таких новостных агентствах, как BBC. С 2011 года Крис написал более 2000 статей, которые были прочитаны почти миллиард раз — и это только здесь, в How-To Geek. Подробнее.

Среды командной строки, такие как командная строка Windows и PowerShell, используют пробелы для разделения команд и аргументов, но имена файлов и папок также могут содержать пробелы. Чтобы указать путь к файлу с пробелом внутри, вам нужно «экранировать» его.

Командная строка 101: почему нужно экранировать пробелы

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

Например, допустим, у вас есть текстовый файл, содержимое которого вы хотите просмотреть. Вы можете сделать это с помощью команды type. Предполагая, что текстовый файл находится в C:\Test\File.txt , следующая команда в командной строке покажет его содержимое:

Отлично. А что, если у вас есть тот же файл в папке C:\Test Folder\Test File.txt? Если вы попробуете выполнить приведенную ниже команду, она не сработает — мешают пробелы в пути к файлу.

Командная строка считает, что вы пытаетесь найти файл с именем C:\Test, и сообщает, что «не удается найти указанный путь».

Три способа избежать пробелов в Windows

Существует три различных способа экранирования путей к файлам в Windows:

  • Заключая путь (или его части) в двойные кавычки ( ").
  • Добавляя знак вставки (^) перед каждым пробелом. (Это работает только в командной строке/CMD и, похоже, работает не со всеми командами.)
  • Добавляя знак серьезности ( ` ) перед каждым пробелом. (Это работает только в PowerShell, но работает всегда.)

Мы покажем вам, как использовать каждый метод.

Заключить путь в кавычки ( ” )

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

При желании части пути можно заключить в кавычки. Например, предположим, что у вас есть файл с именем File.txt в этой папке. Вы можете запустить следующее:

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

Это решение работает как в традиционной среде командной строки (CMD), так и в Windows PowerShell.

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

В командной строке символ вставки (^) позволяет избежать пробелов — теоретически. Просто добавьте его перед каждым пробелом в имени файла.(Вы найдете этот символ в числовом ряду на клавиатуре. Чтобы ввести символ вставки, нажмите Shift+6.)

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

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

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

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

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

PowerShell: использование символа серьезного ударения ( ` )

PowerShell использует символ серьезного ударения ( ` ) в качестве управляющего символа. Просто добавьте его перед каждым пробелом в имени файла. (Вы найдете этот символ над клавишей Tab и под клавишей Esc на клавиатуре.)

Каждый символ серьезного ударения указывает PowerShell экранировать следующий символ.

Обратите внимание, что это работает только в среде PowerShell. Вам придется использовать символ вставки в командной строке.

Если вы знакомы с UNIX-подобными операционными системами, такими как Linux и macOS, возможно, вы привыкли использовать символ обратной косой черты ( \ ) перед пробелом, чтобы избежать его. Windows использует это для обычных путей к файлам, поэтому это не работает — символы вставки (^) и серьезного ударения (`) — это версия обратной косой черты Windows, в зависимости от того, какую оболочку командной строки вы используете.

  • › Как использовать getopts для анализа параметров сценария оболочки Linux
  • › Почему прозрачные чехлы для телефонов желтеют?
  • › Что означает XD и как вы его используете?
  • › Как установить Google Play Маркет в Windows 11
  • › Худшее, что есть в телефонах Samsung, — это программное обеспечение Samsung.
  • › Как восстановить метки панели задач в Windows 11
  • ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)

Telnet — это одна из самых полезных сетевых команд Linux, которая используется для проверки того, прослушивает ли сервер определенный порт, и работает ли он или нет, но ее немного сложно использовать, особенно если вы не используете его ежедневно. Хотя я использовал telnet раньше, когда я использую его после долгого времени, я фактически забыл, как закрыть терминал telnet и как выйти из него. Я испробовал все возможные команды Linux, которые я могу придумать, которые используются для закрытия, отмены команды или выхода из редактора VIM в UNIX, например, Ctrl + C, quit, exit, q! и даже escape-символ '^]', только чтобы понять, что ничего не работает. Может показаться глупым, что опытный разработчик не может даже выйти из telnet-терминала, но это реальная история.

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

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

Мне наконец удалось выйти из командной строки telnet после некоторой борьбы, проб и ошибок, но я был удивлен, насколько сложно использовать одну из 10 самых популярных сетевых команд в UNIX.

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

Давайте рассмотрим точную команду для закрытия терминала telnet в Linux и Windows 10. Тем не менее, продолжайте обращаться к хорошему курсу команд UNIX, например «Основы командной строки Linux», чтобы не забывать о таких важных командах, как telnet.

Как закрыть терминал telnet в Linux и Windows

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

Ниже вы можете видеть, что я пробовал все, что мог, чтобы выйти из окон telnet, но ничего не получалось, но если бы я обратил внимание на сообщение telnet, что "символ Escape is '^]'" , я бы, наверное, раньше смог выйти из телнет-терминала.

Хитрость здесь в том, что вам нужно сначала ввести escape-символ, например. '^]', то есть 'Ctrl + ]', а затем введите quit, чтобы закрыть терминал telnet в Linux или любой системе UNIX.

Я ожидаю, что одна и та же команда будет работать на Windows и Mac, так как telnet распространен повсеместно, и вы найдете команду telnet на хосте операционной системы, включая большую тройку, например. Linux, Windows и Mac. Посетите эти лучшие веб-сайты, чтобы БЕСПЛАТНО изучить Linux, чтобы узнать больше об основных командах, таких как команда telnet в UNIX/Linux.

Вот точные шаги для завершения сеанса telnet в Linux и Windows:

<р>1. Откройте приглашение telnet, удерживая нажатой клавишу «Ctrl» и нажав клавишу «]». (подсказка: Microsoft Telnet>)
2. Введите выйти.
3. Нажмите клавишу «Ввод».


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

В мире электронной торговли и протоколов FIX telnet – отличный инструмент для диагностики проблем с подключением к сеансу FIX, как описано в этой статье.


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

Читайте также: