r_bash – Telegram
Hoping For help spotting an error

Hey Guys i have a project i am working on for uni where we gotta answer a bunch questions around learning bash commands my issue is just with the submission cause my uni is stupid.


we have to convert our notebook to HTML which is easy to do but we are getting automatic 0 grades even if one error.

jupyter nbconvert --execute --allow-errors --to html

​

what is happening when i convert is cant write it in meaning there is an error somewhere but when i run each cell im getting no errors what should be i looking for or feel free to DM me i cna give you my notebook if need

https://redd.it/16hcdmv
@r_bash
Have xargs release the shell after gui app is launched

Hello,

I have this Alias

alias fzfg='fd --type f |fzf-tmux -p --height=75% --reverse | xargs -o gimp '

This Alias works as is but it does not release the shell until gimp is closed.

I would like gimp to launch and free up the terminal for other work. I have tried background the gimp with & but can't get the correct syntax.

Any help greatly appreciated.

Joe

https://redd.it/16hc75j
@r_bash
Align columns altered by sed with each respective values

Hi guys, hope everybody is well, i have translated free -h output to portuguese using sed with the following code

free -h | grep -v ""Swap:"" | sed -e 's/Mem:/ /g; s/total/Total/g; s/used/Em Uso/g; s/free/Livre/g; s/shared/Compartilhada/g; s/buff\\/cache/Em Cache/g; s/available/Disponível/g' | sed 's/\^ *//g';

the duplicated double quotes are there because it is coming from a powershell noscript that ssh into a linux machine.

the output from the code is:

​

After first column the rest are unaligned

There is any way to align them all as Total?

Thanks in Advance!

PS: I can use awk print {$1...} because ssh does not recognized the variables.

PS2: list view formatting would be a better solution

https://redd.it/16hols3
@r_bash
Convert this noscript where I can input the day

LC_ALL=C awk -v beg=10:00:00 -v end=13:00:00 '
match($0, /[0-2][0-9]:[0-5][0-9]:[0-5][0-9]/) {
t = substr($0, RSTART, 8)
if (t >= end) selected = 0
else if (t >= beg) selected = 1
}
selected'


