bash issue with ip command
hi guys, i am trying to write a bash noscript that i will assign later to an alias, to output easier ip eth0 and eth0 ip (for openvpn)
the code looks good to me and work when both eth0 and tun0 are enabled but dont when tun0 is disabled
it output something i didnt ask for and should just change the eth0 output to "disabled" instead of being blank
ideas and help would be nice, thanks yall
https://preview.redd.it/ut9x13eed3ma1.png?width=821&format=png&auto=webp&v=enabled&s=9273f918bb620f17010feaf7b72130ae140cd4b5
https://preview.redd.it/dkmyu4ofd3ma1.png?width=457&format=png&auto=webp&v=enabled&s=992ef304e62f96e904be2aca73714b1d455eafbd
https://redd.it/11junh7
@r_bash
hi guys, i am trying to write a bash noscript that i will assign later to an alias, to output easier ip eth0 and eth0 ip (for openvpn)
the code looks good to me and work when both eth0 and tun0 are enabled but dont when tun0 is disabled
it output something i didnt ask for and should just change the eth0 output to "disabled" instead of being blank
ideas and help would be nice, thanks yall
https://preview.redd.it/ut9x13eed3ma1.png?width=821&format=png&auto=webp&v=enabled&s=9273f918bb620f17010feaf7b72130ae140cd4b5
https://preview.redd.it/dkmyu4ofd3ma1.png?width=457&format=png&auto=webp&v=enabled&s=992ef304e62f96e904be2aca73714b1d455eafbd
https://redd.it/11junh7
@r_bash
Where can I learn to use NNN as a noob?
What's a good tutorial on nnn for Mac. I'm a terminal noob, and installed the program. It's really fast and I love it for zipping around my folders and doing basic tasks. I've not managed to get previews however. I've spent quite some hours now with ChatGTP to get help but I mostly get inadequate, conflicting, or plainly wrong instructions. The learning curve is steep here as I'm looking at the instructions for installing preview-tui, and I can't quite get my head around it.
This is probably not the right forum for asking, but perhaps someone on here can point me in the right direction? Where can I get help with this stuff? Any advice would be appreciated.
Thanks.
https://redd.it/11kauu4
@r_bash
What's a good tutorial on nnn for Mac. I'm a terminal noob, and installed the program. It's really fast and I love it for zipping around my folders and doing basic tasks. I've not managed to get previews however. I've spent quite some hours now with ChatGTP to get help but I mostly get inadequate, conflicting, or plainly wrong instructions. The learning curve is steep here as I'm looking at the instructions for installing preview-tui, and I can't quite get my head around it.
This is probably not the right forum for asking, but perhaps someone on here can point me in the right direction? Where can I get help with this stuff? Any advice would be appreciated.
Thanks.
https://redd.it/11kauu4
@r_bash
Reddit
r/bash on Reddit: Where can I learn to use NNN as a noob?
Posted by u/unreluctant - No votes and 2 comments
Trying to use inotify + cp to move file upon creation.. cp can't reach source
Script:
#!/bin/sh
source='/var/lib/awx/projects/_*/files/'
dest='/var/lib/awx/proj_dep_files'
inotifywait -m --event create,modify,delete /var/lib/awx/projects/_*/files/ --format %w%f | while read path file; do
cp -f $path /var/lib/awx/proj_dep_files/
done
Error:
Setting up watches.
Watches established.
cp: cannot stat '/var/lib/awx/projects/_33__aap_repo/files/RPM-GPG-Key-cisco-amp': No such file or directory
cp: cannot stat '/var/lib/awx/projects/_33__aap_repo/files/debsig_policy': No such file or directory
cp: cannot stat '/var/lib/awx/projects/_33__aap_repo/files/sftd.yaml.j2': No such file or directory
cp: cannot stat '/var/lib/awx/projects/_33__aap_repo/files/snmpd.conf': No such file or directory
Now source and dest have been verified a few times.. perms on source and dest = are 777.I did try just an 'echo $path $file' earlier and the value of $path is the full /dir/path/to/file.name
​
And I can run the inotify and cp parts manually and they work so I'm totally struggle bussing it on this.
​
EDIT: I realize the source and dest variables arent doing anything.. with them I get the same error. This was one iteration of testing.
https://redd.it/11kgfau
@r_bash
Script:
#!/bin/sh
source='/var/lib/awx/projects/_*/files/'
dest='/var/lib/awx/proj_dep_files'
inotifywait -m --event create,modify,delete /var/lib/awx/projects/_*/files/ --format %w%f | while read path file; do
cp -f $path /var/lib/awx/proj_dep_files/
done
Error:
Setting up watches.
Watches established.
cp: cannot stat '/var/lib/awx/projects/_33__aap_repo/files/RPM-GPG-Key-cisco-amp': No such file or directory
cp: cannot stat '/var/lib/awx/projects/_33__aap_repo/files/debsig_policy': No such file or directory
cp: cannot stat '/var/lib/awx/projects/_33__aap_repo/files/sftd.yaml.j2': No such file or directory
cp: cannot stat '/var/lib/awx/projects/_33__aap_repo/files/snmpd.conf': No such file or directory
Now source and dest have been verified a few times.. perms on source and dest = are 777.I did try just an 'echo $path $file' earlier and the value of $path is the full /dir/path/to/file.name
​
And I can run the inotify and cp parts manually and they work so I'm totally struggle bussing it on this.
​
EDIT: I realize the source and dest variables arent doing anything.. with them I get the same error. This was one iteration of testing.
https://redd.it/11kgfau
@r_bash
SryRMS: A bash noscript to help install some popular proprietary as well as libre applications not available in the official repositories of Ubuntu.
https://github.com/hakerdefo/sryrms
https://redd.it/11l7iom
@r_bash
https://github.com/hakerdefo/sryrms
https://redd.it/11l7iom
@r_bash
GitHub
GitHub - hakerdefo/sryrms: SryRMS helps you in installing some popular proprietary as well as libre applications not available…
SryRMS helps you in installing some popular proprietary as well as libre applications not available in the official repositories of Ubuntu. - hakerdefo/sryrms
Creating a bash noscript to match multiline patterns in log files
Hi,
I'm trying to automate some time consuming tasks/log checking, building a system that I will replicate to other uses.
I have a logfile for example:
...multiline ACTION Text where all is good...
ERR-101 Something is wrong
ERR-201 Something is wrong with QASDASDASD
INFO-524 Something was wrong
WARN-484 Check line 23
...multiline ACTION Text where all is good...
ERR-101 Something is wrong
ERR-201 Something is wrong with PPOYOYOY
INFO-524 Something was wrong
WARN-484 Check line 23
INFO-524 This is it
I'm creating a check-error.template file:
# This is the template file
ERR-101 Something is wrong
ERR-201 Something is wrong with <TEXT_VAR>
INFO-524 Something was wrong
WARN-484 Check line <NUMBER_VAR>
<?>INFO-524 This is it</?>
Starting with # is a comment, surrounded by <?> are optional (e.g. exist only in the last line).
Text and number will be regexp checked.
If the error matches the template, I know it's ignorable.
I'm not using something advanced (perl, other regexp helpers), as it will be an issue to make sure it exists on every environment.
The following function gets a file and converts the template to regexp pattern
function template2variable {
local file=$1
local var_name=$2
local template=$(sed '/^#/d' "$file")
local pattern="${template//\\/\\\\}" # replace \ with \\
pattern="${pattern//\"/\\\"}" # escape "
pattern="${pattern//<TEXT_VALUE>/([[:alnum:]_]+)}"
pattern="${pattern//<NUMBER_VALUE>/([[:digit:]]+)}"
pattern="${pattern//$'\n'/\\n}"
pattern="${pattern//<?>/(}"
pattern="${pattern//<\/?>/)?}"
printf -v "$var_name" '%s' "$pattern"
}
template2variable "check-error.template" $error_template
Matching template with:
grep -Pzo "${error_template}" $logfile
Doing so, I get back all the template lines I wished.
However, when trying to work with the grep data
using -n lists every iteration with 1
using -c I get line count of 1
using -v results in an empty output
It seems like the match has returned as one giant result instead of several I can iterate over.
What am I doing wrong?
Suggestions for improvement?
Thank you
https://redd.it/11lepmr
@r_bash
Hi,
I'm trying to automate some time consuming tasks/log checking, building a system that I will replicate to other uses.
I have a logfile for example:
...multiline ACTION Text where all is good...
ERR-101 Something is wrong
ERR-201 Something is wrong with QASDASDASD
INFO-524 Something was wrong
WARN-484 Check line 23
...multiline ACTION Text where all is good...
ERR-101 Something is wrong
ERR-201 Something is wrong with PPOYOYOY
INFO-524 Something was wrong
WARN-484 Check line 23
INFO-524 This is it
I'm creating a check-error.template file:
# This is the template file
ERR-101 Something is wrong
ERR-201 Something is wrong with <TEXT_VAR>
INFO-524 Something was wrong
WARN-484 Check line <NUMBER_VAR>
<?>INFO-524 This is it</?>
Starting with # is a comment, surrounded by <?> are optional (e.g. exist only in the last line).
Text and number will be regexp checked.
If the error matches the template, I know it's ignorable.
I'm not using something advanced (perl, other regexp helpers), as it will be an issue to make sure it exists on every environment.
The following function gets a file and converts the template to regexp pattern
function template2variable {
local file=$1
local var_name=$2
local template=$(sed '/^#/d' "$file")
local pattern="${template//\\/\\\\}" # replace \ with \\
pattern="${pattern//\"/\\\"}" # escape "
pattern="${pattern//<TEXT_VALUE>/([[:alnum:]_]+)}"
pattern="${pattern//<NUMBER_VALUE>/([[:digit:]]+)}"
pattern="${pattern//$'\n'/\\n}"
pattern="${pattern//<?>/(}"
pattern="${pattern//<\/?>/)?}"
printf -v "$var_name" '%s' "$pattern"
}
template2variable "check-error.template" $error_template
Matching template with:
grep -Pzo "${error_template}" $logfile
Doing so, I get back all the template lines I wished.
However, when trying to work with the grep data
using -n lists every iteration with 1
using -c I get line count of 1
using -v results in an empty output
It seems like the match has returned as one giant result instead of several I can iterate over.
What am I doing wrong?
Suggestions for improvement?
Thank you
https://redd.it/11lepmr
@r_bash
Reddit
r/bash on Reddit: Creating a bash noscript to match multiline patterns in log files
Posted by u/WhenYouDev - No votes and no comments
It seems one can't use FFMpeg sub-folder syntax, './', when specifying list of video/audio files to concatenate in a text file.
I'm in the folder, present working directory, /home/user/Documents/, and have 2 main folders:
File List Text Files
/Split Files/Subfolder/
The first folder contains a text file, FileList.txt, with a list of video I'd like to concatenate/merge into one sequence:
file '/home/user/Documents/Split Files/Subfolder/004.webm'
file '/home/user/Documents/Split Files/Subfolder/005.webm'
Alternatively they can be specified as:
file './Split Files/Subfolder/004.webm'
file './Split Files/Subfolder/005.webm'
The following statement is executed, to join 004.webm and 005.webm into the output file 004005.web:
ffmpeg -f concat -safe 0 -i "./File List Text Files/Filenames.txt" -c copy "./Split Files/Subfolder/004005.webm"
In Windows CMD, I could use,
Impossible to open './File List Text Files/./Split Files/Subfolder/004.webm'
./File List Text Files/Filenames.txt: No such file or directory
It's trying to combing the two directories into one, which wasn't the case with Windows 7 CMD.
https://redd.it/11liy3m
@r_bash
I'm in the folder, present working directory, /home/user/Documents/, and have 2 main folders:
File List Text Files
/Split Files/Subfolder/
The first folder contains a text file, FileList.txt, with a list of video I'd like to concatenate/merge into one sequence:
file '/home/user/Documents/Split Files/Subfolder/004.webm'
file '/home/user/Documents/Split Files/Subfolder/005.webm'
Alternatively they can be specified as:
file './Split Files/Subfolder/004.webm'
file './Split Files/Subfolder/005.webm'
The following statement is executed, to join 004.webm and 005.webm into the output file 004005.web:
ffmpeg -f concat -safe 0 -i "./File List Text Files/Filenames.txt" -c copy "./Split Files/Subfolder/004005.webm"
In Windows CMD, I could use,
./Split Files/Subfolder/004.webm, in FileList.txt, but on Ubuntu Linux, FFMpeg displays the following error:Impossible to open './File List Text Files/./Split Files/Subfolder/004.webm'
./File List Text Files/Filenames.txt: No such file or directory
It's trying to combing the two directories into one, which wasn't the case with Windows 7 CMD.
https://redd.it/11liy3m
@r_bash
Reddit
r/bash on Reddit: It seems one can't use FFMpeg sub-folder syntax, './', when specifying list of video/audio files to concatenate…
Posted by u/Long_Bed_4568 - No votes and no comments
remove all but some entries from file
hello,
I have this file and I want to Delete everything in it but "DS *", "RS *", "SA *", "RX *" entries, how do I do that?
I could use grep, sed or jq.
The contents of the file looks for example like this:
"DS109j","DS508","DS408","RS408","RS408RP","DS108j","CS407","CS407e","RS407","DS207","DS207+","DS107","DS107+","DS107e","CS-406","CS-406e","RS-406","DS-106","DS-106e","DS-106j","USB Station","DS-101","DS-101g+","DS-101j","2.5\" Disk Tray (D1)","2.5\" Disk Tray (R1)","2.5\" Disk Tray (R2)","2.5\" Disk Tray (R3)","2.5\" Disk Tray (R4)","2.5\" Drive Tray (R5)","6G eSATA Cable","Adapter 100W_1","Adapter 100W_2","Adapter 10W\/11W_1_EU","Adapter 10W\/11W_1_UK","Adapter 120W_1","Adapter 24W Set","Adapter 24W_1_US","Adapter 30W Set","Adapter 36W Set","Adapter 36W_1","Adapter 42W Set","Adapter 42W_1_AU","Adapter 42W_1_EU","Adapter 42W_1_UK","Adapter 42W_1_US","Adapter 48W\/50W_1","Adapter 60W_1","Adapter 65W\/72W_1","Adapter 65W_2","Adapter 72W_2","Adapter 90W_1","CPU Cooler 40*40*10","CPU Cooler 92*92*25","CPU FAN 40*40*10_1","Cable Infiniband","Cable MiniSASHD_EXT_1","Cable MiniSASHD_EXT_2"
Thanks!
https://redd.it/11lrnzz
@r_bash
hello,
I have this file and I want to Delete everything in it but "DS *", "RS *", "SA *", "RX *" entries, how do I do that?
I could use grep, sed or jq.
The contents of the file looks for example like this:
"DS109j","DS508","DS408","RS408","RS408RP","DS108j","CS407","CS407e","RS407","DS207","DS207+","DS107","DS107+","DS107e","CS-406","CS-406e","RS-406","DS-106","DS-106e","DS-106j","USB Station","DS-101","DS-101g+","DS-101j","2.5\" Disk Tray (D1)","2.5\" Disk Tray (R1)","2.5\" Disk Tray (R2)","2.5\" Disk Tray (R3)","2.5\" Disk Tray (R4)","2.5\" Drive Tray (R5)","6G eSATA Cable","Adapter 100W_1","Adapter 100W_2","Adapter 10W\/11W_1_EU","Adapter 10W\/11W_1_UK","Adapter 120W_1","Adapter 24W Set","Adapter 24W_1_US","Adapter 30W Set","Adapter 36W Set","Adapter 36W_1","Adapter 42W Set","Adapter 42W_1_AU","Adapter 42W_1_EU","Adapter 42W_1_UK","Adapter 42W_1_US","Adapter 48W\/50W_1","Adapter 60W_1","Adapter 65W\/72W_1","Adapter 65W_2","Adapter 72W_2","Adapter 90W_1","CPU Cooler 40*40*10","CPU Cooler 92*92*25","CPU FAN 40*40*10_1","Cable Infiniband","Cable MiniSASHD_EXT_1","Cable MiniSASHD_EXT_2"
Thanks!
https://redd.it/11lrnzz
@r_bash
Reddit
r/bash on Reddit: remove all but some entries from file
Posted by u/LiteralAnimalLove - No votes and 1 comment
clevercli: ChatGPT powered CLI utilities.
https://github.com/clevercli/clevercli
https://redd.it/11lwoi4
@r_bash
https://github.com/clevercli/clevercli
https://redd.it/11lwoi4
@r_bash
GitHub
GitHub - clevercli/clevercli: ChatGPT powered CLI utilities. Easily add new prompt types in ~/.clevercli/
ChatGPT powered CLI utilities. Easily add new prompt types in ~/.clevercli/ - clevercli/clevercli
File Test Fails – Issue With Quotation Marks
if ! [ -e "${ISBN} - Book.pdf" ]; then
Gets interpolated to:
if ! [ -e 9780367199692 - Book.pdf ]; then
Condition always resolves to file not found, because the space in the filename breaks the path....
I know this is basic, but I can't figure out how to write shell that will result in the filename quoted:
if ! [ -e "9780367199692 - Book.pdf "]; then
https://redd.it/11ma0ig
@r_bash
if ! [ -e "${ISBN} - Book.pdf" ]; then
Gets interpolated to:
if ! [ -e 9780367199692 - Book.pdf ]; then
Condition always resolves to file not found, because the space in the filename breaks the path....
I know this is basic, but I can't figure out how to write shell that will result in the filename quoted:
if ! [ -e "9780367199692 - Book.pdf "]; then
https://redd.it/11ma0ig
@r_bash
Reddit
r/bash on Reddit: File Test Fails – Issue With Quotation Marks
Posted by u/EUTIORti - No votes and 3 comments
How to hack LD_LIBRARY_PATH to use a recent bash from a Debian sid chroot
I try to get a more up to date version of `bash` from `LinuxMint`.
I have a `chroot` with `Debian Sid` in my box.
What I try to do in a `bash` wrapper noscript, early in my `PATH`
#!/bin/bash
LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux-gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/bin/bash "$@"
But I get:
/home/mevatlave/bin/bash: line 3: 1492488 Segmentation fault (core dumped) LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux-gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/bin/bash "$@"
From the chroot:
% ldd /bin/bash
linux-vdso.so.1 (0x00007fff237fc000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f94de839000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f94de658000)
/lib64/ld-linux-x86-64.so.2 (0x00007f94de9af000)
Is it feasible?
With
LD_LIBRARY_PATH=/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /path/to/chroot/bin/bash "$@"
I get
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.36' not found
With
LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux-gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /path/to/chroot/bin/bash "$@"
I get:
Segmentation fault (core dumped)
LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux- gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib: /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /path/to/chroot/bin/bash "$@"
I can run this one:
#!/bin/bash
LANG=C
LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux-gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /path/to/chroot/bin/bash "$@"
But when I run `bash --version`, I get:
Segmentation fault (core dumped)
-
root@debian-sid_chroot:/# dpkg -l | grep libc6
ii libc6:amd64 2.36-8 amd64 GNU C
Library: Shared libraries
ii libc6-dev:amd64 2.36-8 amd64 GNU C
Library: Development Libraries and Header Files
https://redd.it/11mp45n
@r_bash
I try to get a more up to date version of `bash` from `LinuxMint`.
I have a `chroot` with `Debian Sid` in my box.
What I try to do in a `bash` wrapper noscript, early in my `PATH`
#!/bin/bash
LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux-gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/bin/bash "$@"
But I get:
/home/mevatlave/bin/bash: line 3: 1492488 Segmentation fault (core dumped) LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux-gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/bin/bash "$@"
From the chroot:
% ldd /bin/bash
linux-vdso.so.1 (0x00007fff237fc000)
libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f94de839000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f94de658000)
/lib64/ld-linux-x86-64.so.2 (0x00007f94de9af000)
Is it feasible?
With
LD_LIBRARY_PATH=/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /path/to/chroot/bin/bash "$@"
I get
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.36' not found
With
LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux-gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /path/to/chroot/bin/bash "$@"
I get:
Segmentation fault (core dumped)
LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux- gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib: /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /path/to/chroot/bin/bash "$@"
I can run this one:
#!/bin/bash
LANG=C
LD_LIBRARY_PATH=/path/to/chroot/usr/lib/x86_64-linux-gnu:/path/to/chroot/lib:/path/to/chroot/lib64:/path/to/chroot/var/lib:/path/to/chroot/usr/lib:/path/to/chroot/usr/local/lib /path/to/chroot/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /path/to/chroot/bin/bash "$@"
But when I run `bash --version`, I get:
Segmentation fault (core dumped)
-
root@debian-sid_chroot:/# dpkg -l | grep libc6
ii libc6:amd64 2.36-8 amd64 GNU C
Library: Shared libraries
ii libc6-dev:amd64 2.36-8 amd64 GNU C
Library: Development Libraries and Header Files
https://redd.it/11mp45n
@r_bash
Reddit
r/bash on Reddit: How to hack LD_LIBRARY_PATH to use a recent bash from a Debian sid chroot
Posted by u/MevatlaveKraspek - No votes and 1 comment
Get string field using only bash substitution ?
string="Archwiki 📘 link https://wiki.archlinux.org/index.php?search= care"
Using only bash substitution (meaning no awk, sed, cut, etc), how do I get only the link field $3 "https://wiki.archlinux.org/index.php?search=" ?
https://redd.it/11mte4d
@r_bash
string="Archwiki 📘 link https://wiki.archlinux.org/index.php?search= care"
Using only bash substitution (meaning no awk, sed, cut, etc), how do I get only the link field $3 "https://wiki.archlinux.org/index.php?search=" ?
https://redd.it/11mte4d
@r_bash
Comment in the middle of a case statement
I sent my co-worker a shell noscript snippet and after I copied it to email, I threw in a comment.
I got an email back saying the comment broke the code. Is that possible?
​
case "$1" in
start)
do_something
#comment
;;
stop)
do_something_else
;;
*)
echo "start or stop"
;;
esac
Where's the rule for this? Can a comment go at the end of the line or after the ;;? Google didn't help.
https://redd.it/11mujac
@r_bash
I sent my co-worker a shell noscript snippet and after I copied it to email, I threw in a comment.
I got an email back saying the comment broke the code. Is that possible?
​
case "$1" in
start)
do_something
#comment
;;
stop)
do_something_else
;;
*)
echo "start or stop"
;;
esac
Where's the rule for this? Can a comment go at the end of the line or after the ;;? Google didn't help.
https://redd.it/11mujac
@r_bash
Reddit
r/bash on Reddit: Comment in the middle of a case statement
Posted by u/drillbit7 - No votes and 2 comments
How to block saving sensitive info to history?
I have some regular tasks that involve copy/paste sensitive strings (passwords, etc) to my terminal to encode/decode them (sha256sum, base64, etc). In the process, these sensitive strings are being saved to my bash_history in cleartext, which I would like to avoid!
I can disable my history, that's easy, but I would like to be able to keep this feature.
I already have HISTCONTROL=ignoreboth set, which among other things prevents any command preceded by whitespace from being written to history, which is great for my ad-hoc needs.
Is there any similar option that would allow me to prevent, say, any line beginning with 'echo' from being saved to history? Any hook where I can toss in a regex to determine what does and does not get saved to history?
I could noscript something to manage my history file, but as I am typically working with my homedir on a NAS with background snapshotting, I would rather the string not get written in the first place.
Certainly not a backbreaking issue, but just seeing if I can squeeze another half a percent of efficiency out of my workflow and take care of an odd but major security issue with how I am working today.
https://redd.it/11n3tvd
@r_bash
I have some regular tasks that involve copy/paste sensitive strings (passwords, etc) to my terminal to encode/decode them (sha256sum, base64, etc). In the process, these sensitive strings are being saved to my bash_history in cleartext, which I would like to avoid!
I can disable my history, that's easy, but I would like to be able to keep this feature.
I already have HISTCONTROL=ignoreboth set, which among other things prevents any command preceded by whitespace from being written to history, which is great for my ad-hoc needs.
Is there any similar option that would allow me to prevent, say, any line beginning with 'echo' from being saved to history? Any hook where I can toss in a regex to determine what does and does not get saved to history?
I could noscript something to manage my history file, but as I am typically working with my homedir on a NAS with background snapshotting, I would rather the string not get written in the first place.
Certainly not a backbreaking issue, but just seeing if I can squeeze another half a percent of efficiency out of my workflow and take care of an odd but major security issue with how I am working today.
https://redd.it/11n3tvd
@r_bash
Reddit
r/bash on Reddit: How to block saving sensitive info to history?
Posted by u/gort32 - No votes and 1 comment
Can you force bash to not give a throw a specific error?
I have a function that does something like the following
gg() {
cleanupOnExit() {
declare -p FDall 2>/dev/null && for fd in "${FDall@}"; do
# if FDall has already been defined in the main noscript,
# send each open fd it contains a NULL and then close it.
[[ -e /proc/$$/fd/${FD} ]] && {
printf '\0' >&${fd}
exec {fd}>&-
}
done
# <...do other cleanup...>
}
trap 'cleanupOnExit' EXIT
local -a FDall
exec {FDall[0]}>./.file0
exec {FDall1}>./.file1
# <...do stuff...>
}
When trying to define/source it, bash throws an error saying that
Is there a good way to force bash to just ignore this error and source the function anyways? Any other suggestions to make this work?
I did figure out 1 way to work around this, but it is terrible and I really dont want to use it. Basically you create a variable withthe code to setup theexit trap,then the exit trap sources that variable. You cant just have the exit trap as-isthough, since if the scripot exits before the file denoscriptors are defined in the main noscript the exit trap (that does other stuff too) wont run. Instead, you have to do something like this:
gg() {
cleanupOnExitSrc="$(cat<<'EOF'
cleanupOnExitSrc0="$(cat<<EOI0
cleanupOnExit() {
$(declare -p FDall 2>/dev/null && {
cat<<'EOI1'
for fd in "${FDall@}"; do
# if FDall has already been defined in the main noscript,
# send each open fd it contains it a NULL and then close it.
[[ -e /proc/$$/fd/${FD} ]] && {
printf '\0' >&${fd}
exec {fd}>&-
}
done
EOI1
} || echo ':')
}
EOI0
)"
EOF
)"
trap 'source <(echo "${cleanupOnExitSrc}") && cleanupOnExit' EXIT
local -a FDall
exec {FDall[0]}>./.file0
exec {FDall1}>./.file1
# <...do stuff...>
}
which, again, is terrible
https://redd.it/11n2h0w
@r_bash
I have a function that does something like the following
gg() {
cleanupOnExit() {
declare -p FDall 2>/dev/null && for fd in "${FDall@}"; do
# if FDall has already been defined in the main noscript,
# send each open fd it contains a NULL and then close it.
[[ -e /proc/$$/fd/${FD} ]] && {
printf '\0' >&${fd}
exec {fd}>&-
}
done
# <...do other cleanup...>
}
trap 'cleanupOnExit' EXIT
local -a FDall
exec {FDall[0]}>./.file0
exec {FDall1}>./.file1
# <...do stuff...>
}
When trying to define/source it, bash throws an error saying that
{fd} is an ambiguous redirect. Now I get why bash is unhappy, since when cleanupOnExit is defined {fd} would, in fact, be an ambiguous redirect, but there are checks to ensure that bit of code will only ever run when {fd} exists and is an open file denoscriptor.Is there a good way to force bash to just ignore this error and source the function anyways? Any other suggestions to make this work?
I did figure out 1 way to work around this, but it is terrible and I really dont want to use it. Basically you create a variable withthe code to setup theexit trap,then the exit trap sources that variable. You cant just have the exit trap as-isthough, since if the scripot exits before the file denoscriptors are defined in the main noscript the exit trap (that does other stuff too) wont run. Instead, you have to do something like this:
gg() {
cleanupOnExitSrc="$(cat<<'EOF'
cleanupOnExitSrc0="$(cat<<EOI0
cleanupOnExit() {
$(declare -p FDall 2>/dev/null && {
cat<<'EOI1'
for fd in "${FDall@}"; do
# if FDall has already been defined in the main noscript,
# send each open fd it contains it a NULL and then close it.
[[ -e /proc/$$/fd/${FD} ]] && {
printf '\0' >&${fd}
exec {fd}>&-
}
done
EOI1
} || echo ':')
}
EOI0
)"
EOF
)"
trap 'source <(echo "${cleanupOnExitSrc}") && cleanupOnExit' EXIT
local -a FDall
exec {FDall[0]}>./.file0
exec {FDall1}>./.file1
# <...do stuff...>
}
which, again, is terrible
https://redd.it/11n2h0w
@r_bash
Reddit
r/bash on Reddit: Can you force bash to not give a throw a specific error?
Posted by u/jkool702 - No votes and no comments
finding duplicate files excluding metadata
I am interested in a noscript/utility that will BULK scan all directories recursively, and if the file is compatible with ffmpeg create a SHA checksum of the data EXCLUDING metadata and write it to a file for later sorting by checkum and removing all unique rows..
It is easy for ID3 tags/flac tags/video tags to change without the underlying file changing. I'd like to be able to detect duplicates where the underlying data is the same but the metadata is different.
It would be great if it also supported JPG EXIF data using exiftag or something similar
Has anyone seen a noscript in jists/github or similar ?
Cheers
https://redd.it/11nngho
@r_bash
I am interested in a noscript/utility that will BULK scan all directories recursively, and if the file is compatible with ffmpeg create a SHA checksum of the data EXCLUDING metadata and write it to a file for later sorting by checkum and removing all unique rows..
It is easy for ID3 tags/flac tags/video tags to change without the underlying file changing. I'd like to be able to detect duplicates where the underlying data is the same but the metadata is different.
It would be great if it also supported JPG EXIF data using exiftag or something similar
Has anyone seen a noscript in jists/github or similar ?
Cheers
https://redd.it/11nngho
@r_bash
Reddit
r/bash on Reddit: finding duplicate files excluding metadata
Posted by u/simonmcnair - No votes and no comments
I can't figure out what they want me to do with this bash noscript.
My employer said I had to run this noscript as a docker entrypoint for a postgres docker container.
#!/bin/bash
set -e cat << 'EOF' >> /var/lib/postgresql/data/postgresql.conf # archive options used for backup
wal_level = replica
archive_mode = on
archive_command = 'DIR="/var/backups/$(date +%Y%m%d)-wal"; (test -d "$DIR" || mkdir -p "$DIR") && gzip < "%p" > "$DIR/%f.gz"'
archive_timeout = 60min
#restore_command = 'gunzip < /var/backups/recovered_wal/%f.gz > %p'
EOF psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE USER luca WITH PASSWORD 'luca';
CREATE DATABASE luca;
GRANT ALL PRIVILEGES ON DATABASE luca TO luca;
EOSQL
I am pretty illiterate in bash, but just by looking at it I could tell it was a little bit weird.
Anyways, when running it as a docker entrypoint, the container immediately exits and the docker logs read the following error:
./PostgresScript.sh: line 12: warning: here-document at line 2 delimited by end-of-file (wanted `EOF')
I've personally never seen EOF used like that (I've seen it used mostly like the EOSQL as in the noscript above). I can't figure out what was the intention behind it or how to fix it.
https://redd.it/11ntrki
@r_bash
My employer said I had to run this noscript as a docker entrypoint for a postgres docker container.
#!/bin/bash
set -e cat << 'EOF' >> /var/lib/postgresql/data/postgresql.conf # archive options used for backup
wal_level = replica
archive_mode = on
archive_command = 'DIR="/var/backups/$(date +%Y%m%d)-wal"; (test -d "$DIR" || mkdir -p "$DIR") && gzip < "%p" > "$DIR/%f.gz"'
archive_timeout = 60min
#restore_command = 'gunzip < /var/backups/recovered_wal/%f.gz > %p'
EOF psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE USER luca WITH PASSWORD 'luca';
CREATE DATABASE luca;
GRANT ALL PRIVILEGES ON DATABASE luca TO luca;
EOSQL
I am pretty illiterate in bash, but just by looking at it I could tell it was a little bit weird.
Anyways, when running it as a docker entrypoint, the container immediately exits and the docker logs read the following error:
./PostgresScript.sh: line 12: warning: here-document at line 2 delimited by end-of-file (wanted `EOF')
I've personally never seen EOF used like that (I've seen it used mostly like the EOSQL as in the noscript above). I can't figure out what was the intention behind it or how to fix it.
https://redd.it/11ntrki
@r_bash
Reddit
r/bash on Reddit: I can't figure out what they want me to do with this bash noscript.
Posted by u/No-Fish9557 - No votes and 3 comments
Please help me with this noob multiline cmd argument question
(apologies for not crossposting it properly from r/javahelp, it doesn't let me do that)
I would like to do
cat << EOF | java -jar my.jar
> some stuff
> some more stuff
> EOF
and access the whole thing as the first element of args. But the array is empty.
If hovewer I just do
java -jar my.jar 7
the first element is actually 7. I desperately need to make this work with files or as written in the first example. Please help...
https://redd.it/11nw7v4
@r_bash
(apologies for not crossposting it properly from r/javahelp, it doesn't let me do that)
I would like to do
cat << EOF | java -jar my.jar
> some stuff
> some more stuff
> EOF
and access the whole thing as the first element of args. But the array is empty.
If hovewer I just do
java -jar my.jar 7
the first element is actually 7. I desperately need to make this work with files or as written in the first example. Please help...
https://redd.it/11nw7v4
@r_bash
Reddit
r/bash on Reddit: Please help me with this noob multiline cmd argument question
Posted by u/caverweni - No votes and no comments
What can you do with bash? can you use bash noscripts in accounting/finance?
It seems that a lot of people seem to use bash for things like networking/sys admin work. I really have no idea if I would be interested in that, however (if someone has some resources to see if I would enjoy that kind of work, please feel free to share). I come from a business background so I see a lot of menial things that seem like they could be easily automated. There's a lot of things we do in spreadsheets that I feel are just dirty work. Would bash noscripts be the best way to combat this or should I learn a different programming language such as Python or java?
​
Also, if anyone could direct me to a good place to learn bash, that would be much appreciated. Thank you!
https://redd.it/11nxbwe
@r_bash
It seems that a lot of people seem to use bash for things like networking/sys admin work. I really have no idea if I would be interested in that, however (if someone has some resources to see if I would enjoy that kind of work, please feel free to share). I come from a business background so I see a lot of menial things that seem like they could be easily automated. There's a lot of things we do in spreadsheets that I feel are just dirty work. Would bash noscripts be the best way to combat this or should I learn a different programming language such as Python or java?
​
Also, if anyone could direct me to a good place to learn bash, that would be much appreciated. Thank you!
https://redd.it/11nxbwe
@r_bash
Reddit
r/bash on Reddit: What can you do with bash? can you use bash noscripts in accounting/finance?
Posted by u/samicballs - No votes and 2 comments
Question: Bash process substitution with vim
Hi all,
I have a question about whether it's possible to get an interactive vim from inside a process substitution.
The reason I ask is because I had a seemingly simple idea, but unfortunatelly it simply doesn't work.
Example, how I'd expect it to work:
Here, once you get to
Example, where it doesn't work:
The naive idea here is to interactively write a temporary file with regexps and once you save via
In fact, I actually use an exported function for this, but for simplicity reasons let's just assume you typed the cmd as is.
But it doesn't work!
Depending on how you do it, it either is completely silent until you
So my question is: what does
Is there a way around it?
https://redd.it/11nzm62
@r_bash
Hi all,
I have a question about whether it's possible to get an interactive vim from inside a process substitution.
The reason I ask is because I had a seemingly simple idea, but unfortunatelly it simply doesn't work.
Example, how I'd expect it to work:
zypper pa -i | grep -E -f <(echo bash | fzf)
Here, once you get to
fzf, it will take over controll over your terminal and you can type in your search terms to narrow down matching lines.Example, where it doesn't work:
grep -F -x -f <(tmp="(mktemp)"; vim "$tmp" && cat "$tmp") .bashrc
The naive idea here is to interactively write a temporary file with regexps and once you save via
:wq, it will be taken as input for the matching.In fact, I actually use an exported function for this, but for simplicity reasons let's just assume you typed the cmd as is.
But it doesn't work!
Depending on how you do it, it either is completely silent until you
Ctrl-C out of it, or gives the error message:Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
So my question is: what does
fzf do differently to get the fullscreen/interactive priority in the same terminal, but vim can't do the same?Is there a way around it?
https://redd.it/11nzm62
@r_bash
Reddit
r/bash on Reddit: Question: Bash process substitution with vim
Posted by u/PsychologicalOwl496 - No votes and no comments
How I use Bash to automate tasks on Linux
https://www.codelivly.com/how-i-use-bash-to-automate-tasks-on-linux/
https://redd.it/11obrvz
@r_bash
https://www.codelivly.com/how-i-use-bash-to-automate-tasks-on-linux/
https://redd.it/11obrvz
@r_bash
Codelivly
How I use Bash to automate tasks on Linux - Codelivly
As a Linux user, you’re probably already aware of how powerful the command line can be. With a littl
Is there any sed linter to quickly detect noscript errors?
It's not helpful in relatively long sed-noscripts to see errors that just tell which line number is error on (or just a char number). I wanna something like shellcheck but for sed.
P. S. Maybe this question is invalid, and I should just rewrite code without long sed embedded noscripts.
https://redd.it/11oghg1
@r_bash
It's not helpful in relatively long sed-noscripts to see errors that just tell which line number is error on (or just a char number). I wanna something like shellcheck but for sed.
P. S. Maybe this question is invalid, and I should just rewrite code without long sed embedded noscripts.
https://redd.it/11oghg1
@r_bash
Reddit
r/bash on Reddit: Is there any sed linter to quickly detect noscript errors?
Posted by u/EmilySeville7cfg - No votes and no comments