Как отредактировать самый высокий родительский каталог пути при навигации

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

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

2 ответа

Хм... Вы могли измениться ~ кому: / как это...

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

(Замена echo с cd перемещаться)

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

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

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

Или сделайте простую функцию удара (добавьте к ~/.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
ответ дан 3 December 2019 в 06:30

Как альтернатива тому, с чем предложенным 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

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

$ 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
ответ дан 3 December 2019 в 06:30

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

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