как добавить настраиваемую опцию к команде mkdir

Portage компилирует полные исходные коды нового пакета в том виде, в каком он был доставлен апстримом (иногда команда gentoo сама исправляет исходный код, но это уже другая история).

Бинарные файлы старого пакета обычно удаляются, хотя некоторые старые библиотеки могут остаться, если их удаление повредит другим пакетам. Чтобы удалить старые исходные коды, вам нужно самостоятельно запустить eclean -d distfiles .

3
13.04.2017, 15:36
1 ответ

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

  • Что следует за , если - обычная команда. Чтобы выполнить сравнение строк, вызовите встроенный тест или встроенный [ с тем же синтаксисом плюс последний ] или [ […]] конструкция с более упрощенным синтаксисом. См. с использованием одинарной или двойной скобки - bash для получения дополнительной информации.
  • Оператор -eq предназначен для сравнения целых чисел. Используйте = для сравнения строк.
  • Я добавил некоторую ограниченную поддержку передачи нескольких аргументов (включая такие параметры, как -p ). Ниже я вызываю cd только в случае успеха mkdir и вызываю его по последнему аргументу, переданному функции.
  • -g будет распознан только как самый первый аргумент. Возможны варианты синтаксического анализа для обнаружения и удаления его из любого положения, но сложнее.
mkdir () {
  local do_cd=
  if [ "$1" = "-g"]; then
    do_cd=1
    shift
  fi
  command mkdir "$@" &&
  if [ -n "$do_cd" ]; then
    eval "cd \"\${$#}\""
  fi
}

Я не рекомендую определять ваши собственные параметры. Они не будут показаны в - справке или на страницах руководства.Они не более запоминаются, чем определение команды с другим именем: либо вы не помните, что они у вас есть, и нет никаких преимуществ по сравнению с командой с другим именем, либо вы не помните, что они настраиваемые. , а затем вы можете сразу узнать это с помощью настраиваемого имени, спросив оболочку, является ли это встроенной командой или функцией ( type mkcd ), чего нельзя сказать о настраиваемой опции. Есть варианты использования для переопределения стандартной команды, но это не так.

6
27.01.2020, 21:13

Теги

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