Как избежать CP-r ~/some/folder/. копирование всех файлов к верхнему уровню текущей папки?

Propably да. Мое общее представление состоит в том, чтобы реализовать исходящую подсистему балансировки нагрузки (через LVS) использование виртуального IP, который Вы могли использовать в качестве шлюза по умолчанию.

Это propably намного более сложно, чем это и могло бы включить подъем сквида или чего-то одинаково.

3
20.11.2012, 22:29
2 ответа

Чтобы сделать правильно это потребовало бы перепарсинга всех опций CP, и это не хорошая идея. Но вот что-то, что должно приблизиться:

# run cp command as-given, unless any argument ends in a slash
safecp() {
  for arg; do
    case $arg in */)
      echo "safecp: trailing slash in cp $*" >&2
      return 1
      ;;
    esac
  done
  cp "$@"
}

С другой стороны, попытайтесь поместить

set mark-directories off

в Вашем ~/.inputrc заставить удар не автоматически добавить наклонную черту когда завершающие вкладку каталоги.

2
27.01.2020, 21:28
  • 1
    или может мы делать cp ведите себя этот путь: если источник имеет запаздывание /, затем остановитесь с предупреждением, таким образом, мы на самом деле должны использовать \cp или так или иначе обойдите функцию, если это - то, чего мы требуем. Если нет никакого запаздывания / в источнике затем только возобновите обычное cp. Я думаю, не добавляя наклонную черту, когда завершение вкладки могло быть довольно неприятным, потому что мы должны добавить наклонную черту сами каждый раз, если существует несколько уровней вниз для пути. –  nopole 20.11.2012, 22:39

Вы могли, конечно, записать короткую функцию удара (с последней версией удара, который может сделать регулярные выражения, это чрезвычайно просто), который поймал бы этот вид ошибок:

function cpr () {
    local src=...
    if [[ "$src" =~ /$ ]]; then
        # handle error
    else
        # proceed with copying
    fi 
}

хитрая часть определяет что dest должен быть (Вы, конечно, хотите пропустить целевой каталог), если Вы хотите покрыть весь из cpкомбинации опций (по крайней мере, coreutils' GNU cp имеет 3 различных изменения синтаксиса).

Используя специализированную функцию, которая исправила бы его оперативный, могло бы быть лучше:

function cpr () {
    cp -R ${1%%/} ${2}
}
0
27.01.2020, 21:28

Теги

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