Osicat is lightweight operating system interface for Common Lisp on POSIX-like systems.
Osicat uses UFFI for foreign bindings, so it is relatively portable, though most active development happens on SBCL and Debian GNU/Linux, so other platforms may experience wrinkles.
Here are some key features of "Osicat":
· directory iteration and deletion
· environment variables
· symbolic links
· file permissions
· file-type identification
Installation:
If you have asdf-install, just:
$ asdf-install osicat
Sample usage:
* (with-directory-iterator (next "/")
(loop for entry = (next)
while entry
when (member 'group-write (file-permissions entry))
collect entry))
(#P"/home" #P"/vmlinuz" #P"/tmp" #P"/initrd.img" #P"/initrd.img.old")
* (file-permissions "/initrd.img")
(USER-READ USER-WRITE
USER-EXEC
GROUP-READ
GROUP-WRITE
GROUP-EXEC
OTHER-READ
OTHER-WRITE
OTHER-EXEC)
* (file-kind "/initrd.img")
:SYMBOLIC-LINK
* (read-link "/initrd.img")
#P"boot/initrd.img-2.4.20-3-686"
*
Product's homepage