Вопрос 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
Иногда путь длинный, поэтому есть способ обрезать главный каталог с пути? Как будто прыжок в одну сторону?
Обновление: чтобы снова не вводить весь путь.
Хм ... вы могли бы изменить ~ на / следующим образом:
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$
Хм ... вы могли бы изменить ~ на / следующим образом:
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$
Хм ... вы могли бы изменить ~ на / следующим образом:
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$
В качестве альтернативы тому, что предложила 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
В качестве альтернативы тому, что предложила 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
В качестве альтернативы тому, что предложила 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