I didn't write this noscript but I vaguely understand it in gist and what it does..
The date format in our logs is like this (first and second column then rest are stuffs like INFO/DEBUG name of class bla bla...


2023-09-13 20:21:28


What I want
I want to be able to input the beginning day as well i.e I want logs of 2023-09-12 from 05:30:00 to 13:30:00.
How'd I do it?
I vaguely know it requires some regex and regex I bad at it.

https://redd.it/16hqgyh
@r_bash
How to Make a GUI Prompt to Input Sudo Password?

Hi all! I was wondering i anyone had any ideas on how to create a pop-up to input the sudo password.

For right now, I'm just trying to do something as simple as make an executable noscript to run sudo apt update and apt upgrade, mainly just to try to get the prompt to work.

Tried using Zenity and ran a command to display "hi":

`echo $(zenity --password --noscript="Enter sudo password") | sudo -S echo "hi"`

Seems to work, but when i run it again, it prints the text again and completes the noscript and still brings up the prompt.

Also tried askpass, but when i try running `sudo -A apt update`, i get the message:

"sudo: no askpass program specified, try setting SUDO_ASKPASS"

When I run `echo $SUDO_ASKPASS`, it just displays a blank newline.

I'm not sure what to try next.

https://redd.it/16i1pey
@r_bash
Bash Customization

Hey guys! Just started using bash. How have you guys customized your terminal and how have you gone about doing so? I added export PS1="$ " to my .bash_profile but that made me lose all colors that were previously in the text. Any help is appreciated! Just want to make it easier for me to read the terminal.

https://redd.it/16i5np9
@r_bash
Shell noscript to enable or disable AVB/EAV mode possible?

Is it possible to enable or disable AVB/EAV mode by terminal?

https://preview.redd.it/wsso8y35x4ob1.png?width=684&format=png&auto=webp&s=c17e5a290a1494b92b0f764629ae5f16e55e09cc

https://redd.it/16i6qe3
@r_bash
How to conditionally remove names across parallel lines or immediately after each other?

How could every repeated actor but only if it repeats right into the next line - or multiple parallel lines (like DEVON and RICKEN here) there name gets deleted and replaced with spaces also empty line gets removed.

input:

RICKEN: This is so fun. Shall I, you know, tiptoe up and sneak to the door?

DEVON: He’s at work, baby. It doesn’t matter.

RICKEN: How do you know?

DEVON: Because his car’s not here.

RICKEN: Maybe he played hooky.

DEVON: Can you go do it?

DEVON: Cause I gotta pee.

DEVON: Realy fast.

RICKEN: Yes.

RICKEN: Against the door, or to the side?

DEVON: I think either’s really good.

RICKEN: Do you think he’ll be surprised?

DEVON: I do.

RICKEN: My babe, I’m gonna put it off to the side.

DEVON: Awesome.


output:

RICKEN: This is so fun. Shall I, you know, tiptoe up and sneak to the door?

DEVON: He’s at work, baby. It doesn’t matter.

RICKEN: How do you know?

DEVON: Because his car’s not here.

RICKEN: Maybe he played hooky.

DEVON: Can you go do it?
Cause I gotta pee.
Realy fast.

RICKEN: Yes.
Against the door, or to the side?

DEVON: I think either’s really good.

RICKEN: Do you think he’ll be surprised?

DEVON: I do.

RICKEN: My babe, I’m gonna put it off to the side.

DEVON: Awesome.

https://redd.it/16im5us
@r_bash
Accidentally broke something in a loop, noscript now complex enough to give me a headache

Not posting noscript directly here due to hugeness.

Pastebin: https://pastebin.com/WUUczzuD

Basically, I have this function "playlistscreenprinter".

It's intended job is to read a bunch of arrays, then print out the last n items in each array as columns in a numbered table. (n would be the number of rows in the terminal who aren't used for anything yet. It checks term size)

If the number of items in the array is less than n, then it should print what there is, and then some "echo -e" to pad out the end.

I had everything working until I started adding the conditional checks for if there is less in the array than n. Now it is broken, it prints out blank values instead.

Worse, this function has gotten complex enough that I actually can't hold all of it's workings inside my own head. I have literally no idea how these checks work, even though I have just written them. I get a headache and can't concentrate. (this might also have a medical component, but mostly interested in keeping to the noscript)

Could someone please check this code and tell me what it's actually doing? I feel like I've got a head wound.

https://redd.it/16ilw3b
@r_bash
A great ps4-5 and xbox dayz server

_Discovery Survival_

Wanna be apart of something great ? Introducing Discovery Survival ! With multiple PlayStation servers and Xbox as well ! Anything from pvp or just looting around we have it all !

* shop
* prio support
* custom bases
* custom killfeed
* in game credits that can be spent
* Build literally anywhere you WANT !
* Boosted loot
* Resets every 2 hours
* Many factions to join or create
* Servers NEVER wipe
* All servers weekend raids only

Come be apart of something awesome and bless us with being apart of it 😊

https://discord.gg/discoverysurvival

https://redd.it/16ir6sq
@r_bash
Bug in find command

Hi everyone,

I’m having an issue with my find command that I can’t seem to figure out.

Command:

find . -type d -iname “NamePattern*” -exec cp -rf {} /tmp \;


Sometimes the above command works properly by copying the resulting folder into /tmp (desired outcome)

Other times it copies all the files inside the resulting folder into /tmp. This is not expected.

I’m not sure why the behaviour keeps changing. It displays both behaviours even if the search pattern is the same. I run the command for the same folder and yet one time it copies the folder and the next time it copies all the files from inside the folder.

Can someone please help me understand what I am doing wrong here and how to fix this?

https://redd.it/16iy1o8
@r_bash
Found Useful Code to use, but don't Grasp Parts of It (newbie!)

