Вопрос о новичке: Скажем, я нахожусь в:
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
перемещаться)
Вы могли исказить его, если это - что-то, что Вы часто делаете, из-за наличия многих подобных путей в доме и корне
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$
Как альтернатива тому, с чем предложенным 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