Как отредактировать старшую родительскую директорию пути во время навигации

Вопрос Noob: Скажем, я нахожусь:

user@mj:~/var/www/html/mag/something/else/forever$

И я хочу быть на:

user@mj:/var/www/html/mag/something/else/forever$

Учесть ~

Я могу добиться этого с помощью:

user@mj:~/var/www/html/mag/something/else/forever$ cd /var/www/html/mag/something/else/forever

Иногда путь длинный, поэтому есть способ обрезать главный каталог с пути? Как будто прыжок в одну сторону?

Обновление: чтобы снова не вводить весь путь.

1
задан 20 April 2018 в 16:08

6 ответов

Хм ... вы могли бы изменить ~ на / следующим образом:

echo $(pwd | sed "s#^$HOME##")

(Заменить echo с помощью cd для перемещения)

[d2 ] Вы могли бы псевдоним, если это то, что вы часто делаете, из-за того, что у вас много похожих путей в доме и в корне

alias cdroot='cd $(pwd | sed "s#^$HOME##")'

Добавьте к концу своего ~/.bashrc, чтобы использовать в любое время ...

Или выполните простую функцию bash (добавьте в ~/.bashrc), чтобы проверить, находимся ли мы в ~ и переключаемся от корня к дому и обратно:

function cdroot() {
[[ $PWD =~ $HOME* ]] && cd $(pwd | sed "s#^$HOME##") ||
cd $(pwd | sed "s#^#$HOME#")
}

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

zanna@toaster:~/var/log/apt$ cdroot
zanna@toaster:/var/log/apt$ cdroot
zanna@toaster:~/var/log/apt$ 
4
ответ дан 22 May 2018 в 20:03
  • 1
    Как насчет условия, чтобы он переключался между /home и /? – Ravexina 29 July 2017 в 12:46
  • 2
    'Но у этого есть больше символов, чем' Правда. Я пропустил этот пример. Иногда пути действительно длинны. Поэтому я хотел знать, есть ли возможность отредактировать часть пути. – MJoraid 29 July 2017 в 12:48
  • 3
    @Ravexina Я даже не на своей машине, и моя мама говорит, чтобы я перестала быть антиобщественной. Я напишу функцию позже, если у вас еще нет XD – Zanna 29 July 2017 в 12:49
  • 4
    @MJoraid мой ответ должен отлично работать для любых путей, где все элементы, кроме ~ и / – Zanna 29 July 2017 в 12:50
  • 5
    Еще одна вещь, я снова пропустил свой пример. ... / html / html / ... был типом. Вот почему, путайте с путями и получите тип. – MJoraid 29 July 2017 в 12:58

Хм ... вы могли бы изменить ~ на / следующим образом:

echo $(pwd | sed "s#^$HOME##")

(Заменить echo с помощью cd для перемещения)

Вы могли бы псевдоним, если это то, что вы часто делаете, из-за того, что у вас много похожих путей в доме и в корне

alias cdroot='cd $(pwd | sed "s#^$HOME##")'

Добавьте к концу своего ~/.bashrc, чтобы использовать в любое время ...

Или выполните простую функцию bash (добавьте в ~/.bashrc), чтобы проверить, находимся ли мы в ~ и переключаемся от корня к дому и обратно:

function cdroot() { [[ $PWD =~ $HOME* ]] && cd $(pwd | sed "s#^$HOME##") || cd $(pwd | sed "s#^#$HOME#") }

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

zanna@toaster:~/var/log/apt$ cdroot zanna@toaster:/var/log/apt$ cdroot zanna@toaster:~/var/log/apt$
4
ответ дан 18 July 2018 в 09:27

Хм ... вы могли бы изменить ~ на / следующим образом:

echo $(pwd | sed "s#^$HOME##")

(Заменить echo с помощью cd для перемещения)

Вы могли бы псевдоним, если это то, что вы часто делаете, из-за того, что у вас много похожих путей в доме и в корне

alias cdroot='cd $(pwd | sed "s#^$HOME##")'

Добавьте к концу своего ~/.bashrc, чтобы использовать в любое время ...

Или выполните простую функцию bash (добавьте в ~/.bashrc), чтобы проверить, находимся ли мы в ~ и переключаемся от корня к дому и обратно:

function cdroot() { [[ $PWD =~ $HOME* ]] && cd $(pwd | sed "s#^$HOME##") || cd $(pwd | sed "s#^#$HOME#") }

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

zanna@toaster:~/var/log/apt$ cdroot zanna@toaster:/var/log/apt$ cdroot zanna@toaster:~/var/log/apt$
4
ответ дан 24 July 2018 в 19:20

В качестве альтернативы тому, что предложила Zanna, можно добиться такого же поведения с cd "${PWD##*$HOME}", чтобы обрезать часть ~.

