r_bash – Telegram
How to sequentially execute commands with a bash noscript?

I want to make a simple blocklet for i3's status bar to cycle through ddcutil "presets" for my monitor brightness. Basically, to make it execute the ddcutil command (ddcutil set 10 100 ) with brightness values in a sequence like 100, 75, 50, 25, 0 (and wrap around after reaching 0) each time the noscript is executed. But I'm really new to bash and I'm not sure how do I do it. Is there an example available?

I'm fairly sure I'll need to make it read the current brightness value (that is reported with ddcutil getvcp 10 with the output looking like VCP code 0x10 (Brightness ): current value = 50, max value = 100 ) to decide which command should it execute next time.

https://redd.it/1gphkvb
@r_bash
Run command after certain time has elapsed

Hi, I'm trying to create a volume/brightness overlay that opens a window and closes it after a certain amount of time. The problem is that if I run my overlay noscript multiple times, the overlay window gets closed at random and flickers a bit. I'm currently doing the following:

Overlay() {
eww update icon="$icon" percent="$percent" && eww open overlay
sleep 2
eww close overlay
}

if $percent -gt 100 ; then
wpctl @ 5%+
Overlay
fi

This is a simplified version of my noscript. The full version can be viewed here.

https://redd.it/1gpg5ki
@r_bash
Naming conventions for constants (readonly variables)

For variables and functions, the naming conventions seems to be snake_case. Is this also the case for all constants?

Or are primitive constants (like int, string) always SCREAMING_SNAKE CASE and non-primitive constants (like arrays) use snake_case?

https://redd.it/1go60ek
@r_bash
Having a lot of problems trying to call Ncat from a noscript. Kinda going crazy trying to find a combination that works as expected, need some guidance.

As the noscript alludes to, I've been trying to make a bash noscript that calls the Ncat util ([from nmap](https://nmap.org/)) to capture phone logs being streamed from our phone server. This works as expected 10/10 times, I run the command as such:

ncat <IP> <PORT>

Boom, expected behavior. Ncat makes connection, immediately starts displaying data.

When I try to put this into a noscript, it also works as expected. The problem comes when I try to redirect the output. I've encountered some odd and unexpected behavior when trying to load the PID into a variable in a noscript by means of VAR=$!

No matter what I do when using the format:

ncat <IP> <PORT> > output.csv & NCAT_PID=$!

the noscript fails immediately. File gets created, but of course nothing inside.

This led me down a rabbit hole of trying many many different variations of this trying to get the noscript to keep alive after calling it, and I tried at least 5 different methods, all ending with the same result.

Based on GPT recommendations I've tried:

* using the -k flag (never expected this to work cause it's not being used in listen mode)
* using nohup
* using disown
* using a basic while loop with "while true; do"
* redirecting stdin to /dev/null

After lots of trial-and-error, the ONLY THING that seemed to yield a different result was using && to get the PID, like so:

`ncat <IP> <PORT> > output.csv && NCAT_PID=$!`

This method does keep the ncat process alive, and appears to correctly load the NCAT\_PID variable.


THE KICKER:

Running ncat in an interactive shell like this

`ncat <IP> <PORT> > test.csv & PID=$!`

Somehow does ALMOST what I'm looking for. It starts an ncat process in the background, and loads A PID into that variable, for some reason it's just never the correct one.

I'm kind of at a loss as to how to proceed.
Part of why I started this was to figure out a way to run this ncat process each day, load the output into a unique file for that day, and kill it and restart at the start of a new day, to create a new file. I thought something like this would be pretty straight forward but it's proving rather difficult.

Any thoughts on how to solve this would be greatly appreciated :)


Thanks in advance!

https://redd.it/1gppan9
@r_bash
for avoid inrtermitent wifi I use a radioonline, I'd like to test doing instead a ping...

Hi, I'd like to do a command with ping during the time I am online, so I will open a terminal and write a command with ping,what will be that command?

ping -time configurable for repeat every ¿1 min, or 2 min 0r 30 seg?...

when I cut wifi close the terminal. just I need that command with config time and where to do the ping.

Thank you and Regards!

https://redd.it/1gpqof0
@r_bash
do you know if command dmesg has history?

Hi, i'd like to see if I can see the history of command dmesg for see log for a session before ...

command journalctl -p err -b -0 has history changing the number

can I do similar for dmesg?

Thank you and regards!

https://redd.it/1gqpon8
@r_bash
why can't I rm "file"

Edited: I did a mistake: hi, doing ls I have some files named "name'", why do not I can rm them?

when I tipe rm name nothing pass. rm nam<tab> nothing pass...

