Можно ли удерживать сервер в заложниках, если кому-то предоставлен root-доступ? [Закрыто]

Все остальные ответы объясняют, почему псевдоним не работает, а ответ Джорджа Василиу дает альтернативную функцию, которая выполняет эту работу.

Однако я хотел развить этот ответ, чтобы сделать его более надежным. В настоящее время функция

mvcd() { mv "$1" "$2" && cd "$2"; }

не будет работать, если целью является файл. Чтобы исправить это, мы можем использовать нотацию подстроки переменной bash:

mvcd() { mv "$1" "$2" && [[ -d $2 ]] && cd $2 || cd ${2%/*}; }

Чтобы увидеть, что здесь происходит, давайте запишем это в немного более читаемом формате:

mvcd () {
    mv "$1" "$2";     # Do the move
    if [[ -d $2 ]]    # Check if arg $2 is a dir
    then
        cd $2;        # if it is, cd into it
    else
        cd ${2%/*};   # else remove the filename and cd
    fi;
}

Мы проверяем, является ли пункт назначения каталогом[1] - и если это так, мы просто cd в него. Если это не так, то мы подстроим второй аргумент от начала до самого правого / и cd в него.


[1] Я потратил неприлично много времени, пытаясь сделать это без условного обозначения, связывая вместе имя каталога и ссылку для чтения или просто всегда добавляя ./ перед путем или другими хаками, но у меня всегда была проблема. - либо это будет cd слишком далеко назад (в случае readlink), либо это не будет работать с cding на .. , или это не будет работать с именами файлов или... да. Если кто-то может сделать это без условного, я очень открыт для предложений.

0
28.11.2017, 02:47
0 ответов

Теги

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