Для лиспа существует возможность наиболее кроссплатформенно запускать внешние программы - external-program. В целом с задачей своей она справляется, и даже позволяет перенаправлять вывод в поток. Но вот сразу получить вывод в виде строки или же в виде списка строк, как это делает scsh - нет этого встроенного. Собственно, с целью получить подобную функциональность и написал небольшой extender. Теперь можно использовать следующую конструкцию:
* (run/string "ls" '("-a"))
".
..
bin
boot
cdrom
.config
dev
etc
home
initrd.img
initrd.img.old
.kde
lib
lib32
lib64
lost+found
media
mnt
proc
root
sbin
selinux
srv
sys
tmp
usr
var
vmlinuz
vmlinuz.old
"
Или, если хочется получить результат в виде списка строк, то:
* (run/strings "ls" '("-a"))
("." ".." "bin" "boot" "cdrom" ".config" "dev" "etc" "home" "initrd.img"
"initrd.img.old" ".kde" "lib" "lib32" "lib64" "lost+found" "media" "mnt"
"proc" "root" "sbin" "selinux" "srv" "sys" "tmp" "usr" "var" "vmlinuz"
"vmlinuz.old" "")
Данную библиотеку можно собрать из меркуриаловского хранилища исходных текстов, или же, при использовании Ubuntu или Debian из lisp-репизотрия для Ubuntu и Debian.
Комментариев нет:
Отправить комментарий