stat
даст отметку времени самой символической ссылки.
Таким образом, подход, подобный приведенному ниже, будет работать
[[ $(stat -c '%Y' b) -lt $(stat -c '%Y' a) ]] && touch.......
Основываясь на этом Примере переполнения стека от 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.
Прежде всего, команда 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
.