r_bash – Telegram
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

if [ "$TERM" = "linux" ]; then

\printf %b '\\e\]P0282a36' # redefine 'black'``

\printf %b '\\e\]P86272a4' # redefine 'bright-black'``

...

fi

or with echo

echo -en "\e]P0222222" #black

echo -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 background

echo -ne '\e]10;#000000\e\\' # change foreground

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
How to style text with code?

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
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
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
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 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
noob here progress bar

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
This media is not supported in your browser
VIEW IN TELEGRAM
A Bash Script To Display Animated Christmas Tree In Terminal
https://redd.it/1g0f2jc
@r_bash
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
My ASCII graphics basic demo engine in BASH language: ISObash.
https://redd.it/1g0jaqj
@r_bash
How to remove all directories that don't contain specific filetypes?

I've made a bit of mess of my music library and am sorting things with beets.io.

It's leaving behind a lot of cruft.

Is there a command I can run recuresibly that will delete all directories and files do not contain *.flac, *.mp3, *.ogg?

I've got hundreds of folders and subfolders much of which is just extra album art or *.m3u kinda stuff I would love to avoid manually going through them.



https://redd.it/1g0jq93
@r_bash
"sudo <command>" doesn't use system wide bash config.

I have created a system wide configuration for bash at /etc/bash.bashrc to format the prompt and source pywal colors so that I don't need to manage a separate config file for root and my user account. However, the colors are only applied when I run a command without elevated privileges. So, it works fine for my user account, and if I actually sign in as root before issuing the command; but if I were to type "sudo ls" while being signed in as my user, the text output remains completely white instead of using my color palette. Can anyone in here explain this behavior and would you be willing to tell me what I need to do to get it working correctly? Here are the contents of my /etc/bash.bashrc:

/etc
$ cat bash.bashrc
# If not running interactively, don't do anything
[ $- != *i* ] && return

# Grab colors from pywal
(cat /home/ego/.cache/wal/sequences &)
source /home/ego/.cache/wal/colors-tty.sh

# Prompt
PS1='\n\w\n\$ '

# Enable color output
alias ls="ls --color=auto"

https://redd.it/1g0ujfr
@r_bash
Super simple question - How can I keep Neovim from opening if fzf is closed with <C-c>?

I have a simple alias which uses fzf to search for and open a file in neovim:

alias nv='nvim$(find . -maxdepth 1 -not -type d | fzf --preveiw="cat {}" --tmux)'

