В Emacs, редактируя C, поля сортировки, не работающие или указывающие единственное завершение. Почему?

Ваше сообщение немного околачивается, и некоторые операторы, кажется, являются противоречащими, но если мое понимание корректно, у Вас есть a $0 из формы foo/scripts/bar.sh, и Вы пытаетесь извлечь foo часть. Вы, кроме того, гарантируете, что всегда будет по крайней мере два уровня каталогов в том пути (если Вы только будете иметь bar.sh, Вы - тост). Затем можно просто лишить последние два компонента пути:

DIR=${0%/*/*}

Вы могли назвать свой сценарий через scripts/bar.sh, Тем не менее, в этом случае простая замена шаблона не работала бы. Не говоря уже о вызове сценария через $PATH. Можно сделать это условным выражением:

case $0 in
  */*/*) DIR=${0%/*/*};;
  ?*/*) DIR=.;;
  /*) echo 1>&2 "Storing $0 in the root directory is not supported, aborting."
      exit 125;;
  *) # The script was called through the `PATH`
    IFS=:; set -f; unset DIR
    for d in $PATH; do
      if [ -x "$d/$0" ]; then
        # If you put relative directories in your PATH, you get what you deserve.
        DIR=${d%/*};;
      fi
    done
    if [ -z "$DIR" ]; then
      echo 1>&2 "$0: Fatal error: I can't find myself."
      exit 125
    fi
    unset IFS; set +f;;
esac
3
30.03.2012, 16:53
1 ответ

Поля сортировки AFAIK не имеют никакого интерактивного способа указать полевое число, необходимо дать его как аргумент C-u. Например, для 3-го поля: C-u 3 M-x sort-fields

4
27.01.2020, 21:20

Теги

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