Как выйти из файлового обозревателя Ranger обратно в командную строку, но сохранить текущий каталог?

7223
the_velour_fog

Я использую Ranger Terminal Explorer изнутри терминала Linux.
Скажем, я запускаю из командной строки в домашнем каталоге и запускаю рейнджер

user@/home/user $ ranger 

Рейнджер открывается ..... и в рамках программы Рейнджер я исследую:

/media/ubuntu/sdf675d7sf5sdfs7/some_directory 

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

user@/home/user $ 

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

user@/media/ubuntu/sdf675d7sf5sdfs7/some_directory $ 
17

6 ответов на вопрос

20
Gombai Sándor

В соответствии с его руководством

--choosedir=targetfile  Allows you to pick a directory with ranger. When you exit ranger, it will write the last visited directory into targetfile. 

Так что все, что вам нужно сделать, это создать псевдоним:

alias ranger='ranger --choosedir=$HOME/.rangerdir; LASTDIR=`cat $HOME/.rangerdir`; cd "$LASTDIR"' 

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

wow thats довольно умно, мне никогда не приходило в голову, что вы можете ввести команду для программы, завершить ее с помощью `;` и затем указать больше команд после точки с запятой, которые - я предполагаю, выполняются в точке, где вы закрываете `ranger` , Спасибо! the_velour_fog 8 лет назад 2
Попробуйте вместо этого использовать `.rangerdir`, чтобы скрыть его. Или удалите его в конце, `rm -d $ HOME / rangerdir`. Mateen Ulhaq 6 лет назад 0
Это здорово, но если я правильно понимаю, это будет означать, что у вас такое поведение постоянно. Было бы неплохо, если бы был способ иметь возможность выхода в текущий каталог рейнджеров ИЛИ каталог, в котором вы находились, когда запускали рейнджер. neverfox 6 лет назад 0
neverfox После того, как вы создадите псевдоним, вы можете выбрать каталог, в который вы попадете. Выбор может быть сделан до вызова двоичного файла или после его завершения. Gombai Sándor 6 лет назад 0
Спасибо за это потрясающее решение! Я использую оболочку fish, поэтому для установки псевдонима я использовал `fish_config` и добавил аббревиатуру для` ranger --choposedir = "$ HOME / .rangerdir"; cd (cat $ HOME / .rangerdir) ` rockzombie2 5 лет назад 0
15
Ciro Santilli 新疆改造中心 六四事件 法轮功

S

Если вы нажмете S, откроется новая оболочка в текущем каталоге.

Затем, если вы нажмете Ctrl + Dна снаряд, он возвращается к ranger.

Этот обходной путь часто достаточно хорош.

3
dduxx

В дополнение к ответу Гомбая Шандора, я предлагаю немного изменить псевдоним:

alias ranger='ranger --choosedir=$HOME/.rangerdir; LASTDIR=`cat $HOME/.rangerdir`; cd "$LASTDIR"' 

Изменив "$ Home / rangerdir" на "$ Home / .rangerdir", вы сделаете файл, созданный псевдонимом, скрытым. просто делает так, чтобы не раздражать домашнюю папку. это не имеет никакого функционального значения к тому, как это работает.

3
Ogino Knaus

Я нашел более простое решение. Когда вы устанавливаете Ranger, он помещает скрипт в папку bin, который, если он будет выполнен, запустит программу. Но если вы получите его, с

$ source ranger

он запустит средство проверки и поместит вас в последнюю посещенную папку при выходе.

так что если вы хотите это поведение по умолчанию, просто сделайте

$ alias ranger = 'источник рейнджер'

или даже лучше поместите это в свой файл .bashrc.

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

1
garzai

Спасибо за Gombai за вдохновение, но на Ubuntu 14.04 LTS я обнаружил, что решение не совсем работает. Слегка изменив его и сохранив в качестве псевдонима в моем .bashrc, отлично сработало следующее (после создания rangerdirфайла):

alias ranger='ranger --choosedir=$HOME/rangerdir;cd "$(cat $HOME/rangerdir)"'

Следующая статья на askubuntu помогла мне, когда я пытался выяснить, почему разные решения, которые я пробовал, не работали: https://askubuntu.com/questions/404141/why-cant-i-pipe-into-cd

0
girvain

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

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