This works pretty much exactly as I want it to (although if it could be better I'd love to know how), but if I close the fzf using ctrl+c neovim will still open a new file.

https://redd.it/1g0zbv9
@r_bash
What boredom does to a man replicating the old TVs 'no signal' color bars in BASH
https://redd.it/1g16wrq
@r_bash
I would like to make this less stupid but have no idea of what to use to get the same result.

echo $((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))$((RANDOM % 2))

the result is a random sequence of number of 0s and 1s

1010010101111111010010110110001011100100100010110110101001101010111001001111110010100101011100101000000011010100111000101101110001111010

https://redd.it/1g1y4i6
@r_bash
A bash banner

https://preview.redd.it/y17eh6ai7eud1.png?width=1142&format=png&auto=webp&s=7a7a7f394fb9996aade20227d11263ea3792e99a

Script here, minus the allergens/uv data since that requires a lot of extra infrastructure:

https://gist.github.com/robbieh/c12d355ea074a7aeef9d847d76ad69f8

This noscript is designed to be run in .bashrc so I get relevant info when I first sit down and open a terminal. After the first time it shows, new terminals will get a much more terse version so that it doesn't become annoying. That resets after an hour.

The noscript contains a way to make a header with figlet and run just about anything to the right of it. That was tricky to work out.

https://redd.it/1g2a7ja
@r_bash
probably stupid mistake

i dont know why but this dont work

printf "%d" $((RANDOM & 1)){$string}; echo

when this does

printf "%d" $((RANDOM & 1)){,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}; echo

https://redd.it/1g2j8n0
@r_bash
Script for creating local web env

Hi, I'm practicing creating a bash noscript to streamline setting up a local web development environment for WordPress. Anyone care to give some feedback on this noscript or some best practices in general?

#!/bin/bash



# Define colors

GREEN='\033[0;32m'

YELLOW='\033[0;33m'

RED='\033[0;31m'

RESET='\033[0m'



# Ask user for project name

read -p "Enter the project name: " PROJECT_NAME



# Check if input is not empty and doesn't containt spaces

if [[ -z "$PROJECT_NAME" || "$PROJECT_NAME" =~ [[:space:]] ]]; then

echo -e "${YELLOW}Project name cannot be empty or contain spaces.${RESET}"

exit 1

fi



# Define variables

PROJECT_DIR="/var/www/html/$PROJECT_NAME"

DB_NAME="$PROJECT_NAME"

DB_USER="root"

DB_PASSWORD=""

DB_HOST="localhost"

WP_HOME="http://$PROJECT_NAME.local"

WP_SITEURL="http://$PROJECT_NAME.local/wp"

APACHE_CONF="/etc/apache2/sites-available/$PROJECT_NAME.conf"

ETC_HOSTS="/etc/hosts"



# Check if the project directory already exists

if [ -d "$PROJECT_DIR" ];

then

echo -e "${YELLOW}$PROJECT_NAME already exists. Please choose another name.${RESET}"

exit 1

fi



# Create the directory using bedrock

composer create-project roots/bedrock "$PROJECT_DIR"



# Ensure Apache can read and write to the Bedrock directory

sudo chown -R www-data:www-data "$PROJECT_DIR"

sudo find "$PROJECT_DIR" -type d -exec chmod 755 {} \;

sudo find "$PROJECT_DIR" -type f -exec chmod 755 {} \;



# Create the database

echo "Creating database $DB_NAME..."

mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS $DB_NAME;"



# Create a new Apache configuration for the project

echo "Creating Apache configuration for Bedrock"

sudo bash -c "cat > $APACHE_CONF <<EOL



<VirtualHost *:80>

ServerName "$PROJECT_NAME".local

DocumentRoot "$PROJECT_DIR"/web



<Directory "$PROJECT_DIR"/web>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>



ErrorLog /var/log/apache2/"$PROJECT_NAME"-error.log

CustomLog /var/log/apache2/"$PROJECT_NAME"-access.log combined

</VirtualHost>

EOL"



# Give www-data permissions to write to /var/log/apache2/ directory

sudo usermod -a -G adm www-data



# Enable the new site and required modules

echo "Enablind the new site and required Apache modules..."

sudo a2ensite "$PROJECT_NAME".conf

sudo a2enmod rewrite



# Add the project to /etc/hosts if it doesn't exist

echo "Adding $PROJECT_NAME.local to /etc/hosts..."

if ! grep -q "$PROJECT_NAME.local" /etc/hosts; then

sudo bash -c "echo '127.0.0.1 $PROJECT_NAME.local' >> /etc/hosts"

fi



# Reload Apache for changes to take effect

systemctl reload apache2



echo -e "${GREEN}$PROJECT_NAME setup completed! You can access it at http://$PROJECT_NAME.local${RESET}"

https://redd.it/1g2qdqk
@r_bash
Missing Alias??

hey, need help ☹️

so about a year ago, i remember setting up an alias that would take "docker" and replace it with "DOCKER_DEFAULT_PLATFORM=linux/amd64 docker-compose build" because i was getting annoyed and it saved me a ton of time.

the problem now, is that im starting to use docker again, and i cant find that alias declared anywhere. its not in .bashrc, .zshrc, .bash_profile, .profile,


i cant find it using grep (too many files, not enough CPU)


i need help. honestly its not a huge deal just spelling it wrong and then correcting it, but i need to find out where this thing is. is there any sort of log that will show everything executed on my machine? ive already tried recording with noscript shell_activity too. no results.

https://redd.it/1g2yth1
@r_bash
I accidentally created a bunch of ~ signs - how do I delete them?
https://redd.it/1g36w4k
@r_bash