diff --git a/readme.ad b/readme.ad index 97b8eee..0db450f 100644 --- a/readme.ad +++ b/readme.ad @@ -2,6 +2,6 @@ :linker: ln -sf `link-modeline` `директорию`:: - создаёт символические ссылки для кода в `директории`. например, на файл «sxkdrc» со строкой «`# link: ~/.config/sxhkd/sxhkdrc`» будет создана соотвествующая ссылка. - технически, передаёт в аргументы команды `{linker}` имя файла из порядкового списка всех текстовых файлов данной `директории` и результат поиска в нём соответствия регулярному выражению «`{regex}`». + Создать символические ссылки для кода в `директории`. Например, на файл «`sxkdrc`» со строкой «`# link: ~/.config/sxhkd/sxhkdrc`» будет создана соотвествующая ссылка. + Технически, передаёт в аргументы команды `{linker}` имя файла из порядкового списка всех текстовых файлов данной `директории` и результат поиска в нём соответствия регулярному выражению «`{regex}`». diff --git a/source/link-modeline.sh b/source/link-modeline.sh new file mode 100644 index 0000000..cdd3e59 --- /dev/null +++ b/source/link-modeline.sh @@ -0,0 +1,20 @@ +# create symbolic links +# by vim-like modelines +# of all files in the directory + + +# arguments +directory=$1 + +# link modeline regular expression +regex="^.{2,3}link: \K\S+" + +files=(`grep -rPHl "${regex}"`) +destinations=(`grep -rPho "${regex}"`) + +for ((e = 0; e <= (${#files[@]} - 1); e++)); +do + target=${files[$e]} + link_name=${destinations[$e]} + ln -sfvnr $target $link_name +done diff --git a/source/test/test.txt b/source/test/test.txt new file mode 100644 index 0000000..7e8aef3 --- /dev/null +++ b/source/test/test.txt @@ -0,0 +1 @@ +# link: ./tested.txt diff --git a/source/tested.txt b/source/tested.txt new file mode 120000 index 0000000..40c45c4 --- /dev/null +++ b/source/tested.txt @@ -0,0 +1 @@ +test/test.txt \ No newline at end of file