The Offirmo Shell Lib (OSL) is a collection of useful shell functions for robust and advanced shell scripts.
Requirements : I use bash.
Available at : https://github.com/Offirmo/offirmo-shell-lib
Note : The OSL has unit tests for maximum quality.
I found myself having to write a lot of shell scripts, for work and for home.
Over the time, I had to develop a lot of useful functions.
One day, I cleaned them up and packed them in this lib. Enjoy !
The OSL is targeted at bash. Never tested with another shell.
Get a copy of the files and set your path to point to the OSL "bin" dir. You can check if it works by typing :
osl_help.sh
In your scripts, add this as soon as possible (ideally first instruction in your script for maximum features) :
source osl_lib_init.sh
On demand, source other OSL files as needed :
libs :
osl_lib_archive.sh
--> decompress any archive fileosl_lib_capabilities.sh
--> detect version and check capabilities of host OSosl_lib_debug.sh
--> tracesosl_lib_exit.sh
--> to abort execution with nice messagesosl_lib_file.sh
--> path manipulations, ensure a line isosl_lib_init.sh
--> allow output saving and various nice hacksosl_lib_mutex.sh
--> create and use mutexes (note : use 'rsrc' wrapper for additional features)osl_lib_output.sh
--> various display functions : error, warnings...osl_lib_rsrc.sh
--> safe rsrc manipulation protected by mutexosl_lib_sspec.sh
--> shell unit tests, inspired from rspecosl_lib_stamp.sh
--> manip of stamp files to detect access time and interferences (note : use 'rsrc' wrapper for additional features)osl_lib_string.sh
--> string utilitiesosl_lib_ui.sh
--> UI functions like asking yes or no, pause...osl_lib_version.sh
--> version comparison utilities (newer/older)osl_inc_ansi_codes.sh
--> defines ANSI codes for color
Special files :
osl_help.sh
--> callable, display current OSL versionosl_inc_env.sh
--> various constants
Experimental / in progress :
osl_lib_interrupt_func.sh
--> exit hook (for mutex auto release)
Env variables : OSL will respond to a few environment variables :
- OSL_console_has_light_scheme=true (default false) will adjust colored output styles to be more readable on a white background
That's it. You can now use the features.
For now, look inside the unit tests of the file you're interested in, or look in the file itself.
- Better doc ;)
- improve decompression function
- refactor mutex code to avoid duplication
- mutex switch from read to write ?
- forward and aggregate state in rsrc fuctions
- Make default values redefinable
- Make it easier to disable color
- remove "bashisms"
- asserts ?
- More...