r_bash – Telegram
How to check in bash if python noscript is running?

I use android (termux) scheduler to trigger following scheduler.sh

#!/data/data/com.termux/files/usr/bin/bash

# load EVs
source "$HOME/storage/shared/Books/AppsCfg/Termux/envfile"

python "
$MEMS/Binv/noscripts/binvscheduler.py"

Most of the time it works great (according to schedule android triggers scheduler.sh which triggers binvscheduler.py noscript), but sometimes on device wake up binvscheduler.py gets double triggered. I added create lock file logic into python noscript and it catches 99% of double triggers except one case... (i can't even understand how it's possible. maybe somehow 2 binvscheduler.py run exactly same moment so python can't create lock file fast enough. Not sure)

Anyway, how do i check inside bash (in
scheduler.sh) if binvscheduler.py is already running or not?

https://redd.it/12625u0
@r_bash
What is the meaning of ! -d

I'm sure this has been asked else where so sorry if so. But i'm with a collogue and we can't figure out what this is. Would any one happen to know Really appreciate ti!

https://redd.it/1263vrz
@r_bash
I couldn't find a way to check the difference between the current git branch and its parent so I decided to DIY

Hey everyone! As the noscript suggests, I created a small noscript to help me check the difference between my current branch and its parent by keeping a table that points to the parents. here is my repo

https://github.com/A-Siam/diffwatch

I am by no means a noscripting wizard so any suggestions or contribution is much appreciated.

Also, I don't know if my noscript is even a good idea :D if there is any good alternative to my hacky noscript please let me know.

cheers.

https://redd.it/1266mmd
@r_bash
How to delete a matching line and it's line break in a file

I have a .conf file where I use echo to append a line of text with a line break. But if I later want to remove the line I can't remove it and the line break.

To append the line to the end of file I use:

echo 'drive_db_test_url="127.0.0.1"' >> "$file"

Then I can remove the line with the following but it leaves the line break:

sed -i 's/drive_db_test_url=\"127\.0\.0\.1\"//' "$file"

I've tried things like but they don't work:

sed -irz 's/drive_db_test_url=\"127\.0\.0\.1\"\n//' "$file"

And I've seen all sorts of ways to remove all line breaks in a file, using tr, sed or awk but I don't want to remove all line breaks.

https://redd.it/126au5r
@r_bash
2>&1

You know what gets my head in?

In Linux/Bash when we want something to run in the background we would do something like this: ./yourCommand > /dev/null 2>&1 &

I am taking issue with 2>&1. "&1" refers to a variable as we can see by the "&", the standard bash variable "standard output" so far so good :> all makes sense.

But the "2" here refers to another variable "standard error" why then we don't write &2>&1?

Would ./yourCommand > /dev/null 2>1 & be valid syntax and work?

https://redd.it/126ogzm
@r_bash
A helper function to tell if a noscript is sourced?

I write a fair amount of noscripts and I often have strong opinions on whether those noscripts should be sourced or executed. It's usually because I don't want to screw over future me because I've written a noscript that is a little aggressive with the environment.

For those noscripts I have a block of code I run:

(return 0 2>/dev/null) && sourced=1 || sourced=0
if [[ $sourced -ne 0 ]]; then
echo "Don't source this noscript. Run it directly"
return 1
fi

I also hate copy and pasted code, but because this relies on the behavior return has depending on if a noscript is sourced or executed, I can't really put this is a helper function and call that helper function. Instead I do this (mildly crazy) thing where I have a bunch of noscripts stored in variables and then I just eval those in the noscript.


So I have a utiltiy noscript with something like:

# shellcheck disable=SC2034
BASH_COMMON_SCRIPT_UNSOURCEABLE=$(cat <<'EOM'
(return 0 2>/dev/null) && sourced=1 || sourced=0
if [[ $sourced -ne 0 ]]; then
echo "Don't source this noscript. Run it directly"
return 1
fi
EOM
)

And then I use this in a noscript kinda like:

CONFIGROOT_DIR_SCRIPT="$( cd "$( dirname "$( readlink -f "${BASH_SOURCE[0]}" )" )" >/dev/null 2>&1 && git rev-parse --show-toplevel 2>/dev/null )"
if [ -f "${CONFIGROOT_DIR_SCRIPT}/util/noscripts_as_variables.sh" ]; then
# shellcheck disable=SC1091
source "${CONFIGROOT_DIR_SCRIPT}/util/noscripts_as_variables.sh"
fi
eval "${BASH_COMMON_SCRIPT_UNSOURCEABLE}"

And yes I'm aware of the perils of eval'ing an env var.


Is it possible to do this in a more sensible way?

https://redd.it/126tv9y
@r_bash
CSV to variables

I'm trying to parse a csv to variables to use it in "update all wordpress/nextcloud/..." noscripts

The CSV looks like this:

nicename,application,directory
blog1,wordpress,/var/www/wordpress1
blog2,wordpress,/var/www/wordpress2
cloud,nextcloud,/var/www/nextcloud

How do i parse these into variables like $blog1.directory (using the nicename)?

https://redd.it/126rxvi
@r_bash
Need help creating a simple loading noscript

Hi everyone! I am currently creating a noscript that saves data to a file, and another one that loads that data. I have already create the saving part, but now I need to figure out the loading part. I need to load the even lines as "arg1(number of line)" and "arg2(number of line)". How can i do it?

https://redd.it/126xl55
@r_bash
Learning bash is so frustrating

Can you recommend to me any site more preferably a pdf tutorial for bash.
Thank you.

https://redd.it/1272uv3
@r_bash
Color schemes in Micro

Hello, I am just wondering how to change the color scheme of micro text editor in a bash noscript.

the command to change the color scheme is

^e set colorscheme "colorscheme"

https://redd.it/1279ifv
@r_bash
Made a noscript manager for non-savvy users

Hey there,

&#x200B;

I work with a lot of field techs, skill levels on computers vary. We have a bunch of various noscripts that we need the techs to run, but some have a hard time staying organized.


I made this so that there is a single folder, where all the noscripts reside. You only have to open this single "app" if you call it that. From there, they can run multiple noscripts with an interface.

&#x200B;

I couldn't really find anything like this, so I made it.

&#x200B;

Thoughts on improving? Also feel free to use it.

&#x200B;

https://github.com/kylezwhite/slector

https://redd.it/127f4tk
@r_bash
Question about calls with relative paths

The following is a call with an absolute path specification that works for me. This call, opens the file samplefile with the editor xed:

xed /a/b/c/d/e/f/g/samplefile.txt

Suppose I open a terminal and type the following:

cd /a/b/c/d

How would I then have to open the text file with the editor xed from this position with a relative specification. For example the following call I tried seems to be wrong here:

./e/f/g/samplefile.txt

https://redd.it/12809zu
@r_bash
Issue with sorting grep results in bash noscript

I do not know how to get my bash noscript to produce the right output, but it's very close. I need it to sort from highest frequency codon to lowest like this for an example correct output:

aac 20

aag 9

cgg 2

pastebin w/ code: https://pastebin.com/hH1p1Yxk

output: https://imgur.com/a/y78dy5l

https://redd.it/12854yn
@r_bash
I don't know who needs to see this but I wrote a noscript to optimize Arch for Persian/Farsi writing/reading. (Link below)

Here is the noscript
It's a dead-simple noscript that only installs some packages and generates proper locale and sets the time and date, but I guess it could still help new users.
Cheers.

https://redd.it/1287vum
@r_bash
N00b question

This is the noscript I'm using.

Now, I'm supposed to replace every instance of RAW_FILE with the actual path to my file. I'm having trouble with this. I've tried single quotes, double quotes, a space between the parentheses, and none of them work. Let's say the file in question is called file.xyz for example, how would I reference it? Note that the file is in the same directory as the noscript.

https://redd.it/128g3h7
@r_bash
using grep in noscript

I am trying to write a noscript that will list a directory's contents and use grep to filter for only certain match sub directories and files. While the grep command works in command line fine when I put it in a noscript it no longer gives a return just holds up the noscript causing me to have to Ctrl-C out of it. I'm now a brand new noscripting guy but definitely a novice. I am on a Linux Machine attempting this. Any assistance would be greatly appreciated.

https://redd.it/128otp8
@r_bash
Need assistance for bash noscript

I have a noscript i am writing which lists directories or files in a location and displays them as selections to choose from. Once Chosen I would like to copy the "file" or "directory" to a new locations keeping all the contents. The copy part is goofing me up I cant seem to figure out how as when I am listing the choices its saving the full directory path PLUS a ":" sign. All I need is the full path call out and then a way to copy to a new given location. This noscript is being written on a linux machine.

Following is what I have thus far.. its proving challenging but ive been working on this for 4 hours just to get this far... I know the final line does not work.

#!/bin/bash

echo "Please select the item from the list"

files=$(ls /home/mib2/WorkTest/20230331*)
i=1

for j in $files
do
echo "$i.$j"
file[i]=$j
i=$(( i + 1 ))
done

echo "Enter number to select"
read input
echo "You selected: ${file[$input]}"

cp -R "${file[$input]}" /home/mib2/WorkTest/WWW/NEW1/

https://redd.it/128tnm0
@r_bash