these names have " '" note ' before last "

Thank you and Regards!

https://redd.it/1grgdqz
@r_bash
Help needed with noscript

Hello is have noscript, it works when I run it manually. Problem is when I want to run it with cron, backup is not created. From log seems noscript stuck on password. Any help appreciated

#!/usr/bin/expect -f

log_file /tmp/debug.log

spawn echo "cron started"

spawn rm /home/admin/backup-restore/mls_backup/mls-backup.tar.gz

set password {password}

spawn /usr/sbin/exec /home/admin/backup-restore/backup-restore --target /home/admin/backup-restore/mls_backup/mls-backup.tar.gz --no-encryption

expect "admin password:"

send "$password\r"

interact

https://redd.it/1grwnht
@r_bash
Is there a tool for compare 2 dirs side by side?

Hi, I am using dirdiff, grsync but dirdiff show the same files like differents when they are the same. grsync will copy over the same file in destiny.

I will do the backup manually so,

I need a tool for compare 2 dirs side by side...

I have pending to see yours complete replies to my last post here.

Thank you and Regards!

https://redd.it/1grxc96
@r_bash
Codai: AI code assistant in Terminal with understanding the full project context

Codai is an AI code assistant designed to help developers efficiently manage their daily tasks through a session-based CLI, such as adding new features, refactoring, and performing detailed code reviews. What makes codai stand out is its deep understanding of the entire context of your project, enabling it to analyze your code base and suggest improvements or new code based on your context. This AI-powered tool supports multiple LLM models, including GPT-4o, GPT-4, Ollama, and more.

https://github.com/meysamhadeli/codai

https://redd.it/1grw5zx
@r_bash
Testers wanted: I made a noscript to automatically add and remove swap without rebooting.

