1

Я пытаюсь открыть файл с помощью Firefox через командную строку. Я запускаю команду;

firefox -remote "openurl(file://`pwd`/filename.html)"

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

1 ответ1

1

Ну, это неуклюже, но вы могли бы напечатать

sh -c 'firefox -remote "openurl(file://`pwd`/$1)"'  -  Pea вкладка Pea

или же

sh -c 'firefox -remote "openurl(file://$1/$2)"'  -  `pwd`  Pea Tab Pea

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

PS Вы можете оставить одну из косых черт после file: потому что pwd предоставит одну.


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

Как / почему это работает?

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

        $PWD/Sco Tab

а также

        `pwd`/Sco Tab

но нет

        $(pwd)/Sco Tab

Пойди разберись.  YMMV.  В любом случае, он не может справиться

"openurl(file://`pwd`/Sco Tab

потому что это не может быть интерпретировано как имя файла или путь (если bash не может проанализировать "openurl(… вызов, который он не может).

Хитрость заключается в том, чтобы заставить его выполнить автозаполнение изолированного имени файла, а затем склеить части.  Единственный способ установить $1 , $2 и т.д. Для вашей интерактивной оболочки - это ввести команду, такую как set foo bar или set -- foo bar , и это обычно не делается.  Нам нужен sh в командной строке, чтобы мы могли установить его $1 , $2 и т.д., Поместив значения в его командную строку.  Таким образом, мы используем bash для автозаполнения, который предоставляет параметры командной строки для sh , а затем мы используем команду sh

'firefox -remote "openurl(file://$1/$2)"'

интерпретировать $1 и $2 , а затем «склеить кусочки».


Процесс написания этого заставил меня реализовать еще один вариант:

set  `pwd`  Sco Tab (сделать автозаполнение) Enter

с последующим

firefox -remote "openurl(file:/$1/$2)" Enter

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

Вы должны быть в состоянии объединить две вышеупомянутые строки в одну:

set `pwd` Sco Tab (сделать автозаполнение) ; firefox -remote "openurl(file:/$1/$2)" Enter

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .