Zsh: рекурсивно добавить папку в $ path

Я обычно использую sort и uniq вместе, чтобы избавиться от дубликатов, например:

    cat file | sort | uniq

Однако с вашим вводом все закончится так:

    -------
    1234
    2344
    87676
    9555
    TABLE1

Эта команда удаляет все, кроме чисел и затем добавляет заголовок:

    cat file | grep '^[[:digit:]]*$'| grep -v '^$' |sed '1iTABLE1\n-------'

и дает следующий результат:

    TABLE1
    -------
    1234
    9555
    87676
    2344
1
09.11.2018, 18:27
2 ответа
mkdir -p ~/tmp/a/b/c/{d,e}
path+=(~/tmp/a ~/tmp/a/**/*(N/))
print -l $path

Что должно добавлять как ~/tmp/aк переменной PATH, так и к любым каталогам *(/)рекурсивно **. В отличие от связанного вопроса этот вопрос позволяет избежать медленного ответвления на find(1).

Спецификатор Nиспользуется для того, чтобы не считать ошибкой отсутствие (не -скрытого )каталога.

2
28.04.2021, 23:40

Рассмотрим также stow.

stow— это инструмент, который позволяет вам создавать набор пакетов в подкаталогах -:. Он помогает разделять вещи, сохраняя их вместе. Это делается путем создания ссылок на них в корневом каталоге (, например.~/bin)и поможет вам управлять этими ссылками при добавлении и удалении файлов.

Он часто используется для /usr/localссылок на различные файлы в различных подкаталогах -(и т. д., bin, lib… ). Таким образом, нет необходимости обновлять $PATH.

Итак, если у вас есть

  • пакет1
    • корзина
      • бин1
      • бин2
  • пакет2
    • корзина
      • бин3
      • ячейка 4

, то вы получите

  • bin1 -> package1/bin/bin1
  • bin2 -> package1/bin/bin2
  • bin3 -> package2/bin/bin3
  • bin4 -> package2/bin/bin4
  • пакет1
    • корзина
      • бин1
      • бин2
  • пакет2
    • корзина
      • бин3
      • ячейка 4
2
28.04.2021, 23:40

Теги

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