I use Debian as my daily driver (I've been using Linux in some for or the other as my daily driver since 2006). I also us Debian for all my servers. I also running a webhosting business and in my 20+ years in the game, I have learned that...

1. VPS's do not come with SWAP, but sometimes you need a bit of SWAP to handle heavy load.
2. SWAP files can be added and removed on the fly (no reboot required), however a SWAP partition, not so simple.

On my daily driver machine, I also create a lot of digital artwork. I recently found myself rendering a finished artfile that was 9.5GB (24000px by 13700px) in Gimp, and half way through I started running out of RAM and SWAP. So I quickly created the needed SWAP file, and Gimp was able to finish the render without crashing.

So I created a noscript to automate the process, along with two supporting noscript.

I am wanting some guys to test it out, maybe in a VM if you don't want to risk a production or daily driver machine.

I am running it currently on my laptop. It has 12GB RAM and 4GB SWAP. I opened several of my art pieces 12000px wide to 24000px wide, several times into various programs. I watched my desktop widget show the RAM getting used up, and then the SWAP, then suddenly, more SWAP. When I closed all the images from all the programs, I watched all the extra SWAP space disappear?

Looking for constructive criticism and feedback. The Git Repo is https://git.zaks.web.za/thisiszeev/linux-server-tools and it's all in the folder swap-management.

Thanks in advanced, as I am wanting to rework it in to a solution that can be installed via a package manager, to simplify life for others...

https://redd.it/1gst49e
@r_bash
Resources for learning Bash basics

I was recently tasked with creating some resources for students new to computational research, and part of that included some material on writing bash noscripts to automate various parts of their computational workflow. On the one hand: this is a little bit of re-inventing the wheel, as there are many excellent resources already out there. At the same time, it's sometimes helpful to have guides that are somewhat limited in scope and focus on the most common patterns that you'll encounter in a particular domain.

With that in mind, I tried to write some tutorial material targeted at people who, in the context of their research, are just realizing they want to do something better than babysit their computer as they re-run the same code over and over with different command line options. Most of the Bash-related information is on this "From the command line to simple bash noscripts" page, and I also discuss a few noscripting strategies (running jobs in parallel, etc) on this page on workload and workflow management.

I thought I would post this here in case folks outside of my research program find it helpful. I also know that I am far from the most knowledgeable person to do this, and I'd be more than happy to get feedback (on the way the tutorial is written, or on better/more robust ways to do noscript things up) from the experts here!

https://redd.it/1gthizk
@r_bash
commitzen init generates incorrect output when run from a bash noscript

### Denoscription

- cz init does not work properly when run programmatically inside the python:3.10.11 docker container
- I am trying to run cz init from a bash noscript without manual intervention and I tried various formats with no luck so far

### Steps to reproduce

1. Install docker
1. docker pull python:3.10.11
1. Install poetry inside docker
curl -sSL https://install.python-poetry.org | python3 - --version 1.6.0

1. Install commitizen docker
1. Try running cz init programmatically inside docker as shown below

### Current behavior

## Method 1
printf "\npyproject.toml\ncz_conventional_commits\npoetry: Get and set version from pyproject.toml:tool.poetry.version field\nsemver\nv$major.$minor.$patch$prerelease\nY\nY\ncommit-msg" | /root/.local/bin/poetry run cz init

## Output 1
Welcome to commitizen!

Answer the questions to configure your project.
For further configuration visit:

https://commitizen-tools.github.io/commitizen/config/

Warning: Input is not a terminal (fd=0).
? Please choose a supported config file: pyproject.toml
? Please choose a cz (commit rule): (default: cz_conventional_commits) cz_customize
? Choose the source of the version: poetry: Get and set version from pyproject.toml:tool.poetry.version field
No Existing Tag. Set tag to v0.0.1
? Choose version scheme: semver
? Please enter the correct version format: (default: "$version") semver
? Create changelog automatically on bump Yes
? Keep major version zero (0.x) during breaking changes Yes
? What types of pre-commit hook you want to install? (Leave blank if you don't want to install) done

You can bump the version running:

cz bump

Configuration complete 🚀


## Method 2
poetry run cz init <<EOF
pyproject.toml
cz_conventional_commits
poetry: Get and set version from pyproject.toml:tool.poetry.version field
semver
v\$major.\$minor.\$patch\$prerelease
Y
Y
commmit-msg
EOF


## Output 2
Welcome to commitizen!

Answer the questions to configure your project.
For further configuration visit:

https://commitizen-tools.github.io/commitizen/config/

Warning: Input is not a terminal (fd=0).
? Please choose a supported config file: .cz.toml
? Please choose a cz (commit rule): (default: cz_conventional_commits) cz_conventional_commits
? Choose the source of the version: scm: Fetch the version from git and does not need to set it back
No Existing Tag. Set tag to v0.0.1
? Choose version scheme: pep440
? Please enter the correct version format: (default: "$version") v$major.$minor.$patch$prerelease
? Create changelog automatically on bump Yes
? Keep major version zero (0.x) during breaking changes Yes
? What types of pre-commit hook you want to install? (Leave blank if you don't want to install) done

You can bump the version running:

cz bump

Configuration complete 🚀


### Desired behavior

## Both outputs should be as follows

Welcome to commitizen!

Answer the questions to configure your project.
For further configuration visit:

https://commitizen-tools.github.io/commitizen/config/

? Please choose a supported config file: pyproject.toml
? Please choose a cz (commit rule): (default: cz_conventional_commits) cz_conventional_commits
? Choose the source of the version: poetry: Get and set version from pyproject.toml:tool.poetry.version field
No Existing Tag. Set tag to v0.0.1
? Choose version scheme: semver
? Please enter the correct version format: (default: "$version") v$major.$minor.$patch$prerelease
? Create changelog automatically on bump Yes
? Keep major version zero (0.x) during breaking changes Yes
? What types of pre-commit hook you want to install? (Leave blank if you don't want to install) [commit-msg]
commitizen pre-commit hook is now installed in your '.git'


You can bump the version running:

cz bump

Configuration complete 🚀


### Environment

commitizen version: 3.30.0
python version: 3.10.11
docker version: Docker version 27.2.0, build 3ab4256
cz init is running inside a docker container very specifically the python 3.10.11
Course to improve

I already understand how mostly everything works in bash, however, I am looking for a course to learn how to more effectively format noscripts. My noscripts are so messy and hard to read. Any ideas?

https://redd.it/1gudh85
@r_bash
Reading array not working

I'm running my noscripts on ubuntu.

I've tried to read an array using read command and it's as follows:

read -a arr

which is working when I execute it as a standalone command and not working when I'm trying it use it in a shell noscript file.

https://preview.redd.it/hjo58avuxz1e1.png?width=582&format=png&auto=webp&s=faea749ec637d31dff18fc0f027ab901f7d83df0



https://redd.it/1gviv1m
@r_bash
Running a Binary From Another Disk – macOS

Hello,


I faced a real-life challenge by trying to run a Unix binary installed on another partition of my SSD. Trying to execute it showed the "Segmentation error" message which usually points to an incompatibility. Switching to the partition with a newer macOS that hosts the binary allows me to run it as intended.

I suspect it's because of the paths to dependencies hardcoded in the binary. My question is, is it possible to make it use these paths even if I'm currently working from the other partition?

https://redd.it/1gvk0he
@r_bash