Существует ли простой способ изменить каталоги из одной дублирующейся структуры папок другому?

Без lsof Вы могли попробовать:

find /proc -name <descriptor> | grep fdinfo

Это должно возвратить некоторые результаты формы ./<pid>/fdinfo/<fd>

6
18.11.2014, 22:44
3 ответа

Используйте подстановку строк в bash:

$ a="~/dev/com/wp-content/plugins/myplugin"
$ echo ${a/dev/staging}
~/staging/com/wp-content/plugins/myplugin

Итак, такая функция как:

cdx () 
{
    cd "${PWD/$1/$2}"
}

А затем сделайте cdx dev staging для переключения из папки в dev в staging. С помощью некоторых проверок можно назвать функцию cd:

cd ()
{
    if [ $# != 2 ]
    then
        builtin cd "$@"
    else
        builtin cd "${PWD/$1/$2}"
    fi
}

Effect:

~ # cd /tmp
/tmp # cd tmp srv
/srv # cd
~ # cd -
/srv
/srv # cd tmp var
/srv #

Это сохраняет обычное поведение cd во всех случаях, за исключением двух аргументов.

6
27.01.2020, 20:24

Добавьте эту функцию к вашему .bash_profile и набрав CDstaging Вы сможете измениться между любым каталогом внутри ~ / dev к эквиваленту ~ / Постановка .

Конечно, вы можете изменить имя для того, что вы хотите. Кроме того, вы можете создать обратное функцию, просто меняющееся имя функции и «1s @ dev @ постановка @» на противоположность.

cdstaging ()
{
        OLDPATH=$(pwd | sed -e "1s@$HOME@~@")
        NEWPATH=$(echo $OLDPATH | sed -e "1s@dev@staging@")
        cd $NEWPATH
}
2
27.01.2020, 20:24

в КШ или ZSH :

cd dev staging
2
27.01.2020, 20:24

Теги

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