Как вставить «\» перед каждым знаком «/» в URL-адресе?

Позвольте мне попробовать... Я буду использовать Unix и Linux более или менее синонимично. Если я имею в виду что-то историческое, что предшествовало существованию Linux, я обычно буду писать «Unix», а если я говорю о чем-то более позднем или о чем-то специфичном для Linux-разновидности Unix, я обычно буду писать «Linux». ".

Оболочка

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

В наиболее распространенных оболочках используется метод, называемый «командной строкой», который заключается в отправке пользователю какого-либо приглашения, ожидании ввода пользователем текстовой команды и последующем выполнении этой команды. Но есть оболочки на основе меню и даже графические оболочки (, такие как Windows File Explorer ), хотя ни один человек -, уважающий Unix, никогда не назовет такую ​​вещь «оболочкой».

В Unix, если кто-то называет что-то «оболочкой», он почти наверняка имеет в виду некоторую форму интерфейса командной строки, как я только что описал. И очень странно в мире Unix называть что-либо «оболочкой», если она не взаимодействует с пользователем, используя модель tty, которую я описываю далее.

Телетайп

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

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

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

Старые бумажные -tty на основе принтеров были быстро вытеснены видео tty. На тех, конечно, нет рулона бумаги. А ведь можно перезаписать любой символ на экране. Но вместо того, чтобы предоставлять программам какой-то абстрактный «экранный» интерфейс, ожидается, что программы отправят специальные потоки символов, называемые управляющими последовательностями, которые выполняют множество задач. Обычно существует абстрактная вещь, называемая «курсор», которую можно перемещать по экрану, и любой отправленный символ заменяет то, что находится под курсором, а курсор перемещается на один символ дальше. Часто вы также можете изменить цвет символа, который должен быть напечатан, с помощью управляющих последовательностей.

Существуют «стеклянные tty», которые не следуют этой модели и, следовательно, плохо обрабатываются в мире Unix. Семейство видеотерминалов IBM 3270 относится к этой категории.

То, что пользователи Linux/Unix обычно называют «окном оболочки», представляет собой эмуляцию стеклянного терминала с использованием графического пользовательского интерфейса. Внутри программы, работающие внутри окна оболочки, взаимодействуют с виртуальным tty-устройством, которое иногда называют псевдо-терминалом -tty или псевдо-терминалом -(, также известным как pty ).

Терминал

Терминал — это просто место, где компьютер и человек должны взаимодействовать. Терминалы могут быть полностью графическими и никоим образом не следовать модели tty,даже если программа может использовать их возможности для имитации этого. Все фактические физические ttys (glass или иным образом )являются терминалами.

Консоль

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

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

Существуют способы использования Linux через так называемую «последовательную консоль», которая представляет собой консоль, подключенную к компьютеру через последовательный порт, такой как USB-порт (, или, на некоторых очень маленьких и/или очень старых компьютерах, какой-то порт RS -232 )и довольно строго следует старой модели телетайпа.

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

-1
19.05.2021, 09:24
3 ответа

Предполагая, что оболочка подобнаbash:

URL_1='https://my/sample/url'
URL_2=${URL_1//\//\\\/}

Здесь используется подстановка ${variable//pattern/replacement}, доступная в некоторых оболочках, с URL_1в качестве переменной, строкой \/, т. е. экранированной косой чертой, в качестве шаблона и \\\/, т. е. экранированной обратной косой чертой, за которой следует скрытая косая черта в качестве замещающего текста. Подстановка заменяет каждое совпадение шаблона замещающим текстом, а приведенный выше код сохраняет результат в переменной URL_2.

Тестирование:

$ URL_1='https://my/sample/url'
$ URL_2=${URL_1//\//\\\/}
$ printf '%s\n' "$URL_2"
https:\/\/my\/sample\/url

Вы также можете использовать

URL_2=${URL_1//'/'/'\/'}

(т. е. используйте одинарные кавычки вместо экранирования обратной косой черты ).

1
28.07.2021, 11:31

Попробуйте

$  sed 's%/%\\/%g' < <(echo https://my.domain.com/blabla/temp.htm)
https:\/\/my.domain.com\/blabla\/temp.htm 
1
28.07.2021, 11:31

можно решить так-

user@node-01:~> echo https://my/sample/url >./test1.txt
user@node-01:~> cat test1.txt 
https://my/sample/url
user@node-01:~> sed 's/\//\\\//g' test1.txt 
https:\/\/my\/sample\/url

Если вы хотите заменить встроенный, используйте sed-i Ваше здоровье!

0
28.07.2021, 11:31

Теги

Похожие вопросы