Вот демо:

$ mkdir -p var/lib
$ pwd
/home/xieerqi
$ cd var/lib
$ pwd
/home/xieerqi/var/lib
$ echo  ${PWD##*$HOME}                                             
/var/lib
$ cd  "${PWD##*$HOME}"                                             
$ pwd
/var/lib

Это подход может быть объединен с другими подстановками параметров, чтобы проверить, является ли переменная нулевой, то есть мы были в папке ~ и удалены ~ с нужного пути, поэтому переменная имеет значение null, и поэтому функция должна перейти к /:

$ function trimcd(){ var="${PWD##*$HOME}" ; var=${var:-/} ; cd "$var";}        
$ pwd
/home/xieerqi
$ trimcd
$ pwd
/

С одним дополнением мы можем сделать его даже переключением между корневым и домашним каталогом:

$ function trimcd(){ var="${PWD##*$HOME}" ;[ "$var" = "/" ] && var="$HOME";var=${var:-/} ; cd "$var";}                                               
$ pwd  
/
$ trimcd
$ pwd
/home/xieerqi
$ trimcd
$ pwd
/
$ cd ~/var/lib
$ trimcd
$ pwd
/var/lib
2
ответ дан 22 May 2018 в 20:03
  • 1
    Это кажется лучше, легче по ресурсам – Zanna 29 July 2017 в 13:07
  • 2
    @Zanna, а также реализована переключение между корнем и домом и по-прежнему работает с обрезками. Я сейчас ухожу (^ _ ^) / – Sergiy Kolodyazhnyy 29 July 2017 в 13:09
  • 3
    @ СергийКолодяжный +1 оценил. – MJoraid 29 July 2017 в 19:21

В качестве альтернативы тому, что предложила Zanna, можно добиться такого же поведения с cd "${PWD##*$HOME}", чтобы обрезать часть ~.

Вот демо:

$ mkdir -p var/lib $ pwd /home/xieerqi $ cd var/lib $ pwd /home/xieerqi/var/lib $ echo ${PWD##*$HOME} /var/lib $ cd "${PWD##*$HOME}" $ pwd /var/lib

Это подход может быть объединен с другими подстановками параметров, чтобы проверить, является ли переменная нулевой, то есть мы были в папке ~ и удалены ~ с нужного пути, поэтому переменная имеет значение null, и поэтому функция должна перейти к /:

$ function trimcd(){ var="${PWD##*$HOME}" ; var=${var:-/} ; cd "$var";} $ pwd /home/xieerqi $ trimcd $ pwd /

С одним дополнением мы можем сделать его даже переключением между корневым и домашним каталогом:

$ function trimcd(){ var="${PWD##*$HOME}" ;[ "$var" = "/" ] && var="$HOME";var=${var:-/} ; cd "$var";} $ pwd / $ trimcd $ pwd /home/xieerqi $ trimcd $ pwd / $ cd ~/var/lib $ trimcd $ pwd /var/lib
2
ответ дан 18 July 2018 в 09:27

В качестве альтернативы тому, что предложила Zanna, можно добиться такого же поведения с cd "${PWD##*$HOME}", чтобы обрезать часть ~.

Вот демо:

$ mkdir -p var/lib $ pwd /home/xieerqi $ cd var/lib $ pwd /home/xieerqi/var/lib $ echo ${PWD##*$HOME} /var/lib $ cd "${PWD##*$HOME}" $ pwd /var/lib

Это подход может быть объединен с другими подстановками параметров, чтобы проверить, является ли переменная нулевой, то есть мы были в папке ~ и удалены ~ с нужного пути, поэтому переменная имеет значение null, и поэтому функция должна перейти к /:

$ function trimcd(){ var="${PWD##*$HOME}" ; var=${var:-/} ; cd "$var";} $ pwd /home/xieerqi $ trimcd $ pwd /

С одним дополнением мы можем сделать его даже переключением между корневым и домашним каталогом:

$ function trimcd(){ var="${PWD##*$HOME}" ;[ "$var" = "/" ] && var="$HOME";var=${var:-/} ; cd "$var";} $ pwd / $ trimcd $ pwd /home/xieerqi $ trimcd $ pwd / $ cd ~/var/lib $ trimcd $ pwd /var/lib
2
ответ дан 24 July 2018 в 19:20
  • 1
    Это кажется лучше, легче по ресурсам – Zanna 29 July 2017 в 13:07
  • 2
    @Zanna, а также реализована переключение между корнем и домом и по-прежнему работает с обрезками. Я сейчас ухожу (^ _ ^) / – Sergiy Kolodyazhnyy 29 July 2017 в 13:09
  • 3
    @ СергийКолодяжный +1 оценил. – Mohammed Joraid 29 July 2017 в 19:21

Другие вопросы по тегам:

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