r_bash – Telegram
Made a noscript manager for non-savvy users

Hey there,

​

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.

​

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

​

Thoughts on improving? Also feel free to use it.

​

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
Writing a noscript that adds numbers to the end of a text file full of words

I am trying to write a noscript that adds numbers to the end of a list of words. Here's what I've tried:

#!/bin/bash
# add_numbers.sh

while read w; do
echo ${w}{0..9}
done

Then I run it with `$ ./add_numbers.sh < words.txt`

This runs, but it adds the numbers on the next line down, I think:

9 ZOOS
9 ZORN
9 ZOROASTER
9 ZOROASTRIAN

&#x200B;

So I tried to strip the carriage return (right?) at the end of the line when `read` gets the line:

#!/bin/bash
# add_numbers.sh

while read w; do
stripped=echo ${w} | tr -d "\r"
echo ${stripped}{0..9}
done

But the output just gives errors:

./add_numbers.sh: line 4: $'AGGLUTINATE\r': command not found
0 1 2 3 4 5 6 7 8 9
./add_numbers.sh: line 4: $'AGGLUTINATED\r': command not found

&#x200B;

What am I doing wrong?

&#x200B;

EDIT: For the heck of it I asked GPT3.5 to do this and here's what I got:


#!/bin/bash

while read line; do
for i in {0..9}; do
echo "$line$i"
done
done < "${1:-/dev/stdin}"

I left out the stdin redirect at the bottom, but what it outputs replaces the first character with a number in each word:

9ULU
0ULUS
1ULUS

Those lines would be ZULU and ZULUS.

https://redd.it/128y3cp
@r_bash
Noobie BASH help

Hi -

New to BASH noscripting and need some direction.
I have this noscript below, but it's not creating the file i'm after. I think its related to path name for the new file location.

The error i'm getting is:
Start time: Sun, 02 Apr 2023 15:05:17 GMT
Stop time: Sun, 02 Apr 2023 15:05:18 GMT
Current status: 0 (Normal)
Standard output/error:
/bin/bash: line 15: Scripts/test/20230402-150518.txt: No such file or directory
Text file created at: Scripts/test/20230402-150518.txt

But no file created. I think i have the path name wrong, but not sure how to format it?

I think this is wrong.... folder_path="/Scripts/test"
but i'm not sure "why" its wrong.

&#x200B;

Any help appreciated-


\~\~

\#!/bin/bash

\# Get the current date and time

datetime=$(date +"%Y%m%d-%H%M%S")

&#x200B;

\# Get the current day name and date

day_and_date=$(date +"%A, %B %d, %Y")

&#x200B;

\# Specify the folder where you want to create the text file

folder_path="/Scripts/test"

&#x200B;

\# Create the text file with the date time stamp as the file name

file_path="${folder_path}/${datetime}.txt"

&#x200B;

\# Write the day name and date to the text file

echo "$day_and_date" > "$file_path"

&#x200B;

\# Print the file path for reference

echo "Text file created at: $file_path"

\~\~

https://redd.it/129b1l5
@r_bash
What constitutes a "debugger enabled version of bash"

Hello.

Just for the hell of it for now, but it may be useful in the future, to have a gdb-alike front end for debugging bash noscripts, I think it is more pleasant than just a DEBUG trap.

Right now, I'm getting feedback indicating that `bashdb` isn't installed, but I also get the message:

warning: cannot start debugger; debugging mode disabled

So, I'm in doubt whether it is:

* A special version of bash, built for supporting [bashdb](https://sourceforge.net/projects/bashdb/files/bashdb/).

* Having a properly installed version of bashdb.

* One of the above in combination with `shopt -s extdebug`.

And I won't take further action, before I understand what that means.

I haven't installed `bashdb` yet. I can't find a debugger enabled version of bash in the `apt` repository, so, I wonder if I ultimately have to build a debug-enabled bash version myself. :)


Thanks!

https://redd.it/129fc1g
@r_bash
How to differentiate between output and information in bash noscript

Sorry for the terrible noscript but I really couldn't think of anything better.

I have a bash noscript that uses echo to print some information about the execution context and then execute a command with said context.

I want to take the output of that command and save it into a variable or pipe it into another program.

The problem is that the contextual information is also considered as part of the output.

In PowerShell I can use Write-Host and Write-Output to differentiate the two.

Is there something similar in bash?

Example:

$ ./terraform.sh env output -raw some_value
Environment 'env' running on '<AWS region>'
a_very_useful_information


Obviously I want to save the output in a variable and be able to use it somewhere else without the information line printed before.

https://redd.it/129i3d7
@r_bash
bash behavior with nested parentheses?

Is there a (documented) reason why I can use for i in sd[abc]; do … , done and get correct values of sda, sdb, sdc, but I can't use for i in {sd[abc],mmcblk0}; do … , done because I only get sdaabc and mmcblk0, not sda, sdb, sdc and mmcblk0?

