bash-folders/README.md

235 lines
4.3 KiB
Markdown
Raw Normal View History

2023-04-19 19:32:45 +02:00
# Bash folders
2023-03-22 00:42:07 +01:00
2023-05-02 15:51:22 +02:00
![Bash folder brand](assets/brand-small.webp)
2023-05-02 15:48:43 +02:00
2023-04-19 19:32:45 +02:00
Collection of Bash scripts to execute functionalities in folders, such as optimizing videos, unzipping files, converting images, etc.
2023-04-04 09:13:39 +02:00
2023-04-19 19:32:45 +02:00
- [Video optimizer](#video-optimizer)
2023-05-02 15:36:38 +02:00
- [Battery hook](#battery-hook)
2023-04-19 19:32:45 +02:00
- [Decompress files](#decompress-files)
---
## Video optimizer
2023-04-18 12:56:23 +02:00
2023-04-18 15:27:40 +02:00
Folder that watches when new videos are added and optimizes them.
2023-04-18 12:56:23 +02:00
### Requirements
- `inotify-tools`
- `ffmpeg`
Example in Debian.
``` sh
sudo apt install inotify-tools ffmpeg
```
2023-04-04 09:13:39 +02:00
### Install
2023-04-18 12:56:23 +02:00
``` sh
2023-04-19 19:32:45 +02:00
curl -o bash-folders-video-optimizer https://raw.githubusercontent.com/tanrax/bash-folders/main/bash-folders-video-optimizer.sh && chmod +x bash-folders-video-optimizer && sudo mv bash-folders-video-optimizer /usr/local/bin && echo "🎉 Successfully installed! 🎉"
2023-04-18 14:11:54 +02:00
```
Test
``` sh
2023-04-19 19:32:45 +02:00
bash-folders-video-optimizer --help
2023-04-18 12:56:23 +02:00
```
2023-04-04 09:13:39 +02:00
2023-04-18 12:56:23 +02:00
### Run
``` sh
2023-04-19 19:32:45 +02:00
bash-folders-video-optimizer --folder [folder to watch]
2023-04-18 14:11:54 +02:00
```
Example.
``` sh
2023-04-18 16:48:54 +02:00
mkdir optimizer
2023-04-19 19:32:45 +02:00
bash-folders-video-optimizer --folder optimizer
2023-04-18 12:38:12 +02:00
```
2023-04-18 14:11:54 +02:00
And leave a video that you want to optimize in the folder `optimizer`.
2023-04-18 16:43:18 +02:00
### Start at operating system startup
#### Option 1: Service
2023-04-18 12:56:23 +02:00
2023-04-19 19:32:45 +02:00
Create a file in `/etc/systemd/system/bash-folders-video-optimizer.service` with the following content.
2023-04-18 14:11:54 +02:00
2023-04-18 12:38:12 +02:00
```ini
[Unit]
2023-04-18 15:27:40 +02:00
Description=Folder that watches when new videos are added and optimizes them.
2023-04-18 12:38:12 +02:00
[Service]
Restart=always
RestartSec=5
2023-04-18 12:56:23 +02:00
User=[user]
2023-04-19 19:32:45 +02:00
ExecStart=bash-folders-video-optimizer --folder [folder to watch]
2023-04-18 12:38:12 +02:00
[Install]
WantedBy=multi-user.target
```
2023-04-18 14:11:54 +02:00
Edit it to your needs.
Recharge services.
``` sh
sudo systemctl daemon-reload
```
And activate it.
``` sh
2023-04-19 19:32:45 +02:00
sudo systemctl enable bash-folders-video-optimizer
sudo systemctl start bash-folders-video-optimizer
2023-04-18 14:11:54 +02:00
```
2023-04-18 16:43:18 +02:00
#### Option 2: Cron
2023-04-18 14:11:54 +02:00
Open.
``` sh
crontab -e
```
Add to document.
``` sh
2023-04-19 19:32:45 +02:00
@reboot bash-folders-video-optimizer --folder [folder to watch] >/dev/null 2>&1 &
2023-04-18 14:11:54 +02:00
```
2023-04-19 19:32:45 +02:00
---
2023-05-02 15:36:38 +02:00
## Battery hook
Folder with scripts to be launched in different battery states.
The filename of the scripts must be:
- `discharging`: When the battery is in use.
- `charging`: When the battery is charging.
- `low`: When it reaches the low percentage. Default 15.
- `high`: When it reaches the high percentage. Default 85.
- `full`: When the battery is full.
They must have **execution permissions**. If any of them do not exist, they will be ignored.
### Install
``` sh
curl -o bash-folders-battery-hook https://raw.githubusercontent.com/tanrax/bash-folders/main/bash-folders-battery-hook.sh && chmod +x bash-folders-battery-hook && sudo mv bash-folders-battery-hook /usr/local/bin && echo "🎉 Successfully installed! 🎉"
```
Test
``` sh
bash-folders-battery-hook --help
```
### Run
``` sh
bash-folders-battery-hook --folder [folder path]
```
Example.
``` sh
mkdir battery-scripts
touch battery-scripts/discharging
chmod +x battery-scripts/discharging
touch battery-scripts/charging
chmod +x battery-scripts/charging
touch battery-scripts/low
chmod +x battery-scripts/low
touch battery-scripts/high
chmod +x battery-scripts/high
touch battery-scripts/full
chmod +x battery-scripts/full
bash-folders-battery-hook --folder battery-scripts
```
### Start at operating system startup
#### Option 1: Service
Create a file in `/etc/systemd/system/bash-folders-battery-hook.service` with the following content.
```ini
[Unit]
Description=Folder with scripts to be launched in different battery states.
[Service]
Restart=always
RestartSec=5
User=[user]
ExecStart=bash-folders-battery-hook --folder [folder path]
[Install]
WantedBy=multi-user.target
```
Edit it to your needs.
Now you will need the script to run every so often to check the battery status. The best solution is to create a `timer`.
Create a file in `/etc/systemd/system/bash-folders-battery-hook.timer` with the following content.
```ini
[Unit]
Description=Folder with scripts to be launched in different battery states every minute.
[Timer]
OnCalendar=*-*-* *:*:00
Persistent=true
[Install]
WantedBy=timers.target
```
Recharge services.
``` sh
sudo systemctl daemon-reload
```
And activate it.
``` sh
sudo systemctl enable bash-folders-battery-hook.timer
sudo systemctl start bash-folders-battery-hook.timer
```
#### Option 2: Cron
Open.
``` sh
crontab -e
```
Add to document.
``` sh
@reboot * * * * * bash-folders-battery-hook --folder [folder path]
```
---
2023-04-04 09:13:39 +02:00
## Development
### Check syntax
```sh
shellcheck [script]
```