This commit is contained in:
2026-02-03 12:54:32 -07:00
parent 7b4c6bff1b
commit 5afa4c3358

View File

@@ -11,3 +11,40 @@ Selecting a drive from the system
```bash ```bash
lsblk -lno type,name | grep part | awk '{ print "/dev/" $2 }' | select_option lsblk -lno type,name | grep part | awk '{ print "/dev/" $2 }' | select_option
``` ```
If you use the wrapper you can then pipe your output to more commands:
```bash
lsblk -lno type,name | grep part | awk '{ print "/dev/" $2 }' | ./wrapper.sh | xargs -I% echo Mounting %...
```
### What about bash's `select`?
I didn't know this existed when I wrote this program.
But on the plus side they aren't exact copies of eachother.
Bash's `select` works like:
```bash
select x in a b c; do
echo "selected: $x"
break
done
```
Where it just creates a little text menu:
```txt
1) one
2) two
3) three
#?
```
Of which you can input your number.
This has some issues:
1. You can select values that are out of bounds. Meaning that your script to be defensivly programmed.
1. You can't use vim keys to move around.
1. It is harder to implement into a stream since you have to turn your agruments into an array. (Seems to be designed for scripts, not one-liners.)
1. I didn't make the program.
Interestingly, I found the same trick they use to allow for menus to be printed but also pipe the output.
By putting them menu on `stderr` instead of `stdout` you can have a menu that doesn't get yoinked by the pipe's reidrection.