https://redd.it/129m660
@r_bash
Script Complete for now

I finally have the noscript i was working on all day yesterday to a point where it works. There is a couple of nuances id like to refine number 1 being 1.) Have the Choice menu pop up after completion of each section. I know its probably an easy fix but....as I seen yesterday nothing is as simple as you think it is. Following is the noscript i have that works.

#!/bin/bash

var1=/home/mib2/WorkTest/SavedData
var3=/home/mib2/WorkTest/Item1_Data/
var4=/home/mib2/WorkTest/Item2_Data/

cat /home/mib2/WorkTest/paths.txt #Prints the 3 paths above form .txt file)

PS3='Choose what you want to do: '
choices=("Make_Directory" "Copy_Item2_Data" "Copy_Item1_Data" "Tar_Data" "Quit")
select item in "${choices[@]}"; do
case $item in

"Make_Directory")
cd $var1
echo "What is the new directory to save data going to be called?"
read var2
mkdir -m 777 $var2
echo ""
echo "Directory has been made"
echo ""
echo "The Contents of $var1 is now: " ; ls -al --color=none $var1
var5=/home/mib2/WorkTest/SavedData/$var2
echo "The new Data Name and its Location is: $var5 "
;;


"Copy_Item2_Data")
# Generate list of files in directory
echo "Please enter a directory path which has the Truth Data contained within: "
ls $var4 | grep 20230331

# Ask user to choose a file
echo "Please choose the Data to copy:"
read file_name

# Copy chosen file to another directory
cp -r "$var4/$file_name" "$var5"
echo "The file has been successfully copied to $var5"
ls -al --color=none $var5
;;

"Copy_Item1_Data")
# Generate list of files in directory
echo "The following directories or files are in the Item1 Data directory:"
ls $var3 | grep 20230331

# Ask user to choose a file
echo "Please choose a file or Directory to copy:"
read file_name2

# Copy chosen file to another directory
cp -r "$var3/$file_name2" "$var5"
echo "The file has been successfully copied to $var5"
ls -al --color=none $var5
;;


"Tar_Data")
# Generate list of files in Saved Data directory
echo "The following directories or files are in the Saved Data directory:"
ls -al /home/mib2/WorkTest/SavedData

# Ask user to choose a file
echo "Please choose a Directory to tar:"
read file_name3

#cd $var1
tar -cvf $var5.tar $var5
chmod 777 $var5.tar
break
;;

"Quit")
echo "User requested exit"
exit
;;
*) echo "invalid option $REPLY";;
esac
done

https://redd.it/129n103
@r_bash
How can i send email with bash noscript/from terminal

Im trying to write a noscript that will send email every day about some information about system. I tried sendmail and curl from terminal but i couldnt send email. Anyone can enlighten me? I am using arch linux.

https://redd.it/129o2mp
@r_bash
how bad of an idea is it to pipe (via named pipe) something into an interactive shell?

I have a noscript, `pipe-reciever.sh` that takes output of a named pipe and pipes it into an interactive shell:

#!/usr/bin/env bash
tail -f test_pipe | bash -i

(tail is used here so that bash doesn't exit after 1 input). Since any process can write to this, is it a huge security hole? if the pipe is in my home directory and a malicious process can write to the pipe, it can execute arbitrary code. Is it any different than if the same malicious process could write arbitrary code to a config file e.g. my .bashrc?


Why am I doing this? (backstory/possible XY problem): I want to trigger some of my bash keybindings programmatically. I've found it's possible by running my pipe-reciever noscript and sending the keys using another noscript like:
`printf $'\cp\ct' > test_pipe`
which will send a `C-p C-t` sequence and the interactive shell will execute the appropriate key binding, which I defined in my .bashrc.

I really do need to trigger these bindings programmatically: I'm using bash's keybinding functionality to supplement an app called [Key Mapper](https://github.com/keymapperorg/KeyMapper) which is no longer being actively developed. I'm using Key Mapper to execute shell noscripts in Termux. These shell noscripts contain variations of the `printf` command from above which trigger my bash keybindings.

https://redd.it/129yc7s
@r_bash
Bash noscript with some steps

So i am trying to write a bash program that will capable with these steps:

1. Every night, program list all belows and send mail to related person.
1. Which users are logged in
2. How was the overall performance of ram, cpu etc
2. When user wants to use rm -rf command, program should ask "you sure" and if user type yes it will be deleted
3. Program need to list all the changes done on environment on a file. When new user logged in it will show 10 changes as a list.

I used debug_trap but couldnt make it work for rm part. I am not sure what i need to list as environment changes and how to detech if new user logged in. Thanks in advance.

https://redd.it/12aczvm
@r_bash
Problem with single quotes

I'm trying to display the following string, without modifying the variable content and keep double and single quotes intact:

noscript="I don't look good when I cry"
/bin/bash -c "printf '$noscript'"

Is possible?

https://redd.it/12aeq1u
@r_bash