r_bash – Telegram
Duplicate files with the same context

Hi,

I need to use single command to create the same 20 files that all of them contain the same sentence in linux, i tried a couple of commands but non of them seem to do exactly that.

Help anyone ?

https://redd.it/ys918y
@r_bash
Syntax error near unexpected token 'fi'

#! /bin/bash

drawLine(){
x1=$1
y1=$2
x2=$3
y2=$4

dx=$(($x2-$x1))
dy=$(($y2-$y1))
dx1=$dx
dy1=$dy

if $dx -lt 0
then
dx1=(-$dx)
fi
if $dy -lt 0
then
dy1=(-$dy)
fi
twody1=(2$dy1)
twodx1=(2
$dx1)
twody1minusdx1=$(($twody1- $dx1))
twodx1minusdy1=$(($twodx1- $dy1))

if [ $dy1 -le $dx1 ]
then
if $dx -ge 0
then
x=$x1
y=$y1
xe=$x2
else
x=$x2
y=$y2
xe=$x1
fi
echo $x
echo $y
for ((i=0; x -lt $xe; i++))
do
x=($x+1)
if $px -lt 0
then
px=$(($px + $twody1))
else
if $dx -lt 0 && $dy -lt 0
then
y=($y+1)
elif $dx -gt 0 && $dy -gt 0
then
y=($y+1)
else
y=($y-1)
fi
dy1minusdx1=$(($dy1-$dx1))
twody1minusdx1=(2*$dy1minusdx1)
px=$(($px + $two
dy1minusdx1))
fi
echo $x
echo $y
done

fi #(error line)


else
if $dy -ge 0
then
x=$x1
y=$y1
ye=$y2
else
x=$x2
y=$y2
ye=$y1
fi
echo $x
echo $y
for ((i=0; y<$ye;i++))
do
y=($y+1)
if $py <= 0
then
py=$(($py + $twodx1))
else
if $dx -lt 0 && $dy -lt 0
then
x=($x+1)
elif $dx -gt 0 && $dy -gt 0
then
x=($x+1)
else
x=($x-1)
fi
dx1minusdy1=$(($dx1-$dy1))
twodx1minusdy1=(2*$dx1minusdy1)
py=$(($py + $two
dx1minusdy1))
fi
echo $x
echo $y
done
fi
}


drawLine 0 1 2 3

This code gives error at line 65 and i dont know why.
I am trying to make a line drawing algo for bash terminal.

and i am stuck here

please help

https://redd.it/ysggci
@r_bash
New to bash noscripting

I'm new to bash noscripting, but not so new that "echo 'Hello World'" is the bee's knees. I am, however, new enough that the difference between '...' and "..." is confusing. LOL. My general problem is that there's a gap between newby tutorials and advanced tutorials. Where can I find the middle level help?

Here's a noscript I've been working on:

set -x

vm_name=$(sudo virsh list --all | sed 1,2d | cut -d ' ' -f 6)

vm_dir=$(sudo virsh vol-list --pool pool | sed 1,2d | tr -s ' ' | cut -d ' ' -f 3)

vm_size=$(qemu-img info "${vm_dir[@\]}" | grep 'size' | sed -n '1,2p' | cut -d ' ' -f 1-4)

clear

echo -e "${vm_name}\\n"

echo -e "$vm_dir\\n"

for i in "${vm_size[@\]}"; do echo "$i"; done

echo "{vm_size[@\]}"

&#x200B;

exit

&#x200B;

&#x200B;

\#vm_size () {

\# qemu-img info ${vm_dir} | ## <- here are you're problems

\# grep 'size' |

\# sed -n '1,2p' |

\# cut -d ' ' -f 1-4

\# }

I can't get output from vm_size no matter what I try. Where do I go to learn how to do the above properly?

Solutions are welcome, but resources are really what I'm looking for.

Thanks.

https://redd.it/ysf28x
@r_bash
Making an alias disregard other aliases

I'm trying to rebind some dangerous commands. I keep accidentally invoking dd in the terminal, so I had the idea of aliasing "dd" to an error message, and another alias like "disk-destroyer" to the actual dd utility into. So I did this:

&#x200B;

alias disk-destroyer='dd'

alias dd="echo 'Probably the wrong command. Use alias \"disk-destroyer\" for the actual dd command.'"

&#x200B;

The problem here is that "disk-destroyer" will link back to the dd alias. Is there any way around it?

https://redd.it/ysng2m
@r_bash
Why won’t this bash noscript work?

#! bin/bash #

Printing System Variables #Print Bash shell name

echo $BASH # Print Bash shell Version

echo $BASH_VERSION # Print Home directory name

echo $HOME *

https://redd.it/ysppjw
@r_bash
How can I loop through all files with file extension within a certain set of extensions?

I want to loop through all files ending in `.mp3` or `.mp4`.

I know that I can do

for f in *.{mp3,mp4}; do

However if there happen to be no mp3 files, f will also assume the value `*.mp3` which is unwanted.

&#x200B;

If I only want to consider one file extension, I know that I can do

for f in *.mp3; do
[ -f "$f" ] || break

But this does not easily apply to more file extensions.

Thank you for your help!

https://redd.it/ysoiea
@r_bash
Cluster; After the job finishes ,How to initiate file transfer? WinSCP

The cluster I am working with sends emails after finishing a job.

How can I monitor email to initiate the file transfer may be it with WinSCP or through a shell noscript?

Actually, I need to have a large number of plots and calculations to be made on the go; how can I do that?

https://redd.it/ysofcb
@r_bash
Curl request

I have a textfile which i would like to send to my telegrambot. The issue iam facing is that the textfile does not get sorted correctly when i post it through the curl request.

But when i run it in terminal it sorts nicely without any issues.

