Как добавить несколько функций рыбы в один скрипт?

stat даст отметку времени самой символической ссылки.

Таким образом, подход, подобный приведенному ниже, будет работать

[[ $(stat -c '%Y' b) -lt $(stat -c '%Y' a) ]] && touch.......
2
18.08.2021, 17:56
2 ответа

Основываясь на этом Примере переполнения стека от funny _fish , я бы предложил создать файл под ~/.config/fish/с определенными в них функциями, а затем добавить строку в исходный код этот файл в вашем файле ~/.config/fish/config.fish.

Пример содержания~/.config/fish/all-my-functions.fish:

function example-function1
  ls -l $argv
end

function example-function2
  ls -a $argv
end

# continues as needed...

и строка для~/.config/fish/config.fish:

source ~/.config/fish/all-my-functions.fish

Кроме того, вы можете определить все функции непосредственно в файле config.fish.

4
20.08.2021, 10:25

Прежде всего, команда aliasв Fish — это просто ярлык для создания функции с небольшим синтаксическим сахаром. Например.

> alias ls "ls -lh"
> functions ls
# Defined via `source`
function ls --description 'alias ls ls -lh'
 command ls -lh $argv;
end

Возможно, причиной замедления являются накладные расходы на создаваемые/загружаемые функции. В этом случае размещение их всех в монолитном файле, который (все еще )загружается при запуске, скорее всего, не поможет.

Есть несколько простых решений, которые даже не требуют изменения вашегоconfig.fish:

  • Для каждого псевдонима просто funcsave <aliasname>. Это сохранит функцию в ~/.config/fish/functions. Это действительно правильный способ сделать это , ИМХО, так как функции в этом каталоге загружаются по запросу , а не при запуске. Это даст вам самое быстрое время запуска оболочки -.

    Например:

    > alias ls "ls -lh"
    > funcsave ls
    > ls -n ~/.config/fish/functions/
    -rw-r--r-- 1 1000 100  95 Aug 18 14:30 ls.fish
    

    Опять же, этот файл даже не трогается при запуске. --Он "лениво загружается", когда это необходимо. Когда вы вызываете lsв первый раз в сеансе, Fish выполнит функцию lsв ~/.config/fish/functions/ls.fish.

    Также необходимо funcsaveтолько для существующих псевдонимов. При определении нового псевдонима просто используйте alias -sдля автоматического создания файла функции отложенной загрузки -в ~/.config/fish/functions.

  • Редактировать/обновить:Вы упомянули, что хотите, чтобы это было как можно проще, поэтому вот строка быстрой команды -, которая может автоматизировать сохранение всех ваших функций псевдонимов. После запуска вы должны увидеть соответствующий файл для каждого псевдонима в ~/.config/fish/functions, и вы можете удалить существующие псевдонимы из вашего запуска.

    for f in (alias | awk '{print $2}'); funcsave $f; end
    
  • Если вы действительно хотите создать один монолитный файл для своих псевдонимов функций, и вы не возражаете против увеличения времени запуска (, независимо от того, насколько оно много или мало ), то я все равно не буду изменять ~/.config/fish/config.fish. Просто создайте этот файл в ~/.config/fish/conf.d, и он будет автоматически прочитан как часть запуска.

    Всякий раз, когда в некоторых инструкциях говорится об изменении вашего config.fish, рассмотрите возможность использования вместо этого файла в conf.d. Это позволяет вам легче увидеть (и изменить ), что делает каждая часть вашей конфигурации запуска, не копаясь в одном config.fish.

6
20.08.2021, 10:25

Теги

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