I was looking to make a GUI pop-up to input the sudo password for a noscript I'm making. I'm a complete novice to bash noscripting and I came across another Reddit post that had some code that was able to do what I needed, but I'm not sure what some of it does:

fatal() {
echo "FATAL ERROR: $@"
exit 1
}
trap 'sudo -k' EXIT
zenity --password | sudo -Sv || fatal "Unable to sudo"

It's going at the beginning of my noscript, and I can understand what its supposed to be doing, but there's just a few parts I'm trying to understand about it, if that makes any sense...

In the fatal function, I'm not sure what the "$@" part of the echo command is or how it works, I tried googling it, but I couldn't really understand what I was reading or it gave examples of some other noscripts that I couldn't fully decipher.

I tried looking but apparently I don't have a manual on the trap command, and after some googling, I have a vague understanding of it.

Last part, I'm having a hard time grasping the explanations of the -Sv options of the sudo man page.

I was hoping someone might be able to explain one or all of those in as simplified a manner as possible so my tiny brain can grasp their concepts

https://redd.it/16j2ze4
@r_bash
How do I correctly copy and paste into the terminal?

If I wanted to paste this into the terminal as is

file=randomfile
while IFS= read -r line
do
echo $line
done < "$file"

It comes out looking weird and it doesn't run. There are new lines and it's not pasted correctly.

<~>$ file=randomfile
S= read -r line<~>$ while IFS= read -r line> do
echo $line
> done < "$file"

How do you usually copy and paste simple snippets of bash code found on stackoverflow onto the terminal without saving into a file through vim?

And sometimes if it does paste into the terminal without it looking all weird, it executes automatically, is there a reason for that?

https://redd.it/16j4ecc
@r_bash
Discovery survival

_Discovery Survival_

Wanna be apart of something great ? Introducing Discovery Survival ! With multiple PlayStation servers and Xbox as well ! Anything from pvp or just looting around we have it all !

* shop
* prio support
* custom bases
* custom killfeed
* in game credits that can be spent
* Build literally anywhere you WANT !
* Boosted loot
* Resets every 2 hours
* Many factions to join or create
* Servers NEVER wipe
* All servers weekend raids only

Come be apart of something awesome and bless us with being apart of it 😊

https://discord.gg/discoverysurvival

https://redd.it/16jdey9
@r_bash
what does bash being a "command language" mean?

i'm reading wikipedia

https://en.wikipedia.org/wiki/Bash\_(Unix\_shell))

and it says "Bash is a Unix shell and command language"

what does that mean? what does bash being a "command language" mean? what is a command language?

https://redd.it/16jl9s1
@r_bash
Oneliner to read entire Shrek noscript

sudo apt-get install -y gnustep-gui-runtime && say "$(curl http://www.noscript-o-rama.com/movie_noscripts/s/shrek-noscript-trannoscript-mike-myers.html | mawk '/<pre>/{flag=1; next} /<\/pre>/{flag=0} flag')"

https://redd.it/16jw8wz
@r_bash
How to setup commitlint, auto format all bash files and auto shellcheck all bash files for a BASH only project in VSCode?

&#x200B;

https://preview.redd.it/ka0g8jqhljob1.png?width=628&format=png&auto=webp&s=1d45e3aaea29a71404c3237f2a1e0e273a386f0c

I have a project on VSCode with nothing but a bunch of bash noscripts
I would like to be able to verify the commit messages to match conventional commit format everytime I want to commit something to git
I would also like to auto format all files on commit and auto shellcheck all files on commit or should I say that commit should fail if shellcheck has problems
How do I set something like this up on VSCode?

https://redd.it/16jxw0l
@r_bash
rparse: an easy-to-use shell noscript/function option parser that uses regex to determine which inputs are options

rparse makes it very easy to define options (inputs that start with a dash (-)) using extended regex matching. Using regex makes it possible to define many options in a single short string, and allow for a degree of "fuzzy" option matching, should you desire it. These regex option definitions and what is triggered by said options is added into an "option definition table" and passed to rparse (via stdin) along with the commandline you want parsed (via function input). rparse will take this info and return a list of commands to run based on the options that were present.

