Is it possible to get the exit code of mv in "mv $folder $target &"
Is it possible to get the exit code of the mv command on the 2nd last line without messing up the progress bar function?
#!/usr/bin/env bash
# Shell Colors
Red='\e0;31m' # ${Red}
Yellow='\e[0;33m' # ${Yellow}
Cyan='\e[0;36m' # ${Cyan}
Error='\e[41m' # ${Error}
Off='\e[0m' # ${Off}
progbar(){
# $1 is pid of process
# $2 is string to echo
local PROC
local delay
local dots
local progress
PROC="$1"
delay="0.3"
dots=""
while [[ -d /proc/$PROC ]; do
dots="${dots}."
progress="$dots"
if [ ${#dots} -gt "10" ]; then
dots=""
progress=" "
fi
echo -ne " ${2}$progress\r"; sleep "$delay"
done
echo -e "$2 "
return 0
}
action="Moving"
sourcevol="volume1"
targetvol="/volume2"
folder="@foobar"
mv -f "/${sourcevol}/$folder" "${targetvol}" &
progbar $! "mv ${action} /${sourcevol}/$folder to ${Cyan}$targetvol${Off}"
https://redd.it/1ag3qiz
@r_bash
Is it possible to get the exit code of the mv command on the 2nd last line without messing up the progress bar function?
#!/usr/bin/env bash
# Shell Colors
Red='\e0;31m' # ${Red}
Yellow='\e[0;33m' # ${Yellow}
Cyan='\e[0;36m' # ${Cyan}
Error='\e[41m' # ${Error}
Off='\e[0m' # ${Off}
progbar(){
# $1 is pid of process
# $2 is string to echo
local PROC
local delay
local dots
local progress
PROC="$1"
delay="0.3"
dots=""
while [[ -d /proc/$PROC ]; do
dots="${dots}."
progress="$dots"
if [ ${#dots} -gt "10" ]; then
dots=""
progress=" "
fi
echo -ne " ${2}$progress\r"; sleep "$delay"
done
echo -e "$2 "
return 0
}
action="Moving"
sourcevol="volume1"
targetvol="/volume2"
folder="@foobar"
mv -f "/${sourcevol}/$folder" "${targetvol}" &
progbar $! "mv ${action} /${sourcevol}/$folder to ${Cyan}$targetvol${Off}"
https://redd.it/1ag3qiz
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Running commands written in file
I am not familiar with advanced bash commands at all. I know the decent way for asking for help would be having at least a half-baked solution, but i have no idea how to do this. I would like to easily run prehook commands before testing for each project, and for that I would like to create a bashrc (zshrc) alias that searches the /test.config file for the commands that are in it, and runs them in sequence.
The format in the file is
{pre_hooks, [
{ct, "command1"},
{ct, "command2"}
]}.
The number and content of the commands is different for each project, and the the file contains a lot of thigs besides this.
I have tried to search it but could not find a relevant result. I will of course check what any given solution does, i want to learn this stuff. Thanks for the help!
https://redd.it/1aga2vn
@r_bash
I am not familiar with advanced bash commands at all. I know the decent way for asking for help would be having at least a half-baked solution, but i have no idea how to do this. I would like to easily run prehook commands before testing for each project, and for that I would like to create a bashrc (zshrc) alias that searches the /test.config file for the commands that are in it, and runs them in sequence.
The format in the file is
{pre_hooks, [
{ct, "command1"},
{ct, "command2"}
]}.
The number and content of the commands is different for each project, and the the file contains a lot of thigs besides this.
I have tried to search it but could not find a relevant result. I will of course check what any given solution does, i want to learn this stuff. Thanks for the help!
https://redd.it/1aga2vn
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Variable not global
I have the following code in my noscript and I can't figure out why
printreleasenotes() {
mapfile -t pkgs < <(comm -12 <( sort "$conf" | cut -d' ' -f 1) <( awk '{ sub("^#.| #.", "") } !NF { next } { print $1 }' "$cache" | sort))
if ((${#pkgs@})); then
local url
printf "\n%s\n" "# Release notes:"
for package in "${pkgs@}"; do
while read -r line; do
pkgswithlink="${line%% }"
if [[ "$package" == "$pkgs_with_link" ]]; then
url="${line## }"
printf "%s\n" "# $(tput setaf 1)$pkgswithlink$(tput sgr0): $url"
pkgswithlinks+=("$url")
break
fi
done < "$conf"
done
printf "%s" "all my links:" "${pkgswithlinks@}"
fi
}
Quick google search shows piping involves a subshell and that variables define inside will not be accessible globally. But the while loop does not involves any pipes.
Any ideas and the recommended way to make it accessible globally? Also is there any point in using
https://redd.it/1aglq82
@r_bash
I have the following code in my noscript and I can't figure out why
pkgs_with_links (not pkg_with_link, which is local) is not accessible globally:printreleasenotes() {
mapfile -t pkgs < <(comm -12 <( sort "$conf" | cut -d' ' -f 1) <( awk '{ sub("^#.| #.", "") } !NF { next } { print $1 }' "$cache" | sort))
if ((${#pkgs@})); then
local url
printf "\n%s\n" "# Release notes:"
for package in "${pkgs@}"; do
while read -r line; do
pkgswithlink="${line%% }"
if [[ "$package" == "$pkgs_with_link" ]]; then
url="${line## }"
printf "%s\n" "# $(tput setaf 1)$pkgswithlink$(tput sgr0): $url"
pkgswithlinks+=("$url")
break
fi
done < "$conf"
done
printf "%s" "all my links:" "${pkgswithlinks@}"
fi
}
Quick google search shows piping involves a subshell and that variables define inside will not be accessible globally. But the while loop does not involves any pipes.
Any ideas and the recommended way to make it accessible globally? Also is there any point in using
declare to initialize a variable? Would it be a good idea to initialize all variables intended to be used globally at the beginning of the noscript so that for maintaining the noscript in the future it's easier to see all the global variables and not accidentally add in code involving a new variable that might be named the same as the global variable?https://redd.it/1aglq82
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
can you make a text game in bash?
i just randomly started learning bash from youtube 4 fun although it'd be useful too for what i am doing and my job in the future, and now i have a question, can you make a decent text game in bash? i'd be quite fun to do so
https://redd.it/1agnvoh
@r_bash
i just randomly started learning bash from youtube 4 fun although it'd be useful too for what i am doing and my job in the future, and now i have a question, can you make a decent text game in bash? i'd be quite fun to do so
https://redd.it/1agnvoh
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Alias for Executable in Makefile
How do I make an executable an alias? So if I had an executable called ./out, and I wanted to run call "out2" to run the executable instead, how'd I do it?
I want to know because I want to run an executable file without having to use a command that starts with "./"
https://redd.it/1agpwug
@r_bash
How do I make an executable an alias? So if I had an executable called ./out, and I wanted to run call "out2" to run the executable instead, how'd I do it?
I want to know because I want to run an executable file without having to use a command that starts with "./"
https://redd.it/1agpwug
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Dynamic FFmpeg build noscript with extra codecs activated
This noscript represents the result of significant effort to compile FFmpeg while incorporating numerous additional programs into its code all done in Bash.
When you execute the noscript multiple times, it will automatically track the current version of each program. If a newer version is detected, it will update them accordingly. This ensures that you consistently have access to the latest code when building and running FFmpeg.
The noscript will detect if you have Nvidia GPU's and ask if you want to install the CUDA SDK toolkit. It will also detect AMD and install header files for it's GPU.
​
Supported Codecs
GitHub Script
https://redd.it/1agri1v
@r_bash
This noscript represents the result of significant effort to compile FFmpeg while incorporating numerous additional programs into its code all done in Bash.
When you execute the noscript multiple times, it will automatically track the current version of each program. If a newer version is detected, it will update them accordingly. This ensures that you consistently have access to the latest code when building and running FFmpeg.
The noscript will detect if you have Nvidia GPU's and ask if you want to install the CUDA SDK toolkit. It will also detect AMD and install header files for it's GPU.
​
Supported Codecs
GitHub Script
https://redd.it/1agri1v
@r_bash
Why does this math expression throw an error and how can I catch it?
The purpose is to convert a string to +ve int. It works except for if the string begins with a number.
echo "$(( "9" ))"
>9
echo "$(( "99" ))"
> 99
echo "$(( "word" ))"
> 0
echo "$(( "word9" ))"
> 0
echo "$(( "9word" ))"
> bash: 9word: value too great for base (error token is "9word")
echo "$(( "99word" ))"
> bash: 99word: value too great for base (error token is "99word")
I don't much care if "9word" fails but I'd like for it to evaluate to 0.
https://redd.it/1ahqmmw
@r_bash
The purpose is to convert a string to +ve int. It works except for if the string begins with a number.
echo "$(( "9" ))"
>9
echo "$(( "99" ))"
> 99
echo "$(( "word" ))"
> 0
echo "$(( "word9" ))"
> 0
echo "$(( "9word" ))"
> bash: 9word: value too great for base (error token is "9word")
echo "$(( "99word" ))"
> bash: 99word: value too great for base (error token is "99word")
I don't much care if "9word" fails but I'd like for it to evaluate to 0.
https://redd.it/1ahqmmw
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Help with a noscript
Hello everyone. I have problems with this noscript (not sure if it is the noscript itself). I created a cron job with sudo (otherwise it does not send the system to sleep). However, the system does not wake on demanded time, i.e., the noscript only works to send system to sleep.
I have already checked bios and it is configured.
This is code!
# Path to the log file
LOG_FILE="/home/user/folder/Logs/nameofnoscript.txt"
# Set sleep time (23:00h) and wake up time (06:00h)
SLEEP_TIME="23:00:00"
WAKE_UP_TIME="06:00:00"
# Get current date
CURRENT_DATE=$(date +"%Y-%m-%d")
# Convert sleep and wake up times to timestamps
SLEEP_TIMESTAMP=$(date -d "$CURRENT_DATE $SLEEP_TIME" +%s)
WAKE_UP_TIMESTAMP=$(date -d "$CURRENT_DATE $WAKE_UP_TIME" +%s)
# Calculate time difference until next suspension
TIME_DIFFERENCE=$((SLEEP_TIMESTAMP - $(date +%s)))
# Check if sleep time has already passed for today; if so, adjust for tomorrow
if [ $TIME_DIFFERENCE -lt 0 ]; then
SLEEP_TIMESTAMP=$((SLEEP_TIMESTAMP + 86400)) # Add 24 hours (in seconds)
TIME_DIFFERENCE=$((SLEEP_TIMESTAMP - $(date +%s)))
fi
# Log next suspension
echo "Next scheduled suspension for: $(date -d @$SLEEP_TIMESTAMP)" >> $LOG_FILE
# Schedule suspension using rtcwake
sudo rtcwake -m mem -t $SLEEP_TIMESTAMP >> $LOG_FILE 2>&1
# Log suspension completed
echo "System suspended at: $(date)" >> $LOG_FILE
Could anybody help or point me the right direction?
https://redd.it/1ahsvct
@r_bash
Hello everyone. I have problems with this noscript (not sure if it is the noscript itself). I created a cron job with sudo (otherwise it does not send the system to sleep). However, the system does not wake on demanded time, i.e., the noscript only works to send system to sleep.
I have already checked bios and it is configured.
This is code!
# Path to the log file
LOG_FILE="/home/user/folder/Logs/nameofnoscript.txt"
# Set sleep time (23:00h) and wake up time (06:00h)
SLEEP_TIME="23:00:00"
WAKE_UP_TIME="06:00:00"
# Get current date
CURRENT_DATE=$(date +"%Y-%m-%d")
# Convert sleep and wake up times to timestamps
SLEEP_TIMESTAMP=$(date -d "$CURRENT_DATE $SLEEP_TIME" +%s)
WAKE_UP_TIMESTAMP=$(date -d "$CURRENT_DATE $WAKE_UP_TIME" +%s)
# Calculate time difference until next suspension
TIME_DIFFERENCE=$((SLEEP_TIMESTAMP - $(date +%s)))
# Check if sleep time has already passed for today; if so, adjust for tomorrow
if [ $TIME_DIFFERENCE -lt 0 ]; then
SLEEP_TIMESTAMP=$((SLEEP_TIMESTAMP + 86400)) # Add 24 hours (in seconds)
TIME_DIFFERENCE=$((SLEEP_TIMESTAMP - $(date +%s)))
fi
# Log next suspension
echo "Next scheduled suspension for: $(date -d @$SLEEP_TIMESTAMP)" >> $LOG_FILE
# Schedule suspension using rtcwake
sudo rtcwake -m mem -t $SLEEP_TIMESTAMP >> $LOG_FILE 2>&1
# Log suspension completed
echo "System suspended at: $(date)" >> $LOG_FILE
Could anybody help or point me the right direction?
https://redd.it/1ahsvct
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Running noscripts from master noscript causes them to fail
I have multiple bash noscripts that run in sequence. Normally they are scheduled as cron jobs and work perfectly. But, we want to change the process in which they are run - basically if one of them fails the others will not execute.
So, I decided to put them in a master noscript which calls the other noscripts in sequence. It checks the exit code from each noscript and only executes the next one if the exit code was 0. It sends an alert via email and SMS if there was an error.
The problem is, the individual jobs run just fine as cron jobs but sometimes fail when run from the master cron job. I added a ton of logging, including the old "$logfile" 2>&1, and there is really no reason for the failure. It just randomly fails. The exit code in the called job is 0, but the master noscript thinks it is not.
Is there some trick to getting something like this to work? Am I doing something stupid here and there is a better way to do it?
#!/bin/bash
logger -s "SCRIPT - FOOBARSCRIPTS - Started at $(date)"
. /home/noscripts/alerts/alerts.function
logfile="/fee/fi/fo.fum"
rm -f /fee/fi/fo.fum
touch /fee/fi/fo.fum
#
/bin/bash /foo/bar/baz.sh >> "$logfile" 2>&1
if [ $? -eq 0 ]; then
logger -s "SCRIPT - FOOBARSCRIPTS - /foo/bar/baz.sh completed successfully"
else
logger -s "SCRIPT - FOOBARSCRIPTS - Error running /foo/bar/baz.sh"
sendalert FOOBARSCRIPTS
exit 99
fi
#
/bin/bash /foo/bar/qux.sh >> "$logfile" 2>&1
if $? -eq 0 ; then
logger -s "SCRIPT - FOOBARSCRIPTS - /foo/bar/qux.sh completed successfully"
else
logger -s "SCRIPT - FOOBARSCRIPTS - Error running /foo/bar/qux.sh"
sendalert FOOBARSCRIPTS
exit 99
fi
logger -s "SCRIPT - FOOBARSCRIPTS - Ended at $(date)"
https://redd.it/1ai2wzg
@r_bash
I have multiple bash noscripts that run in sequence. Normally they are scheduled as cron jobs and work perfectly. But, we want to change the process in which they are run - basically if one of them fails the others will not execute.
So, I decided to put them in a master noscript which calls the other noscripts in sequence. It checks the exit code from each noscript and only executes the next one if the exit code was 0. It sends an alert via email and SMS if there was an error.
The problem is, the individual jobs run just fine as cron jobs but sometimes fail when run from the master cron job. I added a ton of logging, including the old "$logfile" 2>&1, and there is really no reason for the failure. It just randomly fails. The exit code in the called job is 0, but the master noscript thinks it is not.
Is there some trick to getting something like this to work? Am I doing something stupid here and there is a better way to do it?
#!/bin/bash
logger -s "SCRIPT - FOOBARSCRIPTS - Started at $(date)"
. /home/noscripts/alerts/alerts.function
logfile="/fee/fi/fo.fum"
rm -f /fee/fi/fo.fum
touch /fee/fi/fo.fum
#
/bin/bash /foo/bar/baz.sh >> "$logfile" 2>&1
if [ $? -eq 0 ]; then
logger -s "SCRIPT - FOOBARSCRIPTS - /foo/bar/baz.sh completed successfully"
else
logger -s "SCRIPT - FOOBARSCRIPTS - Error running /foo/bar/baz.sh"
sendalert FOOBARSCRIPTS
exit 99
fi
#
/bin/bash /foo/bar/qux.sh >> "$logfile" 2>&1
if $? -eq 0 ; then
logger -s "SCRIPT - FOOBARSCRIPTS - /foo/bar/qux.sh completed successfully"
else
logger -s "SCRIPT - FOOBARSCRIPTS - Error running /foo/bar/qux.sh"
sendalert FOOBARSCRIPTS
exit 99
fi
logger -s "SCRIPT - FOOBARSCRIPTS - Ended at $(date)"
https://redd.it/1ai2wzg
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
How to get the output of a program as finally seen on the screen?
Hi,
I have a program (foo) that outputs something while in progress, then deletes the current line to write the final output:
in progress foo bar<DELETE WHOLE LINE>done foo bar
So the final string seen on the screen is
I'd like to call this program from a bash noscript. The problem I am facing is:
Instead, the prefixed string "Result: " is deleted:
How can I achieve an output like:
https://redd.it/1aimagi
@r_bash
Hi,
I have a program (foo) that outputs something while in progress, then deletes the current line to write the final output:
in progress foo bar<DELETE WHOLE LINE>done foo bar
So the final string seen on the screen is
[done] foo bar.I'd like to call this program from a bash noscript. The problem I am facing is:
echo "Result: $(foo)" does not result in: Result: [done] foo barInstead, the prefixed string "Result: " is deleted:
[done] foo barHow can I achieve an output like:
Result: [done] foo barhttps://redd.it/1aimagi
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Block, I-beam, or Underscore. What's your kink?
Can't tolerate block, underscore tolerable, but beam is the boss.
https://redd.it/1ain39t
@r_bash
Can't tolerate block, underscore tolerable, but beam is the boss.
https://redd.it/1ain39t
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
[update] forkrun (the insanely fast pure-bash loop parallelizer) just got updated to v1.1 and got a new feature!!!
Earlier today I pushed a larger update to the main [forkrun](https://github.com/jkool702/forkrun) branch on github, bumping it up to forkrun v1.1.
For those that missed it, [here](https://www.reddit.com/r/bash/comments/19985k2/presenting_forkrun_the_fastest_purebash_loop/?utm_source=share&utm_medium=web2x&context=3) is the initial (v1.0) `forkrun` release thread here on /r/bash.
***
**The main "new feature" introduced in forkrun v1.1 is the ability to split up stdin based on the "number of bytes read"**. Previously, you could only split up stdin by the "number of lines read" (or, more generally, by the "number of delimiters read"). Two new flags have been introduced to facilitate this capability: `-b <bytes>` and `-B <bytes>`:
* `-b <bytes>`: this flag causes `forkrun` to read up to `<bytes>` at a time from stdin. However, if less than `<bytes>` is available on stdin when a given worker coproc is reading data it will not wait and will proceed with less than `<bytes>` data
* `-B <bytes>`: this flag causes `forkrun` to read exactly `<bytes>` at a time from stdin. If less than `<bytes>` is available on stdin when a given worker coproc is reading data it will wait and will not proceed until it accumulates `<bytes>` of data or all of stdin has been used.
* for both flags, `<bytes>` can be specified using a trailing `k`, `m`, `g`, `t`, or `p` (for `1000^{1,2,3,4,5}`) or `ki`, `mi`, `gi`, `pi`, or `ti` (for `1024^{1,2,3,4,5}`). Adding the trailing `b` and/or using capital letters is accepted, but does not change anything (e.g., `64kb`, `64KB`, `64kB`, `64Kb`, `64k` and `64K` all mean 64,000 bytes).
There is also a minor enhancement in the `-I` / `--INSERT` flag's functionality, and (of course) a handful of minor bug fixes and even a few more minor optimizations.
***
Its been awesome to hear from a couple of you out there that `forkrun` is being used and is working well! As always, let me know of any bugs you encounter and I'll try to find am squash them ASAP. If `forkrun` is missing a feature that you would find useful feel free to suggest it, and if I can figure out a good way to add it I will.
https://redd.it/1aj2na5
@r_bash
Earlier today I pushed a larger update to the main [forkrun](https://github.com/jkool702/forkrun) branch on github, bumping it up to forkrun v1.1.
For those that missed it, [here](https://www.reddit.com/r/bash/comments/19985k2/presenting_forkrun_the_fastest_purebash_loop/?utm_source=share&utm_medium=web2x&context=3) is the initial (v1.0) `forkrun` release thread here on /r/bash.
***
**The main "new feature" introduced in forkrun v1.1 is the ability to split up stdin based on the "number of bytes read"**. Previously, you could only split up stdin by the "number of lines read" (or, more generally, by the "number of delimiters read"). Two new flags have been introduced to facilitate this capability: `-b <bytes>` and `-B <bytes>`:
* `-b <bytes>`: this flag causes `forkrun` to read up to `<bytes>` at a time from stdin. However, if less than `<bytes>` is available on stdin when a given worker coproc is reading data it will not wait and will proceed with less than `<bytes>` data
* `-B <bytes>`: this flag causes `forkrun` to read exactly `<bytes>` at a time from stdin. If less than `<bytes>` is available on stdin when a given worker coproc is reading data it will wait and will not proceed until it accumulates `<bytes>` of data or all of stdin has been used.
* for both flags, `<bytes>` can be specified using a trailing `k`, `m`, `g`, `t`, or `p` (for `1000^{1,2,3,4,5}`) or `ki`, `mi`, `gi`, `pi`, or `ti` (for `1024^{1,2,3,4,5}`). Adding the trailing `b` and/or using capital letters is accepted, but does not change anything (e.g., `64kb`, `64KB`, `64kB`, `64Kb`, `64k` and `64K` all mean 64,000 bytes).
There is also a minor enhancement in the `-I` / `--INSERT` flag's functionality, and (of course) a handful of minor bug fixes and even a few more minor optimizations.
***
Its been awesome to hear from a couple of you out there that `forkrun` is being used and is working well! As always, let me know of any bugs you encounter and I'll try to find am squash them ASAP. If `forkrun` is missing a feature that you would find useful feel free to suggest it, and if I can figure out a good way to add it I will.
https://redd.it/1aj2na5
@r_bash
GitHub
GitHub - jkool702/forkrun: runs multiple inputs through a noscript/function in parallel using bash coprocs
runs multiple inputs through a noscript/function in parallel using bash coprocs - jkool702/forkrun
bash command overwritten by later command
Under what conditions can a bash command be overwritten by a later command?
https://redd.it/1ajd4je
@r_bash
Under what conditions can a bash command be overwritten by a later command?
https://redd.it/1ajd4je
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
LLUVIA DE IDEAS PARA UN SCRIPT Y CONTRIBUYENTES
Hola soy un novato en bash y me gustaria tener un compañero o gente que quiera contribuir a mi reposito de github (https://github.com/Arbolencio/NetPurge) discord:arbolencio
https://redd.it/1ajit4a
@r_bash
Hola soy un novato en bash y me gustaria tener un compañero o gente que quiera contribuir a mi reposito de github (https://github.com/Arbolencio/NetPurge) discord:arbolencio
https://redd.it/1ajit4a
@r_bash
GitHub
GitHub - Arbolencio/NetPurge: noscript based on the dsniff tool to kick out or block the internet to intruders from a network
noscript based on the dsniff tool to kick out or block the internet to intruders from a network - GitHub - Arbolencio/NetPurge: noscript based on the dsniff tool to kick out or block the internet to in...
Bash noscript that turns on the led on the mute key
I have a working bash noscript, but so far I have not implemented a trigger for it. It also requires sudo privileges which I'm afraid may interfere. How do I trigger this noscript when I press a specific function key (certainly not a bash noscripting question, sorry)? Currently it's in a .noscripts folder in $HOME. Here's the noscript:
I know this is quite a small noscript but any suggestions on making the noscript is appreciated.
Thank you.
https://redd.it/1ajhtyg
@r_bash
I have a working bash noscript, but so far I have not implemented a trigger for it. It also requires sudo privileges which I'm afraid may interfere. How do I trigger this noscript when I press a specific function key (certainly not a bash noscripting question, sorry)? Currently it's in a .noscripts folder in $HOME. Here's the noscript:
echo `amixer get Capture | tail -n 2 | grep -q '\[on\]'; echo $?` | sudo tee /sys/class/leds/platform\:\:micmute/brightness
I know this is quite a small noscript but any suggestions on making the noscript is appreciated.
Thank you.
https://redd.it/1ajhtyg
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
scp-turbo
Speeding up multiple files copy over SSH, uses
This is a bash wrapper for running something like
github gist
https://redd.it/1ajkmvh
@r_bash
Speeding up multiple files copy over SSH, uses
scp syntax, e.g. scp-turbo.sh myremote:/etc/apache2 /backups/apacheconf. (assuming myremote is an alias you have configured in ~/.ssh/config)This is a bash wrapper for running something like
tar -czf - /etc/apache2 | ssh myremote "tar -xzf - -C /backups/apacheconf".#!/usr/bin/env bash
# uses scp syntax e.g.:
#
# REMOTE -> LOCAL
# scp-turbo.sh myremote:/etc/apache2 /tmp/mylocal/dir
#
# LOCAL -> REMOTE
# scp-turbo.sh /tmp/mylocal/dir myremote:/home/user32/
if [[ $# -eq 0 ]]; then
printf "USAGE:\n\t${0##*/} <source> <destination>\n\n"
echo "NOTE: Source and destination can be in the format host:path or just path"
exit 1
fi
source=$1
dest=$2
if [[ $source == *:* ]]; then
source_host=${source%%:*}
source_dir=${source#*:}
else
source_host=""
source_dir=$source
fi
if [[ $dest == *:* ]]; then
dest_host=${dest%%:*}
dest_dir=${dest#*:}
else
dest_host=""
dest_dir=$dest
fi
echo SOURCE_HOST: "$source_host"
echo SOURCE_DIR: "$source_dir"
echo
echo DEST_HOST: "$dest_host"
echo DEST_DIR: "$dest_dir"
read -p "Press any key to start copying..." -n 1 -s
# create target dir if not exist
if [[ ! -d "$dest_dir" ]]; then
mkdir -p "$dest_dir"
fi
# REMOTE -> LOCAL
if [[ -z "$dest_host" ]] && [[ -n "$source_host" ]] && [[ -n "$source_dir" ]] && [[ -n "$dest_dir" ]]; then
ssh "$source_host" tar --ignore-failed-read -cvf - -C "$source_dir" . | tar xvf - -C "${dest_dir}"
echo "Done!"
exit 0
fi
# LOCAL -> REMOTE
if [[ -z "$source_host" ]] && [[ -n "$source_dir" ]] && [[ -n "$dest_host" ]] && [[ -n "$dest_dir" ]]; then
ssh "$dest_host" mkdir -p "$dest_dir"
tar -cvf - -C "${source_dir}" . | ssh "$dest_host" "tar -xvf - -C $dest_dir"
echo "Done!"
exit 0
fi
github gist
https://redd.it/1ajkmvh
@r_bash
Gist
Copy folders between local <=> SSH remote using tar piped over SSH using scp syntax like: `scp-turbo.sh myremote:/etc/apache2 …
Copy folders between local <=> SSH remote using tar piped over SSH using scp syntax like: `scp-turbo.sh myremote:/etc/apache2 /tmp/mylocal/dir` - scp-turbo-ssh-tar.sh
Replace output with next one while running noscript
I have this command that runs a noscript containing functions with wget
$SUDOCOMMAND ./$arg 2>&1 | grep -v ": "
This is a part of the long output I can see (from 1 to 100%)
...
152250K .......... .......... .......... .......... .......... 75% 8,15M 6s
152300K .......... .......... .......... .......... .......... 75% 8,53M 6s
152350K .......... .......... .......... .......... .......... 75% 9,76M 6s
152400K .......... .......... .......... .......... .......... 75% 8,49M 6s
152450K .......... .......... .......... .......... .......... 75% 8,46M 6s
152500K .......... .......... .......... .......... .......... 76% 6,30M 6s
152550K .......... .......... .......... .......... .......... 76% 8,51M 6s
152600K .......... .......... .......... .......... .......... 76% 8,11M 6s
152650K .......... .......... .......... .......... .......... 76% 8,14M 6s
152700K .......... .......... .......... .......... .......... 76% 8,51M 6s
152750K .......... .......... .......... .......... .......... 76% 8,85M 6s
152800K .......... .......... .......... .......... .......... 76% 8,52M 6s
152850K .......... .......... .......... .......... .......... 76% 8,46M 6s
152900K .......... .......... .......... .......... .......... 76% 6,72M 6s
152950K .......... .......... .......... .......... .......... 76% 8,94M 6s
153000K .......... .......... .......... .......... .......... 76% 8,14M 6s
153050K .......... .......... .......... .......... .......... 76% 8,48M 6s
153100K .......... .......... .......... .......... .......... 76% 8,88M 6s
153150K .......... .......... .......... .......... .......... 76% 6,09M 6s
153200K .......... .......... .......... .......... .......... 76% 8,49M 6s
...
How can I overwrite each line with the next one (until it reaches 100%) to have a smaller output (so I can see percentage and countdown on the right increasing/decreasing)?
https://redd.it/1ajxwfs
@r_bash
I have this command that runs a noscript containing functions with wget
$SUDOCOMMAND ./$arg 2>&1 | grep -v ": "
This is a part of the long output I can see (from 1 to 100%)
...
152250K .......... .......... .......... .......... .......... 75% 8,15M 6s
152300K .......... .......... .......... .......... .......... 75% 8,53M 6s
152350K .......... .......... .......... .......... .......... 75% 9,76M 6s
152400K .......... .......... .......... .......... .......... 75% 8,49M 6s
152450K .......... .......... .......... .......... .......... 75% 8,46M 6s
152500K .......... .......... .......... .......... .......... 76% 6,30M 6s
152550K .......... .......... .......... .......... .......... 76% 8,51M 6s
152600K .......... .......... .......... .......... .......... 76% 8,11M 6s
152650K .......... .......... .......... .......... .......... 76% 8,14M 6s
152700K .......... .......... .......... .......... .......... 76% 8,51M 6s
152750K .......... .......... .......... .......... .......... 76% 8,85M 6s
152800K .......... .......... .......... .......... .......... 76% 8,52M 6s
152850K .......... .......... .......... .......... .......... 76% 8,46M 6s
152900K .......... .......... .......... .......... .......... 76% 6,72M 6s
152950K .......... .......... .......... .......... .......... 76% 8,94M 6s
153000K .......... .......... .......... .......... .......... 76% 8,14M 6s
153050K .......... .......... .......... .......... .......... 76% 8,48M 6s
153100K .......... .......... .......... .......... .......... 76% 8,88M 6s
153150K .......... .......... .......... .......... .......... 76% 6,09M 6s
153200K .......... .......... .......... .......... .......... 76% 8,49M 6s
...
How can I overwrite each line with the next one (until it reaches 100%) to have a smaller output (so I can see percentage and countdown on the right increasing/decreasing)?
https://redd.it/1ajxwfs
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Online environment for online demo of bash projects
I'm making a text based adventure game in bash and I'm looking for a way to set up a shareable environment with my git repo cloned and set up to play the game in the browser.
I only need a hand full of shell tools like cat, grep, ls and such.
I tried replit, but idk if I did it wrong or what, but the shared replit doesn't show the bash console so that rules it out.
I've been searching for about an hour now and the only option seems to be to setup xterm.js with some kind of backed that runs bash code in a server.
I'm sure I've seen other repos that had an in-browser demo of their noscripts, but I can't remember what they used.
Is there a (preferably free) service or tool or website that I can use for this purpose?
PS: I could probably redirect people to jslinux but all my pretty boxes break and look like a*s there.
https://redd.it/1ak2sum
@r_bash
I'm making a text based adventure game in bash and I'm looking for a way to set up a shareable environment with my git repo cloned and set up to play the game in the browser.
I only need a hand full of shell tools like cat, grep, ls and such.
I tried replit, but idk if I did it wrong or what, but the shared replit doesn't show the bash console so that rules it out.
I've been searching for about an hour now and the only option seems to be to setup xterm.js with some kind of backed that runs bash code in a server.
I'm sure I've seen other repos that had an in-browser demo of their noscripts, but I can't remember what they used.
Is there a (preferably free) service or tool or website that I can use for this purpose?
PS: I could probably redirect people to jslinux but all my pretty boxes break and look like a*s there.
https://redd.it/1ak2sum
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Pass argument to bash noscript to vary end of a path?
I have a noscript that will do something with a path like:
Launch /home/joe/file1
Launch /home/joe/file2
You'd basically pass the "file2" as an argument to the noscript and it fills in the file1 or file2 or whatever depending on the argument you supply to the noscript.
So typing "somenoscript.sh file1"
Would build the line
Launch /home/joe/file1
If I typed "somenoscript.sh foo" it'll make:
Launch /home/joe/foo
Thanks
https://redd.it/1ak5q8y
@r_bash
I have a noscript that will do something with a path like:
Launch /home/joe/file1
Launch /home/joe/file2
You'd basically pass the "file2" as an argument to the noscript and it fills in the file1 or file2 or whatever depending on the argument you supply to the noscript.
So typing "somenoscript.sh file1"
Would build the line
Launch /home/joe/file1
If I typed "somenoscript.sh foo" it'll make:
Launch /home/joe/foo
Thanks
https://redd.it/1ak5q8y
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Test if variable is a float?
Hi
I test if a variable contains an integer like this
[ $var == ?(-)+([[:digit:]) ]]
Is there a similar test to see if it is a float, say 1.23 or -1.23
Thanks
​
https://redd.it/1ak9a1l
@r_bash
Hi
I test if a variable contains an integer like this
[ $var == ?(-)+([[:digit:]) ]]
Is there a similar test to see if it is a float, say 1.23 or -1.23
Thanks
​
https://redd.it/1ak9a1l
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Any flaws in this noscript that could be potentially bad?
#!/bin/bash
# Check if three arguments are provided
if "$#" -ne 3 ; then
echo "Usage: $0 <begtime> <endtime> <logfilegzipped>"
exit 1
fi
beg=$1
end=$2
logfilegzipped=$3
function nongzipped() {
LCALL=C awk -v beg="$beg" -v end="$end" '
match($0, /0-20-9:0-50-9:0-50-9/) {
t = substr($0, RSTART, 8)
if (t >= end) selected = 0
else if (t >= beg) selected = 1
}
selected' "$logfilegzipped" #ignore the name lol
}
function gzipped() {
zcat "$logfilegzipped" | LCALL=C awk -v beg="$beg" -v end="$end" '
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'
}
if [[ "$logfilegzipped" == *.gz ]]; then
gzipped
else
nongzipped
fi
I just modified this noscript that I wrote few months ago to accomodate both cases of gzipped and non gzipped log files. Any flaws with this you can notice. This works on my machine.
Any ways to make this better? Please don't post solutions. I'd have asked chatgpt but I like the journey in learning rather than getting answers quickly. Only correct me if there is serious flaw in this.
https://redd.it/1akbuj9
@r_bash
#!/bin/bash
# Check if three arguments are provided
if "$#" -ne 3 ; then
echo "Usage: $0 <begtime> <endtime> <logfilegzipped>"
exit 1
fi
beg=$1
end=$2
logfilegzipped=$3
function nongzipped() {
LCALL=C awk -v beg="$beg" -v end="$end" '
match($0, /0-20-9:0-50-9:0-50-9/) {
t = substr($0, RSTART, 8)
if (t >= end) selected = 0
else if (t >= beg) selected = 1
}
selected' "$logfilegzipped" #ignore the name lol
}
function gzipped() {
zcat "$logfilegzipped" | LCALL=C awk -v beg="$beg" -v end="$end" '
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'
}
if [[ "$logfilegzipped" == *.gz ]]; then
gzipped
else
nongzipped
fi
I just modified this noscript that I wrote few months ago to accomodate both cases of gzipped and non gzipped log files. Any flaws with this you can notice. This works on my machine.
Any ways to make this better? Please don't post solutions. I'd have asked chatgpt but I like the journey in learning rather than getting answers quickly. Only correct me if there is serious flaw in this.
https://redd.it/1akbuj9
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community