Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/simeg/functional-shell
map and filter in your shell
https://github.com/simeg/functional-shell
bash command-line functional functional-programming shell string-manipulation
Last synced: 14 days ago
JSON representation
map and filter in your shell
- Host: GitHub
- URL: https://github.com/simeg/functional-shell
- Owner: simeg
- License: mit
- Created: 2019-09-29T16:30:07.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-01-09T20:24:14.000Z (almost 3 years ago)
- Last Synced: 2024-08-01T16:55:19.142Z (3 months ago)
- Topics: bash, command-line, functional, functional-programming, shell, string-manipulation
- Language: Shell
- Homepage:
- Size: 43 KB
- Stars: 17
- Watchers: 2
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# functional-shell ![CI](https://github.com/simeg/functional-shell/workflows/CI/badge.svg)
Use `map` and `filter` in your shell.
*This tool was written for learning and is not optimized for speed or
compatibility.*Tested with Zsh and Bash 3/4/5.
# Examples
```bash
$ find .
./README.md
./Makefile$ find . | map abspath
/Users/simon/repos/functional-shell/README.md
/Users/simon/repos/functional-shell/Makefile
``````bash
$ find . | map abspath | map basename
README.md
Makefile
``````bash
$ find . | map prepend 'file: '
file: ./README.md
file: ./Makefile
``````bash
$ find . | filter contains md
./README.md
``````bash
$ find . | filter contains md | map abspath
/Users/simon/repos/functional-shell/README.md
``````bash
$ seq 3 | map add 100
101
102
103
```# Installation
Run the `install.sh` to clone the repo and move the files to `/usr/local/lib`
and `/usr/local/bin`.```bash
$ /bin/bash <(curl -s https://raw.githubusercontent.com/simeg/functional-shell/master/install.sh)
```# Operations
### File and Directory operations
```
abspath :: Path → Path
dirname :: Path → Path
basename :: Path → Path
is_dir :: Path → Bool
is_file :: Path → Bool
is_link :: Path → Bool
is_executable :: Path → Bool
exists :: Path → Bool
has_ext ext :: Path → Bool
strip_ext :: Path → String
replace_ext new_ext :: Path → Path
split_ext :: Path → Array
```
### Logical operations
```
non_empty :: * → Bool
```
### Arithmetic operations
```
add num :: Int → Int
sub num :: Int → Int
mul num :: Int → Int
even :: Int → Bool
odd :: Int → Bool
pow num :: Int → Int
```
### Comparison operations
```
eq other :: * → Bool
equal other :: * → Bool
equals other :: * → Bool
ne other :: * → Bool
not_eq other :: * → Bool
not_equals other :: * → Bool
ge i :: Int → Bool
greater_equals i :: Int → Bool
gt i :: Int → Bool
greater_than i :: Int → Bool
le i :: Int → Bool
less_equals i :: Int → Bool
lt i :: Int → Bool
less_than i :: Int → Bool
```
### String operations
```
reverse :: String → String
append suffix :: String → String
strip :: String → String
substr start end :: String → String
take count :: String → String
to_lower :: String → String
to_upper :: String → String
replace old new :: String → String
prepend prefix :: String → String
capitalize :: String → String
drop count :: String → String
split delimiter :: String → Array
duplicate :: String → Array
contains substring :: String → Bool
starts_with pattern :: String → Bool
ends_with pattern :: String → Bool
len :: String → Int
length :: String → Int
```
### Other operations
```
id :: * → *
identity :: * → *
```