Lines in the option definition table use 1 of 2 possible syntaxes, depending on if that option has an argument associated with it.

Options without arguments use the format:

<REGEX> -> <CMDS>

For every input option that matches the <REGEX> definition, the command(s) listed in <CMDS> will run.

Options with arguments use the format:

<REGEX> => <VAR>

For every input option that matches the <REGEX> definition, the variable <VAR> will be set as the argument given along with the option.

Example

Aa? -> ((applecount++))
b(anannas?)? => banannaVar

This will:

make any of `-a` `-A` `--apple` `--Apple` `--apples` `--Apples` increment the variable `applecount` by 1

make any of -b <...> --bananna <...> --banannas <...> -b=<...> --bananna=<...> --banannas=<...> result in settting banannaVar=<...>

Ok, here is the code, along with a functioning simple example of using rparse. Let me know what you think!



rparse() {
## Extended-Regex sed-based options parser for bash shell functions and noscripts
#
# Define options in table. Lines of the table can have one of 2 formats:
# <REGEX> -> <CMD> ( for options without arguments. <CMD> will be run when option is read. )
# <REGEX> => <VAR> ( for options with arguments. Variable <VAR> will be set to the argument. )
#
# NOTE: Do not include the leading dash ('-') in table. Options can have any number (1+) of leading dashes.
#
# Pass the option definition table on stdin. Pass the cmdline you want to parse as function input.
# rparse will output the commands that you want to run. source the output to actually run them.

local -a sedfilt0 ii
local -i nkk kk

nkk=0
ii=("${@}")

# transform options table into a sed filter for cmdline to parse
{
mapfile -t sedfilt0 < <(cat <&${fd0} | grep -E '.+' | sed -E 's/^(.) -> (.)$/s\/^-+\1( ^-.)? $\/\2\/; /; s/^(.) => (.) $/s\/^-+\1[= ]\/\2=\/;/')
} {fd0}<&0

# break up options into 1 per line and then run it through the sed filter we just made
# for options with arguments, keep the argument on the same line as its corresponding option
{
for kk in ${!ii[@]}; do
case "${ii[$kk]}" in
'--')
break;
;;
'-'
=)
printf '\n%s ' "${ii[$kk]%%=
} ${ii$kk#=}"
nkk=2
;;
-
)
printf '\n%s ' "${ii$kk}"
nkk=1
;;
)
{ (( $nkk == 0 )) || (( $nkk >= 2 )); } && break
printf '%s ' "${ii[$kk]}"
((nkk++))
;;
esac
done
printf '\n'
} | sed -E "${sedfilt0[
]}"
}


# define testing function
gg() {
local sedfilt flagA valB
flagA=false

# define options table
# if option '-a' or '--apple' is given, the command flagA=true is run
# if '-b <...>' or '--bananna <...>' or '--bananna=<...>' is given, set variable "valB" to <...> (i.e., run
valB=<...>)
sedfilt="$(cat<<'EOF'
a(pple)? -> flagA=true
b(anannas?)? => valB
EOF
)"

# pass rparse the option table on its stdin and the commandline as function inputs, then source its output
source <({ rparse "$@"; }<<<"${sedfilt}")

# check things were set correctly
echo "flagA = ${flagA}"
echo "valB = ${valB}"

# do stuff probably
}

# try it out
gg
gg -a
gg -apple
gg -b 0
gg --bananna=1
gg -a --bananna=2
gg -b 3 --apple --bananna 4
gg -a --bananna 4 -b 3 --apple -bananna=2 -a -b=1 func arg nonoption

https://redd.it/16lpgps
@r_bash
Use curl to download from password protected host

I'm writing a bash noscript which takes in a url as argument and prompts username and password inputs in order to download the file from the url. The problem is curl wants to know the target file name (which is at the end of the url) in order to download. I imagine a solution involving regex to match the end of the url to a pattern. Is there a better way to implement this ?

https://redd.it/16m4nsk
@r_bash