Не уверен, что это возможно, но я помню, что с давних времен, используя AIX, можно было изменить мой путь, просто сказав, какую часть пути нужно заменить чем-то другим. Например, скажем, у меня есть два пути:
/etc/application-2.0.1/options/default
и
/etc/application-1.0.8/options/default
, чтобы я мог переключиться из папки 1 в 2 с помощью команды, подобной
cd /2.0 .1 / 1.0.8 /
, который заменит в пути строку 2.0.1
- 1.0.8
. Очевидно, это не работает для меня сейчас. Но есть ли способ сделать это?
Если вы используете zsh в качестве оболочки, вы можете просто ввести cd 1.0.8 2.0.1
.
Это должно работать в ударе над человечностью 10.04: cd ${PWD/old/new}
. В основном это заменяет первое вхождение old
в Вашем существующем рабочем каталоге с new
. 2 примера ниже.
ing02741@hoster:~$ cd /home/ing02741/Videos/
ing02741@hoster:~/Videos$ cd ${PWD/ing02741/koushik}
ing02741@hoster:/home/koushik/Videos$
ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1 dir-v2.2.2 dir-v3.0.7
ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1/ind dir-v2.2.2/ind dir-v3.0.7/ind
ing02741@hoster:~/src/cdtest$ cd dir-v1.0.1/ind/
ing02741@hoster:~/src/cdtest/dir-v1.0.1/ind$ cd ${PWD/1.0.1/2.2.2}
ing02741@hoster:~/src/cdtest/dir-v2.2.2/ind$
Одалживая на идее sepp2k выше, Вы могли сделать функцию как это
function mycd { cd ${PWD/$1/$2} }
и затем используйте что-то как mycd 2.0.1 1.0.8
переключаться.
Я использовал (и пропустил) эту функцию сам. Это зависит от того, какой аромат и / или выпуск * nix вы используете. Если вы используете bash, вот удобный способ расширить встроенный компакт-диск, чтобы включить эту функцию. Поместите это в ваш .bashrc (или для проверки вставьте его в оболочку bash и нажмите Enter).
function cd() { if [ $# -eq 2 ]; then builtin cd ${PWD/$1/$2}; else builtin cd $1; fi }
Вы, вероятно, помните расширение истории. Я не знаю, что было доступно в вашей оболочке в AIX, но один из способов сделать это в bash - ^2.0.1^1.0.8
.
Расширение истории менее полезно с такими оболочками, как bash и zsh, которые имеют мощное редактирование командной строки. Вы можете использовать клавиши со стрелками, чтобы вызвать предыдущие команды, и Alt kbd> + . Kbd>, чтобы вставить последнее слово предыдущей команды (дважды нажмите ее, чтобы получить команду до этого и т. Д. ).
Если вы фанат vi, вы можете включить режим vi в вашей оболочке (например, bash set -o vi) и использовать командный режим vi ...
Или вы можете сделать сумасшедшее расширение истории (протестировано в zsh, возможно, и в bash):
$ cd /etc/application-1.0.8/options/default
cd: no such file or directory: /etc/application-1.0.8/options/default
$ !!:s/1.0.8/2.0.1/
cd /etc/application-2.0.1/options/default
cd: no such file or directory: /etc/application-2.0.1/options/default
cd `pwd | sed 's/2\.0\.1/1\.0\.8/'`
Однако это не очень красиво. Вы можете немного подправить его, поместив его в функцию:
function mycd { cd `pwd | sed s$1` }
И затем вызывая его следующим образом:
mycd '/2\.0\.1/1.0.8/'
Вы все еще должны избегать точек, но Я уверен, что это можно обойти и немного подумав.
^2.0.1^1.0.8
Приведенная выше команда поменяет 2.0.1 на 1.0.8 в последней команде, ее работа в bash
Не уверен насчет AIX, но я помню это как старый трюк с оболочкой Korn для ящиков Solaris, которые я использовал для администрирования. В вашем примере вы должны ввести команду:
cd 2.0.1 1.0.8
Дополнительная информация здесь .
Для обеспечения работы -P|-L|-
используйте следующее:
function cd () {
typeset arg=
case $1 in -|-L|-P) arg=$1 ; shift ;; esac
[ $# -gt 1 ] && {
builtin cd $arg "${PWD/$1/$2}"
} || {
builtin cd $arg "$@"
}
}