Does anyone know what this tool is?
I saw a tool that makes any table like command outputs into an actual table (like in sql but more clean, smooth table.).
https://redd.it/1o6b39i
@r_bash
I saw a tool that makes any table like command outputs into an actual table (like in sql but more clean, smooth table.).
https://redd.it/1o6b39i
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
How env var inside single quotes
I have a command that looks like
The value of the json-params flag is variable and so I render it into an environment variable:
which renders as
I am unsure how to get that wrapped in single quotes in order to execute mycommand.
I've tried
and a few other things, but the parameter isn't rendering properly in mycommand. How do I get the single quotes around it?
https://redd.it/1o6fvoi
@r_bash
I have a command that looks like
mycommand --json-params '{"key", "value"}'
The value of the json-params flag is variable and so I render it into an environment variable:
JSON_PARAMS='{"key":"'$(getVal)'"}'
which renders as
{"key": "the dynamic value"}
I am unsure how to get that wrapped in single quotes in order to execute mycommand.
I've tried
mycommand --json-params "'"$JSON_PARAMS"'"
mycommand --json-params "\'"$JSON_PARAMS"\'"
mycommand --json-params '$JSON_PARAMS'
mycommand --json-params '\''$JSON_PARAMS'\''
mycommand --json-params \'$JSON_PARAMS\'
and a few other things, but the parameter isn't rendering properly in mycommand. How do I get the single quotes around it?
https://redd.it/1o6fvoi
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Built a Docker-like container using only Bash — no Go, no Docker daemon!
Hey folks,
I’ve been experimenting with how far Bash noscripting can go when it comes to system-level automation — and ended up building a mini container runtime using just Bash commands.
It uses:
• chroot to isolate a root filesystem
• unshare and mount for namespace separation
• veth pairs to wire up basic container networking
• All glued together by Bash functions and noscripts
It’s surprisingly fun to see Linux primitives turn into something Docker-like, and Bash makes it feel super transparent — every line shows what’s happening under the hood.
If you enjoy seeing Bash push its limits, I recorded a short walkthrough of the implementation here →
https://youtu.be/FNfNxoOIZJs
https://redd.it/1o6z9bp
@r_bash
Hey folks,
I’ve been experimenting with how far Bash noscripting can go when it comes to system-level automation — and ended up building a mini container runtime using just Bash commands.
It uses:
• chroot to isolate a root filesystem
• unshare and mount for namespace separation
• veth pairs to wire up basic container networking
• All glued together by Bash functions and noscripts
It’s surprisingly fun to see Linux primitives turn into something Docker-like, and Bash makes it feel super transparent — every line shows what’s happening under the hood.
If you enjoy seeing Bash push its limits, I recorded a short walkthrough of the implementation here →
https://youtu.be/FNfNxoOIZJs
https://redd.it/1o6z9bp
@r_bash
YouTube
I Built a FAST Linux Container in 30 Minutes WITHOUT Docker
Learn how to build a custom Linux container from scratch without using Docker! In this tutorial, I walk you step by step through creating your own container using Linux commands, including advanced features like unshare, network namespaces, veth pairs, and…
What is the cmd for get info of a program? ruby and asciidoctor PDF too...
Hi, I need to know the size, dependencies needed, etc of programs previously to do sudo apt -i (here ruby and asciidoctor-pdf).
What is the cmd to get info about them?
Thank you and Regards!
https://redd.it/1o7pugz
@r_bash
Hi, I need to know the size, dependencies needed, etc of programs previously to do sudo apt -i (here ruby and asciidoctor-pdf).
What is the cmd to get info about them?
Thank you and Regards!
https://redd.it/1o7pugz
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Why this sub shows #!/bin/bash in Google search result page instead of r/xxx
https://preview.redd.it/g347m3cztivf1.png?width=1624&format=png&auto=webp&s=0093e84553d2c9d9610ba46f67a246b4e79a0c8e
https://redd.it/1o8eyvy
@r_bash
https://preview.redd.it/g347m3cztivf1.png?width=1624&format=png&auto=webp&s=0093e84553d2c9d9610ba46f67a246b4e79a0c8e
https://redd.it/1o8eyvy
@r_bash
Learning Bash Scripting
I'm completely lost, I'm trying to find myself a path a road map that could put me on track to learn bash noscripting and hold its power. I'm just a beginner and somehow familiar with the Linux terminal commands. I'll be grateful for an advice.
https://redd.it/1o7zkz8
@r_bash
I'm completely lost, I'm trying to find myself a path a road map that could put me on track to learn bash noscripting and hold its power. I'm just a beginner and somehow familiar with the Linux terminal commands. I'll be grateful for an advice.
https://redd.it/1o7zkz8
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
A prettier ls for your terminal—ls-f, built with Bash and Python
Hey folks 👋
I’ve always loved a clean, colorful terminal — but ls felt… dull.
So I built ls-f — a modern, icon-powered replacement for ls, written entirely in Bash + Python.
🧩 What it does:
1. Adds Nerd Font icons for files and folders
2. Preserves all regular ls flags (-l, -a, -h, etc.)
3. Detects file types automatically
4. Works everywhere — Linux, macOS, Termux — no Rust/Go compilation needed
⚡ Install in one line
curl -fsSL https://raw.githubusercontent.com/swadhinbiswas/ls-f/refs/heads/main/install-standalone.sh | bash
🧠 Why I built it
I wanted a “beautiful
🔗 GitHub: https://github.com/swadhinbiswas/ls-f
⭐ If you like it, please give it a star — it helps others find it!
https://redd.it/1o90b5j
@r_bash
Hey folks 👋
I’ve always loved a clean, colorful terminal — but ls felt… dull.
So I built ls-f — a modern, icon-powered replacement for ls, written entirely in Bash + Python.
🧩 What it does:
1. Adds Nerd Font icons for files and folders
2. Preserves all regular ls flags (-l, -a, -h, etc.)
3. Detects file types automatically
4. Works everywhere — Linux, macOS, Termux — no Rust/Go compilation needed
⚡ Install in one line
curl -fsSL https://raw.githubusercontent.com/swadhinbiswas/ls-f/refs/heads/main/install-standalone.sh | bash
🧠 Why I built it
I wanted a “beautiful
ls” that just worked out of the box without installing huge binaries or dependencies.🔗 GitHub: https://github.com/swadhinbiswas/ls-f
⭐ If you like it, please give it a star — it helps others find it!
https://redd.it/1o90b5j
@r_bash
GitHub
GitHub - swadhinbiswas/ls-f: ls-f is a Linux terminal ls that displays file-type-specific icons using Nerd Fonts. It enhances…
ls-f is a Linux terminal ls that displays file-type-specific icons using Nerd Fonts. It enhances file listings by adding colorful, meaningful icons for different file types . Works on all Linux d...
What Was Your Motivation/Goal for Learning Terminal Usage/Bash/Shell Scripting?
Greetings All !
I'm trying to understand if there is a common subset of motivations for people to dive into terminal usage and shell noscripting.
Of course Curiosity is a strong motivator, BUT what was that killer goal/action/outcome that you couldn't wait to learn enough to accomplish via Terminal Commands / Shell Scripting?
https://redd.it/1o9nz6g
@r_bash
Greetings All !
I'm trying to understand if there is a common subset of motivations for people to dive into terminal usage and shell noscripting.
Of course Curiosity is a strong motivator, BUT what was that killer goal/action/outcome that you couldn't wait to learn enough to accomplish via Terminal Commands / Shell Scripting?
https://redd.it/1o9nz6g
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Interview Question: How would you enter and execute commands on 100s of servers using plain bash noscript?
I thought installing ansible on each node was the only way. But i was required to answer with using bash only. I replied maybe by using SSH-keygen algorithm. Was I correct?
https://redd.it/1o9ppb3
@r_bash
I thought installing ansible on each node was the only way. But i was required to answer with using bash only. I replied maybe by using SSH-keygen algorithm. Was I correct?
https://redd.it/1o9ppb3
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Apps do bash
I know the name may seem strange but the question is
Where can I learn more about the bash structure
(In this case, the apps that are native to it)
I'm asking this question because from the answers I received in the post I made in this Sub, bash is
* A programming language (although it's not as complete as others because it doesn't deal well with arrays (if I'm not mistaken it was something like that) and other things I still need to know)
*An interpreted language (converts lines one by one, which can be a bit slow)
*TMB is a noscripting language, which can execute system-related commands
It's a prompt (or shell, maybe Shell and prompt are the same thing. By the time I finish this post I will have researched and discovered the answer.
But to summarize the question, I would like to know if commands like ls, cd, cat etc. are native to bash or the system and if they are native to the system, if there are apps native to bash and where can I find out more about them.
https://redd.it/1o9ww14
@r_bash
I know the name may seem strange but the question is
Where can I learn more about the bash structure
(In this case, the apps that are native to it)
I'm asking this question because from the answers I received in the post I made in this Sub, bash is
* A programming language (although it's not as complete as others because it doesn't deal well with arrays (if I'm not mistaken it was something like that) and other things I still need to know)
*An interpreted language (converts lines one by one, which can be a bit slow)
*TMB is a noscripting language, which can execute system-related commands
It's a prompt (or shell, maybe Shell and prompt are the same thing. By the time I finish this post I will have researched and discovered the answer.
But to summarize the question, I would like to know if commands like ls, cd, cat etc. are native to bash or the system and if they are native to the system, if there are apps native to bash and where can I find out more about them.
https://redd.it/1o9ww14
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
is there any way to make bash to work like zsh more
- first of all, can i make bash to constantly write and read command history like ZSH(real-time) ❓
i don't wanna switch only for this one reason. so if there is a way then it'll be better for me. I'll stick to bash anyways.
- second question : can i run bash noscript normally if my terminal emulator is using zsh❓ like inwindows we can run .bat (batch noscript) from powershell. powershell is nice and it lets me run batch noscript like it would run in command prompt by invoking cmd.exe
https://redd.it/1oaayn2
@r_bash
- first of all, can i make bash to constantly write and read command history like ZSH(real-time) ❓
i don't wanna switch only for this one reason. so if there is a way then it'll be better for me. I'll stick to bash anyways.
- second question : can i run bash noscript normally if my terminal emulator is using zsh❓ like inwindows we can run .bat (batch noscript) from powershell. powershell is nice and it lets me run batch noscript like it would run in command prompt by invoking cmd.exe
https://redd.it/1oaayn2
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Trying To Figure Out TMUX
So I have been trying to learn and use TMUX for a simple SMS PDU creator. But I am severely struggling with the finer aspects of TMUX. My main problem really starts at the second to last line. -->
tmux attach-session -t SMDS
Originally I wanted to create the entire TMUX layout in the 'initialization' part of my noscript and the use the 'main' part for the actual functionality. I quickly became frustrated when anything passed the attach-session command would not execute until I executed
tmux kill-server
Then anything passed that line would execute and throw errors because, well, there was no longer a TMUX server running, let alone the modifications to the panes I was trying to accomplish. So to where I am now. I decided I guess I will just put the functionality inside with all the layout code. I don't like it. It's not clean, mixes together two chunks of code that, atleast in my mind, should be separated. But worse above all? It doesn't even work either.
Now when I joined this sub to ask for some help the first thing I saw was a post about set -x. So I added it quick. I learned that even though I am sending keys, to run a blocking command(read -p), for whatever reason it does not work the way I thought it would. It continues right passed the read command. Though SMDS:0.0 is waiting for my input, the main part of the code continues to execute. So before I get a chance to even type a single input character set -x showed that it continues right on passed the read and right on passed the case statement.
So I guess ultimately, could someone point me in the direction of a good place to start understanding TMUX. I did all this reading online trying to solve my first issue(not executing passed the attach-session command), and yet not one tutorial, 101, or even reading codes and codes, hinted that attach-session was a blocking command. I just kinda had to experimentally figure that one out. So a point in the right direction, or a hint at something that I am missing or overlooking, or hell at this point, a piece of blocking code that works inside of a TMUX session, would be most welcome. I just started trying to learn TMUX yesterday so I definitely lack in knowledge, but I did stay up till 6am this morning trying to figure out these seemingly super simple issues. What am I missing?
Thank you in advance!
#!/data/data/com.termux/files/usr/bin/bash
#:INTRO{{{
##
# Droid Rage #
# PDUMaker.sh #
# ~~7.3.3.~~ #
# 10/07/25 #
##
#Definitely gonna butcher this...
#:INTRO}}}
#:PRE-INIT{{{
set -x
#:PRE-INIT}}}
#:VARIABLES{{{
read -r RWS CLMS <<< "$(stty size)"
#:VARIABLES}}}
#:FUNCTIONS{{{
EndPrgm(){
read -p "ENTER To Exit"
exit 0
}
#:FUNCTIONS}}}
#:INITIALIZE{{{
#Kill Previous/Start Anew
tmux kill-server
tmux new-session -d -s SMDS -x- -y-
#Pane Creation
tmux split-window -v
tmux resize-pane -t SMDS:0.0 -y 1
tmux split-window -h -t SMDS:0.1
tmux split-window -v -t SMDS:0.1
tmux resize-pane -t SMDS:0.3 -x $(($CLMS/3))
#Pane Titles
tmux select-pane -t SMDS:0.0 -T 'Input Prompt'
tmux select-pane -t SMDS:0.1 -T 'PDU Information'
tmux select-pane -t SMDS:0.2 -T 'Command Outputs'
tmux select-pane -t SMDS:0.3 -T 'Imports'
#Prep Pane
[ -f redirect ] && rm redirect
touch redirect
#Pane Commands
tmux send-keys -t SMDS:0.0 'exec > redirect; clear' ENTER
tmux send-keys -t SMDS:0.0 C-l ENTER
tmux send-keys -t SMDS:0.1 'PS1=""' ENTER
tmux send-keys -t SMDS:0.1 'clear' ENTER
tmux send-keys -t SMDS:0.2 'PS1=""' ENTER
tmux send-keys -t SMDS:0.2 'tail -f redirect' ENTER
tmux send-keys -t SMDS:0.3 'PS1=""' ENTER
tmux send-keys -t SMDS:0.3 'clear' ENTER
tmux run-shell -t SMDS:0.3 'ls -X Imports' ENTER
#Pane Disabling
tmux select-pane -d -t
So I have been trying to learn and use TMUX for a simple SMS PDU creator. But I am severely struggling with the finer aspects of TMUX. My main problem really starts at the second to last line. -->
tmux attach-session -t SMDS
Originally I wanted to create the entire TMUX layout in the 'initialization' part of my noscript and the use the 'main' part for the actual functionality. I quickly became frustrated when anything passed the attach-session command would not execute until I executed
tmux kill-server
Then anything passed that line would execute and throw errors because, well, there was no longer a TMUX server running, let alone the modifications to the panes I was trying to accomplish. So to where I am now. I decided I guess I will just put the functionality inside with all the layout code. I don't like it. It's not clean, mixes together two chunks of code that, atleast in my mind, should be separated. But worse above all? It doesn't even work either.
Now when I joined this sub to ask for some help the first thing I saw was a post about set -x. So I added it quick. I learned that even though I am sending keys, to run a blocking command(read -p), for whatever reason it does not work the way I thought it would. It continues right passed the read command. Though SMDS:0.0 is waiting for my input, the main part of the code continues to execute. So before I get a chance to even type a single input character set -x showed that it continues right on passed the read and right on passed the case statement.
So I guess ultimately, could someone point me in the direction of a good place to start understanding TMUX. I did all this reading online trying to solve my first issue(not executing passed the attach-session command), and yet not one tutorial, 101, or even reading codes and codes, hinted that attach-session was a blocking command. I just kinda had to experimentally figure that one out. So a point in the right direction, or a hint at something that I am missing or overlooking, or hell at this point, a piece of blocking code that works inside of a TMUX session, would be most welcome. I just started trying to learn TMUX yesterday so I definitely lack in knowledge, but I did stay up till 6am this morning trying to figure out these seemingly super simple issues. What am I missing?
Thank you in advance!
#!/data/data/com.termux/files/usr/bin/bash
#:INTRO{{{
##
# Droid Rage #
# PDUMaker.sh #
# ~~7.3.3.~~ #
# 10/07/25 #
##
#Definitely gonna butcher this...
#:INTRO}}}
#:PRE-INIT{{{
set -x
#:PRE-INIT}}}
#:VARIABLES{{{
read -r RWS CLMS <<< "$(stty size)"
#:VARIABLES}}}
#:FUNCTIONS{{{
EndPrgm(){
read -p "ENTER To Exit"
exit 0
}
#:FUNCTIONS}}}
#:INITIALIZE{{{
#Kill Previous/Start Anew
tmux kill-server
tmux new-session -d -s SMDS -x- -y-
#Pane Creation
tmux split-window -v
tmux resize-pane -t SMDS:0.0 -y 1
tmux split-window -h -t SMDS:0.1
tmux split-window -v -t SMDS:0.1
tmux resize-pane -t SMDS:0.3 -x $(($CLMS/3))
#Pane Titles
tmux select-pane -t SMDS:0.0 -T 'Input Prompt'
tmux select-pane -t SMDS:0.1 -T 'PDU Information'
tmux select-pane -t SMDS:0.2 -T 'Command Outputs'
tmux select-pane -t SMDS:0.3 -T 'Imports'
#Prep Pane
[ -f redirect ] && rm redirect
touch redirect
#Pane Commands
tmux send-keys -t SMDS:0.0 'exec > redirect; clear' ENTER
tmux send-keys -t SMDS:0.0 C-l ENTER
tmux send-keys -t SMDS:0.1 'PS1=""' ENTER
tmux send-keys -t SMDS:0.1 'clear' ENTER
tmux send-keys -t SMDS:0.2 'PS1=""' ENTER
tmux send-keys -t SMDS:0.2 'tail -f redirect' ENTER
tmux send-keys -t SMDS:0.3 'PS1=""' ENTER
tmux send-keys -t SMDS:0.3 'clear' ENTER
tmux run-shell -t SMDS:0.3 'ls -X Imports' ENTER
#Pane Disabling
tmux select-pane -d -t
Trying To Figure Out TMUX
So I have been trying to learn and use TMUX for a simple SMS PDU creator. But I am severely struggling with the finer aspects of TMUX. My main problem really starts at the second to last line. -->
tmux attach-session -t SMDS
Originally I wanted to create the entire TMUX layout in the 'initialization' part of my noscript and the use the 'main' part for the actual functionality. I quickly became frustrated when anything passed the attach-session command would not execute until I executed
tmux kill-server
Then anything passed that line would execute and throw errors because, well, there was no longer a TMUX server running, let alone the modifications to the panes I was trying to accomplish. So to where I am now. I decided I guess I will just put the functionality inside with all the layout code. I don't like it. It's not clean, mixes together two chunks of code that, atleast in my mind, should be separated. But worse above all? It doesn't even work either.
Now when I joined this sub to ask for some help the first thing I saw was a post about set -x. So I added it quick. I learned that even though I am sending keys, to run a blocking command(read -p), for whatever reason it does not work the way I thought it would. It continues right passed the read command. Though SMDS:0.0 is waiting for my input, the main part of the code continues to execute. So before I get a chance to even type a single input character set -x showed that it continues right on passed the read and right on passed the case statement.
So I guess ultimately, could someone point me in the direction of a good place to start understanding TMUX. I did all this reading online trying to solve my first issue(not executing passed the attach-session command), and yet not one tutorial, 101, or even reading codes and codes, hinted that attach-session was a blocking command. I just kinda had to experimentally figure that one out. So a point in the right direction, or a hint at something that I am missing or overlooking, or hell at this point, a piece of blocking code that works inside of a TMUX session, would be most welcome. I just started trying to learn TMUX yesterday so I definitely lack in knowledge, but I did stay up till 6am this morning trying to figure out these seemingly super simple issues. What am I missing?
Thank you in advance!
#!/data/data/com.termux/files/usr/bin/bash
#:INTRO{{{
#***************#
# Droid Rage #
# PDUMaker.sh #
# ~*~7.3.3.~*~ #
# 10/07/25 #
#***************#
#Definitely gonna butcher this...
#:INTRO}}}
#:PRE-INIT{{{
set -x
#:PRE-INIT}}}
#:VARIABLES{{{
read -r RWS CLMS <<< "$(stty size)"
#:VARIABLES}}}
#:FUNCTIONS{{{
EndPrgm(){
read -p "ENTER To Exit"
exit 0
}
#:FUNCTIONS}}}
#:INITIALIZE{{{
#Kill Previous/Start Anew
tmux kill-server
tmux new-session -d -s SMDS -x- -y-
#Pane Creation
tmux split-window -v
tmux resize-pane -t SMDS:0.0 -y 1
tmux split-window -h -t SMDS:0.1
tmux split-window -v -t SMDS:0.1
tmux resize-pane -t SMDS:0.3 -x $(($CLMS/3))
#Pane Titles
tmux select-pane -t SMDS:0.0 -T 'Input Prompt'
tmux select-pane -t SMDS:0.1 -T 'PDU Information'
tmux select-pane -t SMDS:0.2 -T 'Command Outputs'
tmux select-pane -t SMDS:0.3 -T 'Imports'
#Prep Pane
[[ -f redirect ]] && rm redirect
touch redirect
#Pane Commands
tmux send-keys -t SMDS:0.0 'exec > redirect; clear' ENTER
tmux send-keys -t SMDS:0.0 C-l ENTER
tmux send-keys -t SMDS:0.1 'PS1=""' ENTER
tmux send-keys -t SMDS:0.1 'clear' ENTER
tmux send-keys -t SMDS:0.2 'PS1=""' ENTER
tmux send-keys -t SMDS:0.2 'tail -f redirect' ENTER
tmux send-keys -t SMDS:0.3 'PS1=""' ENTER
tmux send-keys -t SMDS:0.3 'clear' ENTER
tmux run-shell -t SMDS:0.3 'ls -X Imports' ENTER
#Pane Disabling
tmux select-pane -d -t
So I have been trying to learn and use TMUX for a simple SMS PDU creator. But I am severely struggling with the finer aspects of TMUX. My main problem really starts at the second to last line. -->
tmux attach-session -t SMDS
Originally I wanted to create the entire TMUX layout in the 'initialization' part of my noscript and the use the 'main' part for the actual functionality. I quickly became frustrated when anything passed the attach-session command would not execute until I executed
tmux kill-server
Then anything passed that line would execute and throw errors because, well, there was no longer a TMUX server running, let alone the modifications to the panes I was trying to accomplish. So to where I am now. I decided I guess I will just put the functionality inside with all the layout code. I don't like it. It's not clean, mixes together two chunks of code that, atleast in my mind, should be separated. But worse above all? It doesn't even work either.
Now when I joined this sub to ask for some help the first thing I saw was a post about set -x. So I added it quick. I learned that even though I am sending keys, to run a blocking command(read -p), for whatever reason it does not work the way I thought it would. It continues right passed the read command. Though SMDS:0.0 is waiting for my input, the main part of the code continues to execute. So before I get a chance to even type a single input character set -x showed that it continues right on passed the read and right on passed the case statement.
So I guess ultimately, could someone point me in the direction of a good place to start understanding TMUX. I did all this reading online trying to solve my first issue(not executing passed the attach-session command), and yet not one tutorial, 101, or even reading codes and codes, hinted that attach-session was a blocking command. I just kinda had to experimentally figure that one out. So a point in the right direction, or a hint at something that I am missing or overlooking, or hell at this point, a piece of blocking code that works inside of a TMUX session, would be most welcome. I just started trying to learn TMUX yesterday so I definitely lack in knowledge, but I did stay up till 6am this morning trying to figure out these seemingly super simple issues. What am I missing?
Thank you in advance!
#!/data/data/com.termux/files/usr/bin/bash
#:INTRO{{{
#***************#
# Droid Rage #
# PDUMaker.sh #
# ~*~7.3.3.~*~ #
# 10/07/25 #
#***************#
#Definitely gonna butcher this...
#:INTRO}}}
#:PRE-INIT{{{
set -x
#:PRE-INIT}}}
#:VARIABLES{{{
read -r RWS CLMS <<< "$(stty size)"
#:VARIABLES}}}
#:FUNCTIONS{{{
EndPrgm(){
read -p "ENTER To Exit"
exit 0
}
#:FUNCTIONS}}}
#:INITIALIZE{{{
#Kill Previous/Start Anew
tmux kill-server
tmux new-session -d -s SMDS -x- -y-
#Pane Creation
tmux split-window -v
tmux resize-pane -t SMDS:0.0 -y 1
tmux split-window -h -t SMDS:0.1
tmux split-window -v -t SMDS:0.1
tmux resize-pane -t SMDS:0.3 -x $(($CLMS/3))
#Pane Titles
tmux select-pane -t SMDS:0.0 -T 'Input Prompt'
tmux select-pane -t SMDS:0.1 -T 'PDU Information'
tmux select-pane -t SMDS:0.2 -T 'Command Outputs'
tmux select-pane -t SMDS:0.3 -T 'Imports'
#Prep Pane
[[ -f redirect ]] && rm redirect
touch redirect
#Pane Commands
tmux send-keys -t SMDS:0.0 'exec > redirect; clear' ENTER
tmux send-keys -t SMDS:0.0 C-l ENTER
tmux send-keys -t SMDS:0.1 'PS1=""' ENTER
tmux send-keys -t SMDS:0.1 'clear' ENTER
tmux send-keys -t SMDS:0.2 'PS1=""' ENTER
tmux send-keys -t SMDS:0.2 'tail -f redirect' ENTER
tmux send-keys -t SMDS:0.3 'PS1=""' ENTER
tmux send-keys -t SMDS:0.3 'clear' ENTER
tmux run-shell -t SMDS:0.3 'ls -X Imports' ENTER
#Pane Disabling
tmux select-pane -d -t
SMDS:0.1
tmux select-pane -d -t SMDS:0.2
tmux select-pane -d -t SMDS:0.3
#:INITIALIZE}}}
#:MAIN{{{
#Get Commands
tmux select-pane -t SMDS:0.0
#tmux set-buffer "read -p 'Start|-->' Cmd"
#tmux paste-buffer
#tmux send-keys -t SMDS:0.0 C-m
tmux send-keys -t SMDS:0.0 "read -p 'Start|-->' Cmd" ENTER
case "$Cmd" in
"Import")
echo "yea"
;;
"Export")
echo "yeah"
;;
"Custom")
echo "yah"
;;
"Help")
#tmux send-keys -t SMDS:0.1 "cat Imports/PDUGuide.hlp" ENTER
#tmux send-keys -t SMDS:0.3 "cat Imports/QuickGuide.hlp" ENTER
echo "yay"
;;
*)
tmux send-keys -t SMDS:0.2 'No Match' ENTER
;;
esac
#Show/Enter The Mess We Devised
tmux attach-session -t SMDS
#:MAIN}}}
https://redd.it/1oayq30
@r_bash
tmux select-pane -d -t SMDS:0.2
tmux select-pane -d -t SMDS:0.3
#:INITIALIZE}}}
#:MAIN{{{
#Get Commands
tmux select-pane -t SMDS:0.0
#tmux set-buffer "read -p 'Start|-->' Cmd"
#tmux paste-buffer
#tmux send-keys -t SMDS:0.0 C-m
tmux send-keys -t SMDS:0.0 "read -p 'Start|-->' Cmd" ENTER
case "$Cmd" in
"Import")
echo "yea"
;;
"Export")
echo "yeah"
;;
"Custom")
echo "yah"
;;
"Help")
#tmux send-keys -t SMDS:0.1 "cat Imports/PDUGuide.hlp" ENTER
#tmux send-keys -t SMDS:0.3 "cat Imports/QuickGuide.hlp" ENTER
echo "yay"
;;
*)
tmux send-keys -t SMDS:0.2 'No Match' ENTER
;;
esac
#Show/Enter The Mess We Devised
tmux attach-session -t SMDS
#:MAIN}}}
https://redd.it/1oayq30
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
How do you export your full package list?
I am building a short noscript to export all installed packages to reproduce my setup later:
Did I miss anything?
If you do anything like that - how do you do it?
https://redd.it/1oe77jj
@r_bash
I am building a short noscript to export all installed packages to reproduce my setup later:
# System Packages
# apt list --installed > apt.list
# pacman -Qe > pacman.list
rpm -qa > rpm.list
# Special package managers
flatpak list --system --app --columns=application | tail -n+1 | sort -u > flatpak.list
brew list -1 --installed-on-request > brew.list
npm list --global --depth=0 > node.npm.list
pnpm list --global --depth=0 > node.pnpm.list
pip list --not-required > python.pip.list
gem list > ruby.gem.list
pipx list --global --short
# Desktop plugins
gnome-extensions list --user --active > gnome.ext.usr.list
gnome-extensions list --system --active > gnome.ext.sys.list
# Containers
sudo podman images --format {{.Repository}}:{{.Tag}} > podman.img.list
Did I miss anything?
If you do anything like that - how do you do it?
https://redd.it/1oe77jj
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
shpack: bundle folder of noscripts to single executable
shpack is a Go-based build tool that bundles multiple shell noscripts into a single, portable executable.
It lets you organize noscripts hierarchically, distribute them as one binary, and run them anywhere — no dependencies required.
https://github.com/luongnguyen1805/shpack/
https://redd.it/1odvswf
@r_bash
shpack is a Go-based build tool that bundles multiple shell noscripts into a single, portable executable.
It lets you organize noscripts hierarchically, distribute them as one binary, and run them anywhere — no dependencies required.
https://github.com/luongnguyen1805/shpack/
https://redd.it/1odvswf
@r_bash
GitHub
GitHub - luongnguyen1805/shpack: Build and package shell-noscripts to single Executable.
Build and package shell-noscripts to single Executable. - luongnguyen1805/shpack
confused af
https://preview.redd.it/q0left7r0nwf1.png?width=1801&format=png&auto=webp&s=b8d3cd93be4c9eba601365f312e3cd0e2b80649e
I'm trying to make a menu for systemctl but it's not working. I expected it to run until the fzf process taking input exits. currently it runs a couple of loops then exits. tell me what I'm doing wrong?
#!/bin/bash
SOCKID=`head /dev/urandom | tr -dc A-Za-z-1-9 | head -c 16`
FZFPID=""
FLAG=""
while pgrep -f "fzf --listen=/tmp/fzf-$SOCKID.sock" || test -z "$FLAG" ; do
sudo systemctl --no-pager list-units
#echo `pgrep -f "fzf --listen=/tmp/fzf-$SOCKID.sock"
if [ ! -z "$FZFPID" ]; then
FLAG="got pid"
fi
sleep 0.1
curl -s --unix-socket /tmp/fzf-$SOCKID.sock http \
-d "reload(sudo systemctl --no-pager list-units)+change-prompt($(date +%H:%M:%S)> )"
done | fzf --listen=/tmp/fzf-$SOCKID.sock
https://redd.it/1od48ld
@r_bash
https://preview.redd.it/q0left7r0nwf1.png?width=1801&format=png&auto=webp&s=b8d3cd93be4c9eba601365f312e3cd0e2b80649e
I'm trying to make a menu for systemctl but it's not working. I expected it to run until the fzf process taking input exits. currently it runs a couple of loops then exits. tell me what I'm doing wrong?
#!/bin/bash
SOCKID=`head /dev/urandom | tr -dc A-Za-z-1-9 | head -c 16`
FZFPID=""
FLAG=""
while pgrep -f "fzf --listen=/tmp/fzf-$SOCKID.sock" || test -z "$FLAG" ; do
sudo systemctl --no-pager list-units
#echo `pgrep -f "fzf --listen=/tmp/fzf-$SOCKID.sock"
#echo "FZF_PID: $FZF_PID"
#echo "FLAG: $FLAG"
#echo date +%s
FZF_PID=pgrep -f "fzf --listen=/tmp/fzf-$SOCKID.sock"`if [ ! -z "$FZFPID" ]; then
FLAG="got pid"
fi
sleep 0.1
curl -s --unix-socket /tmp/fzf-$SOCKID.sock http \
-d "reload(sudo systemctl --no-pager list-units)+change-prompt($(date +%H:%M:%S)> )"
done | fzf --listen=/tmp/fzf-$SOCKID.sock
https://redd.it/1od48ld
@r_bash
Introducing Caddie.sh - a modular shell framework + DSL for managing everything from the terminal
Hey everyone 👋
After years of hacking together noscripts and aliases to manage things, I built something I wish existed earlier — [**caddie.sh**](https://github.com/parnotfar/caddie.sh).
It’s a **modular shell framework and extensible DSL** that standardizes your development environment on macOS (possibly Linux later). Think of it as a personal “caddie” for your terminal always ready with the right tools, configs, and shortcuts in an easy to use language. No more looking for noscripts or forgetting aliases, get tab completion, discoverable help, and sophisticated prompts for everything you do.
# 🧩 Highlights
* **One-command setup:** `make install` — bootstraps your dev environment in minutes
* **Modular architecture:** Python, Rust, Ruby, JS, iOS, and more as plug-and-play modules
* **REPL prompt:** Navigate modules interactively (`caddie> rust build`, `caddie> git status`)
* **Cross-tool integration:** Manages brew, nvm, rvm, cargo, xcode, and git consistently
* **Extensible DSL:** Add your own modules and commands without touching core code
* **Beautiful prompts + 50+ productivity aliases**
# 🏗️ Why I built it
I was tired of inconsistent dev setups across teams and machines. I wanted something simple, repeatable, and actually pleasant to use — without reinventing the entire shell.
# 🔗 Links
* GitHub: [parnotfar/caddie.sh](https://github.com/parnotfar/caddie.sh)
* Docs: [Installation guide](https://github.com/parnotfar/caddie.sh/blob/main/docs/installation.md)
* Example modules: [Core, Rust, Python, Git, CLI](https://github.com/parnotfar/caddie.sh/tree/main/docs/modules)
Would love feedback from anyone who lives in the terminal — and ideas for new modules (thinking Go, AWS, Docker next).
🏌️♂️ “Because every developer deserves a good caddie.”
https://redd.it/1odhg8b
@r_bash
Hey everyone 👋
After years of hacking together noscripts and aliases to manage things, I built something I wish existed earlier — [**caddie.sh**](https://github.com/parnotfar/caddie.sh).
It’s a **modular shell framework and extensible DSL** that standardizes your development environment on macOS (possibly Linux later). Think of it as a personal “caddie” for your terminal always ready with the right tools, configs, and shortcuts in an easy to use language. No more looking for noscripts or forgetting aliases, get tab completion, discoverable help, and sophisticated prompts for everything you do.
# 🧩 Highlights
* **One-command setup:** `make install` — bootstraps your dev environment in minutes
* **Modular architecture:** Python, Rust, Ruby, JS, iOS, and more as plug-and-play modules
* **REPL prompt:** Navigate modules interactively (`caddie> rust build`, `caddie> git status`)
* **Cross-tool integration:** Manages brew, nvm, rvm, cargo, xcode, and git consistently
* **Extensible DSL:** Add your own modules and commands without touching core code
* **Beautiful prompts + 50+ productivity aliases**
# 🏗️ Why I built it
I was tired of inconsistent dev setups across teams and machines. I wanted something simple, repeatable, and actually pleasant to use — without reinventing the entire shell.
# 🔗 Links
* GitHub: [parnotfar/caddie.sh](https://github.com/parnotfar/caddie.sh)
* Docs: [Installation guide](https://github.com/parnotfar/caddie.sh/blob/main/docs/installation.md)
* Example modules: [Core, Rust, Python, Git, CLI](https://github.com/parnotfar/caddie.sh/tree/main/docs/modules)
Would love feedback from anyone who lives in the terminal — and ideas for new modules (thinking Go, AWS, Docker next).
🏌️♂️ “Because every developer deserves a good caddie.”
https://redd.it/1odhg8b
@r_bash
GitHub
GitHub - parnotfar/caddie.sh: caddie.sh is a modular shell framework and extensible DSL for the terminal. Built for clarity and…
caddie.sh is a modular shell framework and extensible DSL for the terminal. Built for clarity and consistency, it provides one-command environment setup, automatic module discovery, and a shared la...
is using which in a noscript really necessary ?
In my company, I often see the "which" command used in noscripts, like this :
$(which sudo) $(which find) $backupFolder -maxdepth 1 -type f -name \"backup_${bddToBackup}_*.gz\" -mtime +$backupRotate -exec rm -f {} \;
I guess it's "to be sure" to find the sudo and find command where ever they are
Is it really useful to use which in this case ? From what I understand, which use the path so to me that would be the exact same as just writing "sudo find [...]"
https://redd.it/1oc6ncc
@r_bash
In my company, I often see the "which" command used in noscripts, like this :
$(which sudo) $(which find) $backupFolder -maxdepth 1 -type f -name \"backup_${bddToBackup}_*.gz\" -mtime +$backupRotate -exec rm -f {} \;
I guess it's "to be sure" to find the sudo and find command where ever they are
Is it really useful to use which in this case ? From what I understand, which use the path so to me that would be the exact same as just writing "sudo find [...]"
https://redd.it/1oc6ncc
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community