this will probably be very complex
im tryting to create a noscript where i can pick up a text with some image links in the middle and input that into a tui like less will all the images loaded with ueberzug.
i know that is possible because there are noscripts like ytfzf that is capable of doing something close.
the tool im using to get the texts with image links in the middle is algia(terminal nostr client).
to be honest a vim tui would make it more usable but i dont know if this would be much more complex so something like less but that is capable o loading tui images would be more than enought.
i use alacritty.
https://redd.it/1fxwrw2
@r_bash
im tryting to create a noscript where i can pick up a text with some image links in the middle and input that into a tui like less will all the images loaded with ueberzug.
i know that is possible because there are noscripts like ytfzf that is capable of doing something close.
the tool im using to get the texts with image links in the middle is algia(terminal nostr client).
to be honest a vim tui would make it more usable but i dont know if this would be much more complex so something like less but that is capable o loading tui images would be more than enought.
i use alacritty.
https://redd.it/1fxwrw2
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Does export supposed to create a permanent environment variable?
For many guides for installing packages out there, I always see this as a step to installing the package, for example...
```
export JAVA_HOME=/opt/android-studio/jbr
```
And it does work. It does create a env variable (In the example above JAVA_HOME) but when I close the terminal and the next time I launch the terminal, the env variable is not there and the packages need these variables setup for all sessions.
Am I doing something wrong? Why do many guides tell you to simply run `export` instead of edit the `/etc/profile` file by adding the `export` command to the end of the `/etc/profile` file which will make the env variable in all terminal sessions?
https://redd.it/1fxyffj
@r_bash
For many guides for installing packages out there, I always see this as a step to installing the package, for example...
```
export JAVA_HOME=/opt/android-studio/jbr
```
And it does work. It does create a env variable (In the example above JAVA_HOME) but when I close the terminal and the next time I launch the terminal, the env variable is not there and the packages need these variables setup for all sessions.
Am I doing something wrong? Why do many guides tell you to simply run `export` instead of edit the `/etc/profile` file by adding the `export` command to the end of the `/etc/profile` file which will make the env variable in all terminal sessions?
https://redd.it/1fxyffj
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
I habe 10 hours to learn bash. What would you do?
Hey, people, I have 10 hours of free time to learn simple bash noscripting. Maybe even more.
I already know how to use commands in cli, I worked as a developer for 5 years and even wrote simple DevOps pipelines (using yml in GitHub)
But I want to go deeper, my brain is a mess when it comes to bash
It's embarrassing after 5 years in coding, I know.
I don't even know the difference between bash and shell. I don't know commands and I am freaked out when I have to use CLI.
I want to fix it. It cripples me as a developer.
Do you know a some ebooks or something that can help me organise my brain and learn all of it?
Maybe fun real-world projects that I can spin out in a weekend?
Thank you in advance!
https://redd.it/1fy4xhy
@r_bash
Hey, people, I have 10 hours of free time to learn simple bash noscripting. Maybe even more.
I already know how to use commands in cli, I worked as a developer for 5 years and even wrote simple DevOps pipelines (using yml in GitHub)
But I want to go deeper, my brain is a mess when it comes to bash
It's embarrassing after 5 years in coding, I know.
I don't even know the difference between bash and shell. I don't know commands and I am freaked out when I have to use CLI.
I want to fix it. It cripples me as a developer.
Do you know a some ebooks or something that can help me organise my brain and learn all of it?
Maybe fun real-world projects that I can spin out in a weekend?
Thank you in advance!
https://redd.it/1fy4xhy
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
How can I use a bash/grep search in vim?
Looking at the contents of both /r/bash and /r/vim, it seems the question is best placed here.
I have a working grep term which I want to use in vim.
It's simply
I want to have a search term in vim which jumps to the next line starting with
How can I translate this
It needs to be done in vim since what corrections need to be made to the following line depends on human input.
https://redd.it/1fy5uwe
@r_bash
Looking at the contents of both /r/bash and /r/vim, it seems the question is best placed here.
I have a working grep term which I want to use in vim.
It's simply
grep "^#" malformed_file.tmp | grep '^.\{80\}$'; or in other words: I want to have a search term in vim which jumps to the next line starting with
# which is exactly 80 characters long, not longer.How can I translate this
grep stanza to a vim search?It needs to be done in vim since what corrections need to be made to the following line depends on human input.
https://redd.it/1fy5uwe
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Line counting errors: "ps -ef" piped into "wc -l" returns the wrong number of lines, unless the lines are very short, and I can't see why
**Background:** I have a bash noscript that I want to ensure is always running, but in one and only one instance. I chose to use an entry in `/etc/crontab` to start the noscript every hour or so, but in the noscript itself add a check for any other instances that might be running (and abort quietly if there are other processes than itself that are running). I specifically do not want the hassle of handling lockfiles, especially if the noscript would be killed without cleaning up its lockfile.
**Method:** I use `ps -ef -o pid,cmd` piped into `grep` to find the process\[-es\], followed by `wc -l` to output the number of lines. If this is == 1, there is no *other* process running, and the current process does its thing. Otherwise, i assume some other process is already running, and this one aborts quietly.
**The problem and workaround:** I get too high a number (1 too high) as the output from `wc -l`. I can reproduce it repeatedly if the output from `ps` has lines longer than 80 characters. However, if I limit the output by using `ps -ef --cols=57 -o pid,cmd` (or lower), it works as expected. The actual number is different for different filenames/paths, I initially thought it was related to a default 80 character terminal width but there seems to be more to it.
**Why does this happen? I can use wc -l in other cases with very long lines without any problems.** If I got too few output values, I could perhaps have understood it since wc counts the number of newline characters (not characters at the end of the file if the last line is not terminated by a newline). But this is the opposite.
Here is some proof-of-concept code to reproduce this, for my test noscript "/usr/local/bin/test-only-one.sh":
#!/bin/bash
PROGNAME="$(basename $0)"
PROGFIRSTL="${PROGNAME:0:1}"
GREPSTRING=$(echo "$PROGNAME" | sed "s/^$PROGFIRSTL/\[$PROGFIRSTL]/")# A trailing space is added in the grep statement below
#GREPSTRING="$PROGNAME"# Same results
# Now make sure to grap the currently running program, not "grep" or any editor that has the noscript file open
# BUG: Using a COLCOUNT limit somewhere below 80 works, but having COLCOUNT higher than that limit results in an incorrect output (too high).
# In other words, using a low --cols limit works unless the filename (with path) is too long
COLCOUNT=69
COLCOUNT=70
if [ ! -z "$1" ]; then
COLCOUNT="$1"# Command line option for demo purposes only
fi
NO_OF_RUNNING_PROGRAMS=$(ps -ef --cols=$COLCOUNT -o pid,cmd | \
grep -e '^[[:space:]]*[0-9]*[[:space:]]*[\\]*[_]*[[:space:]]*/bin/bash .*'"$GREPSTRING " | \
wc -l)
DEBUG_PRINT_PS_OUTPUT=true
if $DEBUG_PRINT_PS_OUTPUT; then
echo -e "\t\t[DEBUG]\tNO_OF_RUNNING_PROGRAMS == $NO_OF_RUNNING_PROGRAMS; COLCOUNT == $COLCOUNT; GREPSTRING == \"$GREPSTRING\""
echo -e "\t\t[DEBUG]\tvvv ps output start:"
ps -ef --cols=$COLCOUNT -o pid,cmd | \
grep -e '^[[:space:]]*[0-9]*[[:space:]]*[\\]*[_]*[[:space:]]*/bin/bash .*'"$GREPSTRING " | \
sed 's/^/\t\t\t/'
echo -e "\t\t[DEBUG]\t^^^ ps output stop."
fi
if ((1 == $NO_OF_RUNNING_PROGRAMS)); then
echo -e "\t[OK]\tThis instance (PID $$) is the only instance running"
else
echo -e "\t[ERROR]\tAborting PID $$, since this noscript was already running"
fi
Here are two illustrative outputs, first the intended operation:
`$` [`test-only-one.sh`](http://test-only-one.sh) `57`
[DEBUG]NO_OF_RUNNING_PROGRAMS == 1; COLCOUNT == 57; GREPSTRING == "[t]est-only-one.sh"
[DEBUG]vvv ps output start:
776743 \_ /bin/bash /usr/local/bin/test-only-one.sh 57
[DEBUG]^^^ ps output stop.
[OK]This instance (PID 776743) is the only instance running
**And now when it fails for some unknown reason:**
`$` [`test-only-one.sh`](http://test-only-one.sh) `58`
[DEBUG]NO_OF_RUNNING_PROGRAMS == 2; COLCOUNT == 58; GREPSTRING == "[t]est-only-one.sh"
[DEBUG]vvv ps
**Background:** I have a bash noscript that I want to ensure is always running, but in one and only one instance. I chose to use an entry in `/etc/crontab` to start the noscript every hour or so, but in the noscript itself add a check for any other instances that might be running (and abort quietly if there are other processes than itself that are running). I specifically do not want the hassle of handling lockfiles, especially if the noscript would be killed without cleaning up its lockfile.
**Method:** I use `ps -ef -o pid,cmd` piped into `grep` to find the process\[-es\], followed by `wc -l` to output the number of lines. If this is == 1, there is no *other* process running, and the current process does its thing. Otherwise, i assume some other process is already running, and this one aborts quietly.
**The problem and workaround:** I get too high a number (1 too high) as the output from `wc -l`. I can reproduce it repeatedly if the output from `ps` has lines longer than 80 characters. However, if I limit the output by using `ps -ef --cols=57 -o pid,cmd` (or lower), it works as expected. The actual number is different for different filenames/paths, I initially thought it was related to a default 80 character terminal width but there seems to be more to it.
**Why does this happen? I can use wc -l in other cases with very long lines without any problems.** If I got too few output values, I could perhaps have understood it since wc counts the number of newline characters (not characters at the end of the file if the last line is not terminated by a newline). But this is the opposite.
Here is some proof-of-concept code to reproduce this, for my test noscript "/usr/local/bin/test-only-one.sh":
#!/bin/bash
PROGNAME="$(basename $0)"
PROGFIRSTL="${PROGNAME:0:1}"
GREPSTRING=$(echo "$PROGNAME" | sed "s/^$PROGFIRSTL/\[$PROGFIRSTL]/")# A trailing space is added in the grep statement below
#GREPSTRING="$PROGNAME"# Same results
# Now make sure to grap the currently running program, not "grep" or any editor that has the noscript file open
# BUG: Using a COLCOUNT limit somewhere below 80 works, but having COLCOUNT higher than that limit results in an incorrect output (too high).
# In other words, using a low --cols limit works unless the filename (with path) is too long
COLCOUNT=69
COLCOUNT=70
if [ ! -z "$1" ]; then
COLCOUNT="$1"# Command line option for demo purposes only
fi
NO_OF_RUNNING_PROGRAMS=$(ps -ef --cols=$COLCOUNT -o pid,cmd | \
grep -e '^[[:space:]]*[0-9]*[[:space:]]*[\\]*[_]*[[:space:]]*/bin/bash .*'"$GREPSTRING " | \
wc -l)
DEBUG_PRINT_PS_OUTPUT=true
if $DEBUG_PRINT_PS_OUTPUT; then
echo -e "\t\t[DEBUG]\tNO_OF_RUNNING_PROGRAMS == $NO_OF_RUNNING_PROGRAMS; COLCOUNT == $COLCOUNT; GREPSTRING == \"$GREPSTRING\""
echo -e "\t\t[DEBUG]\tvvv ps output start:"
ps -ef --cols=$COLCOUNT -o pid,cmd | \
grep -e '^[[:space:]]*[0-9]*[[:space:]]*[\\]*[_]*[[:space:]]*/bin/bash .*'"$GREPSTRING " | \
sed 's/^/\t\t\t/'
echo -e "\t\t[DEBUG]\t^^^ ps output stop."
fi
if ((1 == $NO_OF_RUNNING_PROGRAMS)); then
echo -e "\t[OK]\tThis instance (PID $$) is the only instance running"
else
echo -e "\t[ERROR]\tAborting PID $$, since this noscript was already running"
fi
Here are two illustrative outputs, first the intended operation:
`$` [`test-only-one.sh`](http://test-only-one.sh) `57`
[DEBUG]NO_OF_RUNNING_PROGRAMS == 1; COLCOUNT == 57; GREPSTRING == "[t]est-only-one.sh"
[DEBUG]vvv ps output start:
776743 \_ /bin/bash /usr/local/bin/test-only-one.sh 57
[DEBUG]^^^ ps output stop.
[OK]This instance (PID 776743) is the only instance running
**And now when it fails for some unknown reason:**
`$` [`test-only-one.sh`](http://test-only-one.sh) `58`
[DEBUG]NO_OF_RUNNING_PROGRAMS == 2; COLCOUNT == 58; GREPSTRING == "[t]est-only-one.sh"
[DEBUG]vvv ps
output start:
776756 \_ /bin/bash /usr/local/bin/test-only-one.sh 58 S
[DEBUG]^^^ ps output stop.
[ERROR]Aborting PID 776756, since this noscript was already running
https://redd.it/1fy5ho0
@r_bash
776756 \_ /bin/bash /usr/local/bin/test-only-one.sh 58 S
[DEBUG]^^^ ps output stop.
[ERROR]Aborting PID 776756, since this noscript was already running
https://redd.it/1fy5ho0
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Another PS1 prompt question
my__git_ps1() {
local GIT_PS1=$(__git_ps1)
if [ ! -z "$GIT_PS1" -a "$GIT_PS1" != "" ] ; then echo '\[\e[m\]\[\e[96m\]'$GIT_PS1; fi
}
PS1='\[\e[92m\][\u@\h\[\e[m\] \[\e[93m\]\W'$(my__git_ps1)']\$\[\e[m\] '
Problem? Changing directories does not mutate `GIT_PS1`, so when you `cd ..` from a repo, you still see the past value of `GIT_PS1`, and when you `cd repo` from a non-repo, you don't see the `GIT_PS1`. I know `my__git_ps1` runs every time I change directories, otherwise the vanilla calling `__git_ps1` from `PS1` wouldn't work. So, is `my__git_ps1` maybe caching `GIT_PS1` by any chance?
https://redd.it/1fycuyf
@r_bash
my__git_ps1() {
local GIT_PS1=$(__git_ps1)
if [ ! -z "$GIT_PS1" -a "$GIT_PS1" != "" ] ; then echo '\[\e[m\]\[\e[96m\]'$GIT_PS1; fi
}
PS1='\[\e[92m\][\u@\h\[\e[m\] \[\e[93m\]\W'$(my__git_ps1)']\$\[\e[m\] '
Problem? Changing directories does not mutate `GIT_PS1`, so when you `cd ..` from a repo, you still see the past value of `GIT_PS1`, and when you `cd repo` from a non-repo, you don't see the `GIT_PS1`. I know `my__git_ps1` runs every time I change directories, otherwise the vanilla calling `__git_ps1` from `PS1` wouldn't work. So, is `my__git_ps1` maybe caching `GIT_PS1` by any chance?
https://redd.it/1fycuyf
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
This media is not supported in your browser
VIEW IN TELEGRAM
I have made ipfetch in bash! A neofetch like tool that can lookup IPs!
https://redd.it/1fykwx0
@r_bash
https://redd.it/1fykwx0
@r_bash
Symlinks with spaces in folder name
The following works except for folders with spaces in the name.
#!/bin/bash
cd /var/packages || exit
while read -r link target; do
echo "link: $link" # debug
echo -e "target: $target \n" # debug
done < <(find . -maxdepth 2 -type l -ls | grep volume | grep target | cut -d'.' -f2- | sed 's/ ->//')
Like "Plex Media Server":
link: /Docker/target
target: /volume1/@appstore/Docker
link: /Plex\
target: Media\ Server/target /volume1/@appstore/Plex\ Media\ Server
Instead of:
link: /Plex\ Media\ Server/target
target: /volume1/@appstore/Plex\ Media\ Server
What am I doing wrong?
​
https://redd.it/1fylclc
@r_bash
The following works except for folders with spaces in the name.
#!/bin/bash
cd /var/packages || exit
while read -r link target; do
echo "link: $link" # debug
echo -e "target: $target \n" # debug
done < <(find . -maxdepth 2 -type l -ls | grep volume | grep target | cut -d'.' -f2- | sed 's/ ->//')
Like "Plex Media Server":
link: /Docker/target
target: /volume1/@appstore/Docker
link: /Plex\
target: Media\ Server/target /volume1/@appstore/Plex\ Media\ Server
Instead of:
link: /Plex\ Media\ Server/target
target: /volume1/@appstore/Plex\ Media\ Server
What am I doing wrong?
​
https://redd.it/1fylclc
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Assistance requested with a backup noscript for an Android tablet
BACKGROUND:
I have been endeavouring to update my Android tablet with different versions of this noscript and even before I set my mind on realising this noscript in particular and have been at it for quite some time, but I have so far not been completely successful. It is almost there.
My Termux Linux userland environment is a bit of a legacy ecosystem. I have tried to set up my system well, but there are anomalies and inconsistencies. I have just been teaching myself and learning on the fly.
In executing earlier versions of this noscript, it kept on maxing out the memory of my microSD, but there should have been more than ample space. The backup directories would be hundreds of times larger than the size of the original source directories. I realised it was infinite loops caused by nested symbolic links and probably other reasons that I have not yet identified. This is the reason for the structure of the noscript and the excessive logging.
The problems are few (I hope):
1. A virulent unbounded variable in the backup_files array. I just haven't been able to fix it and I don't know why.
2. I had a lot of problems with terminating all the spawned processes. Some of them were really sneaky. Hence, the KILLSWITCH. But I just can't get it to work and I don't know why.
https://pastebin.com/QrHgCiQ4
Any assistance to help me bash this into shape would be most appreciated.
https://redd.it/1fykj4r
@r_bash
BACKGROUND:
I have been endeavouring to update my Android tablet with different versions of this noscript and even before I set my mind on realising this noscript in particular and have been at it for quite some time, but I have so far not been completely successful. It is almost there.
My Termux Linux userland environment is a bit of a legacy ecosystem. I have tried to set up my system well, but there are anomalies and inconsistencies. I have just been teaching myself and learning on the fly.
In executing earlier versions of this noscript, it kept on maxing out the memory of my microSD, but there should have been more than ample space. The backup directories would be hundreds of times larger than the size of the original source directories. I realised it was infinite loops caused by nested symbolic links and probably other reasons that I have not yet identified. This is the reason for the structure of the noscript and the excessive logging.
The problems are few (I hope):
1. A virulent unbounded variable in the backup_files array. I just haven't been able to fix it and I don't know why.
2. I had a lot of problems with terminating all the spawned processes. Some of them were really sneaky. Hence, the KILLSWITCH. But I just can't get it to work and I don't know why.
https://pastebin.com/QrHgCiQ4
Any assistance to help me bash this into shape would be most appreciated.
https://redd.it/1fykj4r
@r_bash
Pastebin
persistent_integrity_validation_backup8.sh - Pastebin.com
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
How do I delete letters in vi bash?
Made this MESS of D’s and A’s now I don’t know how to delete it. Pressing X just replaces the letter and the delete button doesn’t work. Please help.
https://redd.it/1fyphnr
@r_bash
Made this MESS of D’s and A’s now I don’t know how to delete it. Pressing X just replaces the letter and the delete button doesn’t work. Please help.
https://redd.it/1fyphnr
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
How to make a symbolic link to file with exclamation point '!' in directory?
The file is located in:
Same output results when placing a single quotation around first exclamation point.
I add quote around the first exclamation point plus one backslash before:
ls -lh displays:
When I instead just do a backslash:
ls -lh displays:
https://redd.it/1fz1t4h
@r_bash
The file is located in:
/media/hdd2/video/Title 1!/noscript 1!.mp4ln -sn "/media/hdd2/video/Title 1!/noscript 1!.mp4" "noscript 1!".mp4 results in: bash: !/Title: event not foundSame output results when placing a single quotation around first exclamation point.
I add quote around the first exclamation point plus one backslash before:
/media/hdd2/video/Title 1'\!'/noscript 1!.mp4ls -lh displays:
noscript 1!.mp4 -> '/media/hdd2/video/Title 1'\''\!'\''/noscript 1!.mp4'When I instead just do a backslash:
/media/hdd2/video/Title 1\!/noscript 1!.mp4ls -lh displays:
noscript 1!.mp4 -> /media/hdd2/video/Title 1\!/noscript 1!.mp4https://redd.it/1fz1t4h
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Suitable projects to make using bash/linux POSIX commands?
https://en.wikipedia.org/wiki/List_of_POSIX_commands
I've created about 5 short noscripts. They're related to :
- SSL certificate expiry monitor and alert system
- Hangman trivia game
- Weather api redirection and check today's weather
and so on.
I want to indulge into something interesting now. I am a beginner (only 1 yoe with linux sysadmin and slowly starting noscripting)..
Someone suggested that I should write my own netcat? nmap? However, my interests doesn't lie there. I like to make games, guis, and and do data analysis using awk etc.
I like something that is practically applicable and suitable for bash as well. Something, I can use for real applications. SSL certificate expiry checker was one of them I really loved.
https://redd.it/1fz2ryj
@r_bash
https://en.wikipedia.org/wiki/List_of_POSIX_commands
I've created about 5 short noscripts. They're related to :
- SSL certificate expiry monitor and alert system
- Hangman trivia game
- Weather api redirection and check today's weather
and so on.
I want to indulge into something interesting now. I am a beginner (only 1 yoe with linux sysadmin and slowly starting noscripting)..
Someone suggested that I should write my own netcat? nmap? However, my interests doesn't lie there. I like to make games, guis, and and do data analysis using awk etc.
I like something that is practically applicable and suitable for bash as well. Something, I can use for real applications. SSL certificate expiry checker was one of them I really loved.
https://redd.it/1fz2ryj
@r_bash
Changing color theme codes
Hello everybody. Sorry for bad format, just started to learn this stuff.
My google-fu has failed me, so i am asking for advice here.
I know how to set color scheme in tty, by adding something like
or with echo
and i have added this to my .bashrc
But this method does not work for terminal emulators.
Closest i got was with
but i can not change color codes for other 0-15 colors.
I have also tried googh, but that just downloads theme profiles, and i cant save that in bashrc for portability.
Anyway. Any help is welcome.
https://redd.it/1fz2yy9
@r_bash
Hello everybody. Sorry for bad format, just started to learn this stuff.
My google-fu has failed me, so i am asking for advice here.
I know how to set color scheme in tty, by adding something like
if [ "$TERM" = "linux" ]; then\printf %b '\\e\]P0282a36' # redefine 'black'``\printf %b '\\e\]P86272a4' # redefine 'bright-black'``...fior with echo
echo -en "\e]P0222222" #blackecho -en "\e]P8666666" #darkgrey....and i have added this to my .bashrc
But this method does not work for terminal emulators.
Closest i got was with
echo -ne '\e]11;#808080\e\\' # change backgroundecho -ne '\e]10;#000000\e\\' # change foregroundbut i can not change color codes for other 0-15 colors.
I have also tried googh, but that just downloads theme profiles, and i cant save that in bashrc for portability.
Anyway. Any help is welcome.
https://redd.it/1fz2yy9
@r_bash
GitHub
GitHub - Gogh-Co/Gogh: Gogh is a collection of color schemes for various terminal emulators, including Gnome Terminal, Pantheon…
Gogh is a collection of color schemes for various terminal emulators, including Gnome Terminal, Pantheon Terminal, Tilix, and XFCE4 Terminal also compatible with iTerm on macOS. - Gogh-Co/Gogh
How to style text with code?
How to style text with code? I've been using
but I don't want litter the noscript with lots of call to the
P.S. Is a small library of util functions worth using? Should you develop your own over time and work out kinks yourself or is there a public repo of well-written util functions that is "good enough"?
https://redd.it/1fz9pxm
@r_bash
How to style text with code? I've been using
tput like this:echo "$(tput setaf 1)some text$(tput sgr0)"but I don't want litter the noscript with lots of call to the
tput external command it seems excessive to fork/exec for such trivial things. Would like something more efficient and human-readable. Interested in solutions that are bash-specific as well as something that's more posix-compliant.P.S. Is a small library of util functions worth using? Should you develop your own over time and work out kinks yourself or is there a public repo of well-written util functions that is "good enough"?
https://redd.it/1fz9pxm
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
How do I pass multiple arguments to pandoc
I would like to pass multiple file paths to my pandoc noscript.
This is what I came up with:
TLDR: It looks for all files matching `01 manunoscripts/*/*` and puts them in a file separated by a new line. It then reads the file and adds each line to args. Then it gives the args to pandoc.
#!/bin/bash
# Create an output directory if it doesn't exist
mkdir -p .output
# Create an empty file to hold the list of ordered files
> ordered_files.txt
# List all unique file names inside the "manunoscript" folder, handling spaces in filenames
find 01\ manunoscripts/*/* -type f -exec basename {} \; | sort -u | while IFS= read -r file; do
# Find all instances of the file in subdirectories, handling spaces
find 01\ manunoscripts/*/* -type f -name "$file" -print0 | sort -z | while IFS= read -r -d '' filepath; do
echo "$filepath" >> ordered_files.txt
done
done
# Initialize an empty variable to hold all the arguments
args=""
# Read each line from the file a.txt
while IFS= read -r line
do
# Append each argument with proper quoting
args+="\"$line\" "
done < ordered_files.txt
echo $args
# Run pandoc on the ordered list of files
pandoc --top-level-division=chapter --toc -o .output/output.pdf noscript.md $args
# Open the generated PDF
open .output/output.pdf
# Clean up the temporary file
The problem is that pandoc is not recognizing the quotes around my argument, and treating the space between the quotes as separate args.
pandoc: "01: withBinaryFile: does not exist (No such file or directory)
The 01 that its refering to is the start of the path, 01 manunoscripts/blah/blah.md
^~~~~~~~~~~~~~~~~~~~~~~~~~
How could I pass dynamic amount of args into pandoc?
https://redd.it/1fzf0um
@r_bash
I would like to pass multiple file paths to my pandoc noscript.
This is what I came up with:
TLDR: It looks for all files matching `01 manunoscripts/*/*` and puts them in a file separated by a new line. It then reads the file and adds each line to args. Then it gives the args to pandoc.
#!/bin/bash
# Create an output directory if it doesn't exist
mkdir -p .output
# Create an empty file to hold the list of ordered files
> ordered_files.txt
# List all unique file names inside the "manunoscript" folder, handling spaces in filenames
find 01\ manunoscripts/*/* -type f -exec basename {} \; | sort -u | while IFS= read -r file; do
# Find all instances of the file in subdirectories, handling spaces
find 01\ manunoscripts/*/* -type f -name "$file" -print0 | sort -z | while IFS= read -r -d '' filepath; do
echo "$filepath" >> ordered_files.txt
done
done
# Initialize an empty variable to hold all the arguments
args=""
# Read each line from the file a.txt
while IFS= read -r line
do
# Append each argument with proper quoting
args+="\"$line\" "
done < ordered_files.txt
echo $args
# Run pandoc on the ordered list of files
pandoc --top-level-division=chapter --toc -o .output/output.pdf noscript.md $args
# Open the generated PDF
open .output/output.pdf
# Clean up the temporary file
The problem is that pandoc is not recognizing the quotes around my argument, and treating the space between the quotes as separate args.
pandoc: "01: withBinaryFile: does not exist (No such file or directory)
The 01 that its refering to is the start of the path, 01 manunoscripts/blah/blah.md
^~~~~~~~~~~~~~~~~~~~~~~~~~
How could I pass dynamic amount of args into pandoc?
https://redd.it/1fzf0um
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
BASH Tool that helps you solving THM and HTB machines & ctfs
# Hey pentesters & bash guys ,
I wanna share a tool I've been working on that I hope will help you all with THM rooms and HTB machines. It's called Sh0zack and 100 % in BASH
contains customized versions of popular tools like nmap, wfuzz, and linpeas directly within it , Designed specifically for CTFs and practice environments like THM and HTB.
GitHub Repository: https://github.com/sh0z3n/Sh0zack
I'd love for you all to try it out and let me know what you think. Ideas for additional tools or features you'd like to see integrated , Your feedback will be invaluable in making it even better.
usage
https://redd.it/1fzo42b
@r_bash
# Hey pentesters & bash guys ,
I wanna share a tool I've been working on that I hope will help you all with THM rooms and HTB machines. It's called Sh0zack and 100 % in BASH
contains customized versions of popular tools like nmap, wfuzz, and linpeas directly within it , Designed specifically for CTFs and practice environments like THM and HTB.
GitHub Repository: https://github.com/sh0z3n/Sh0zack
I'd love for you all to try it out and let me know what you think. Ideas for additional tools or features you'd like to see integrated , Your feedback will be invaluable in making it even better.
usage
https://redd.it/1fzo42b
@r_bash
GitHub
GitHub - sh0z3n/Sh0zack: Advanced Penetration Testing Framework | Powered by Bash
Advanced Penetration Testing Framework | Powered by Bash - GitHub - sh0z3n/Sh0zack: Advanced Penetration Testing Framework | Powered by Bash
Avoid passing arguments to function until all items have been looped through ?
Hi,
I have the below part of a noscript which gets information from a system which the user inputs.
function rrupreparation ()
{
kubeworker=$1
charu=2024
timez=3
if -z $(ssh -q $kubeworker ssh -q $rruaddr cat /etc/benetel-rootfs-version)
currver=$(ssh -q $kubeworker ssh -q $rruaddr cat /etc/benetel-rootfs-version)
then
if [ $currver == $upgradever ]
then
echo "$rruaddr UPGRADED"
else
echo "$rruaddr NOT UPGRADED"
fi
fi
}
function rruchecks ()
{
kubeworker=$1
rruaddr=$2
if -z $(ssh -q $kubeworker ssh -q $rruaddr cat /etc/benetel-rootfs-version)
currver=$(ssh -q $kubeworker ssh -q $rruaddr cat /etc/benetel-rootfs-version)
then
if [ $currver == $upgradever ]
then
stat="(U)"
tval=TXMeanPower
else
stat="(NU)"
tval=tssi
fi
fi
echo "$stat | $currver | $kubeworker | $rruaddr
rrupreparation $kubeworker
}
function findnodes ()
{
findnodes1=1
for kubeworkers in $allkubes;
do
kubeworker=$( echo $kubeworkers | cut -c 6- )
echo $kubeworker
done
read -p "Find RRU in Worker : " kubeworker
for rruaddr in $(ssh -q $kubeworker arp -n | grep 10.42.8 | grep ether | awk '{print $1}')
do
rruchecks $kubeworker $rruaddr
done
}
findnodes
Script output once run
bai-ran-cluster-worker0
bai-ran-cluster-worker1
bai-ran-cluster-worker2
bai-ran-cluster-worker3
bai-ran-cluster-worker4
bai-ran-cluster-worker5
bai-ran-cluster-worker6
Find RRU in Worker : bai-ran-cluster-worker3 <--- User inputs any name from the above list
So in this case the user input is passed as arguments from
(NU) | RAN650-3V0.8.2patch2 |
NOT UPGRADED
(NU) | RAN650-3V0.8.2patch2 |
NOT UPGRADED
(NU) | RAN650-3V0.8.2patch2 |
NOT UPGRADED10.42.8.3510.42.8.3510.42.8.3610.42.8.3610.42.8.3710.42.8.37
In the above result the 1st line is the expected, the 2nd line is a result of the argument received in
How can I not pass the user input from
https://redd.it/1fzu7as
@r_bash
Hi,
I have the below part of a noscript which gets information from a system which the user inputs.
function rrupreparation ()
{
kubeworker=$1
charu=2024
timez=3
if -z $(ssh -q $kubeworker ssh -q $rruaddr cat /etc/benetel-rootfs-version)
currver=$(ssh -q $kubeworker ssh -q $rruaddr cat /etc/benetel-rootfs-version)
then
if [ $currver == $upgradever ]
then
echo "$rruaddr UPGRADED"
else
echo "$rruaddr NOT UPGRADED"
fi
fi
}
function rruchecks ()
{
kubeworker=$1
rruaddr=$2
if -z $(ssh -q $kubeworker ssh -q $rruaddr cat /etc/benetel-rootfs-version)
currver=$(ssh -q $kubeworker ssh -q $rruaddr cat /etc/benetel-rootfs-version)
then
if [ $currver == $upgradever ]
then
stat="(U)"
tval=TXMeanPower
else
stat="(NU)"
tval=tssi
fi
fi
echo "$stat | $currver | $kubeworker | $rruaddr
rrupreparation $kubeworker
}
function findnodes ()
{
findnodes1=1
for kubeworkers in $allkubes;
do
kubeworker=$( echo $kubeworkers | cut -c 6- )
echo $kubeworker
done
read -p "Find RRU in Worker : " kubeworker
for rruaddr in $(ssh -q $kubeworker arp -n | grep 10.42.8 | grep ether | awk '{print $1}')
do
rruchecks $kubeworker $rruaddr
done
}
findnodes
Script output once run
bai-ran-cluster-worker0
bai-ran-cluster-worker1
bai-ran-cluster-worker2
bai-ran-cluster-worker3
bai-ran-cluster-worker4
bai-ran-cluster-worker5
bai-ran-cluster-worker6
Find RRU in Worker : bai-ran-cluster-worker3 <--- User inputs any name from the above list
So in this case the user input is passed as arguments from
findnodes function to rruchecks function which then checks the system, and gives the below result.(NU) | RAN650-3V0.8.2patch2 |
NOT UPGRADED
(NU) | RAN650-3V0.8.2patch2 |
NOT UPGRADED
(NU) | RAN650-3V0.8.2patch2 |
NOT UPGRADED10.42.8.3510.42.8.3510.42.8.3610.42.8.3610.42.8.3710.42.8.37
In the above result the 1st line is the expected, the 2nd line is a result of the argument received in
rruchecks being passed on to rrupreparation function.How can I not pass the user input from
rruchecks to rrupreparation until all systems have been checked in rruchecks ?https://redd.it/1fzu7as
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
noob here progress bar
I have this simple function in .bashrc:
it works perfectly but no progress bar is shown, why??
https://redd.it/1fzxxl4
@r_bash
I have this simple function in .bashrc:
0x0() { [ -z "$1" -o -r "$1" ] && curl --progress-bar -F"file=@${1:--}" -Fexpires=48 `https://0x0.st` || echo -e "error: bla bla bla"; }it works perfectly but no progress bar is shown, why??
https://redd.it/1fzxxl4
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Stupid question but ...
Hello everyone,
I'm trying to set up a cron job to shut down my students' computers at a fixed time, but it doesn't work: the computers stay on.
I have 3 users on each computer:
Teacher
Student
root
In the "crontab -e" students I enter the following command:
14 17 * * 1-5 /sbin/shutdown -h +1
Thank you in advance for telling me where the error is.
Mark
https://redd.it/1g0gcm9
@r_bash
Hello everyone,
I'm trying to set up a cron job to shut down my students' computers at a fixed time, but it doesn't work: the computers stay on.
I have 3 users on each computer:
Teacher
Student
root
In the "crontab -e" students I enter the following command:
14 17 * * 1-5 /sbin/shutdown -h +1
Thank you in advance for telling me where the error is.
Mark
https://redd.it/1g0gcm9
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community