Без lsof
Вы могли попробовать:
find /proc -name <descriptor> | grep fdinfo
Это должно возвратить некоторые результаты формы ./<pid>/fdinfo/<fd>
Используйте подстановку строк в 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
во всех случаях, за исключением двух аргументов.
Добавьте эту функцию к вашему .bash_profile
и набрав CDstaging
Вы сможете измениться между любым каталогом внутри ~ / dev
к эквиваленту ~ / Постановка
.
Конечно, вы можете изменить имя для того, что вы хотите. Кроме того, вы можете создать обратное функцию, просто меняющееся имя функции и «1s @ dev @ постановка @»
на противоположность.
cdstaging ()
{
OLDPATH=$(pwd | sed -e "1s@$HOME@~@")
NEWPATH=$(echo $OLDPATH | sed -e "1s@dev@staging@")
cd $NEWPATH
}