curl -s --data text="$(cat '/files/test.txt')" --data-urlencode "chat_id=@chatid123" 'https://api.telegram.org/botmyapikey/sendMessage'

This below is the format i want. I've read about word splitting but the quotes around the cat command does not seem to make a difference.

eurusd 1621
gbpusd 1539
eurcad 1332
gbpcad 1116
nzdusd 1054
nzdcad 928
audcad 867
eurgbp 324
xauusd 133
euraud -25
audnzd -128
eurnzd -213
gbpaud -484
gbpnzd -753
usdcad -804
eurchf -840
eurjpy -856
btcusd -1186
gbpjpy -1480
cadjpy -1604
xaujpy -2432
usdjpy -3058

Help is appreciated

https://redd.it/yt5sry
@r_bash
How to delete empty lines in multiple files?

I tried this but it didn't worked:

sed -i '/^$/d' *.txt

I want to be able to delete empty lines in files in subdirectories as well.

https://redd.it/ythb7w
@r_bash
A way to run a noscript called XYZ.sh and the output will be in a file called XYX.out

I was asked to write a noscript that a user could run and the output would be easy for them to copy.

Although this is not what the noscript did it is an example where if you run a noscript called "AScript.sh" the user will see the output and have a noscript called "AScript.out" after.
I hope someone finds the idea useful.

#!/usr/bin/env bash               

# Get the noscript name
Me="${0##*/}"

( (

# do a read from the df command
while read -r MountPoint Type; do

# print out a command
echo "${MountPoint} uses filesystem type ${Type}"
sleep 2

# From inside the first loop do something withn the mount point
while read -r FoundFile; do

# Print out a message
echo "I have found your file \"${FoundFile}\" in filesystem \"${MountPoint}\""

done< <(find "${MountPoint}" -xdev -type f -iname "*[a-c].mp4" 2> /dev/null)

# run a df and pass it to read
done< <(df -PTh -txfs -text{3,4} | awk '!/ilesystem/ { print $7 " " $2}')

) 2>&1 ) | tee "${Me/%sh/out}"


https://redd.it/ytm2ud
@r_bash
Bash noscript to rename files excluding names in an array

I currenlty have a noscript where I rename files by removing whitespace and certain names.

prename -v 's/ /_/g' *

prename -v 's/_-_/_/g' *

prename -v 's/_\(Summer-HD\)//ig' *

prename -v 's/_\(Hammer\)//ig' *

prename -v 's/_\(Hardware-Hybrid\)//g' *

prename -v 's/_\(digital\)//ig' *

prename -v 's/_\(Resolution-SD\)//ig' *

What I have tried is a for loop and place name in an array but that has not worked.


exclude=('(Summer-HD)' '(Hammer)' '(digital)' '(Resolution-SD)' '(Vacation)' '(Hammer-Hybrid)')

for x in "${exclude[@]}";
do prename -v 's/$x/_/g' * {} \;
done

This for loop does not work at all, and I'm not sure if I can pass a variable to prename. I would like to put the names in an array since I currently have more than 200 that i would like to remove. This list will grow as I restore these files from old backups.

https://redd.it/ytqnsb
@r_bash
ASCII Pendulum written in BASH noscript

I am so excited to share my BASH ASCII graphics library.
Been working on it for a while and its finally working.
I made a ASCII pendulum using it.

I've named the library - baSHed2D

Tbh the whole logic of pendulum was copied from coding train YouTube channel's p5.js pendulum video😅

Here's the Demo Video

YouTube link

Ans here's the code

GitHub link

Please review my code and suggestions are welcomed and I actually need some suggestions to improve this.

What you can do using baSHed2D

Draw lines,

Draw circles,

Draw rectangle,

Move these shapes


I will add mouse location getters too.

And a huge thanks to you guys, i had some issues regarding my code and I posted it here. It was for the line drawing algorithm, you guys are great. I learnt so much from your advices.

https://redd.it/ytriej
@r_bash
what are you guys toughts on this, and how can i fixed?
https://redd.it/ytujy2
@r_bash
Correct way to insert text in columns

I have this Columns in a text file.

Lets say i would like to add a column to Countries or Numbers or Cities.

What would be the correct way to do this?

I've tried this, to insert in the second column.

printf '%-20s' 'Stockholm' | paste -d "\\t" /file.txt -

Numbers Cities Countries
232323 blahblah waeawewae
232323 blahdadad waeawewaew
123123 asdsadads waewaewaea
123123 asdasdasd waeaweawea

&#x200B;

https://redd.it/ytw075
@r_bash
Running bash noscript from outside Terminal, won't pick up second flag ¯\_(ツ)_/¯

Hi,
I'm running a noscript from Lingon X, a scheduler on macos. It generally works but ignores the *--cuesheet* flag. Can anyone see why?

Lingon X uses this command:

/bin/bash -li /Users/goggle-moggle/iplayer.sh

The iplayer.sh noscript looks like this:

#!/bin/bash

shopt -s expand_aliases

alias gip='get_iplayer --file-prefix="<name> - <episode> <pid> <version>" --pid '

gip m000b075 --pid-recursive --cuesheet
gip b09ymqm4 --pid-recursive --cuesheet


The noscript works as expected when I run from Terminal.
Thanks!

https://redd.it/ytwsi0
@r_bash
Round robin algorithm in bash noscript

Hi everyone. So I just started learning bash noscript a few weeks ago. I got an assignment and I have no idea how to do this. I kinda wrote in C# but I dont know how to write in bash. Can anyone help? below is the prompt

Provide a detailed specification, and design of the bash noscript that will emulate the behaviour of the round robin scheduling algorithm

https://redd.it/ytyxak
@r_bash