what is the "user id"?
hello, i'm trying to understand the "whoami" command, and it says in the man page
"Print the user name associated with the current effective user ID."
what is the user id?
thank you
https://redd.it/1fdfoqn
@r_bash
hello, i'm trying to understand the "whoami" command, and it says in the man page
"Print the user name associated with the current effective user ID."
what is the user id?
thank you
https://redd.it/1fdfoqn
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Can't use tee, but echo works
Hey all,
I am trying to export a GPIO pin, so I can set the level.
If I do:
>echo 362 > /sys/class/gpio/export
No issues.
However, doing:
echo "362" | sudo tee /sys/class/gpio/export
3[ 192.027364] export_store: invalid GPIO 3
6[ 192.031368] export_store: invalid GPIO 6
2[ 192.035549] export_store: invalid GPIO 2
So it's writing them separately, is this expected?
I can get around that by just passing the command to bash by doing:
sudo sh -c "echo 362 > /sys/class/gpio/export"
And this works.
However, it's interesting I see the tee approach done quite a bit online, but it doesn't seem to work for me. Anyone have any ideas?
https://redd.it/1fdv3k7
@r_bash
Hey all,
I am trying to export a GPIO pin, so I can set the level.
If I do:
>echo 362 > /sys/class/gpio/export
No issues.
However, doing:
echo "362" | sudo tee /sys/class/gpio/export
3[ 192.027364] export_store: invalid GPIO 3
6[ 192.031368] export_store: invalid GPIO 6
2[ 192.035549] export_store: invalid GPIO 2
So it's writing them separately, is this expected?
I can get around that by just passing the command to bash by doing:
sudo sh -c "echo 362 > /sys/class/gpio/export"
And this works.
However, it's interesting I see the tee approach done quite a bit online, but it doesn't seem to work for me. Anyone have any ideas?
https://redd.it/1fdv3k7
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Script with Watch command shows unwanted characters ?
Hi,
I have a bash noscript that gives the below out.
SERVICE MNXT STATUS
enodebl2 [ RUNNING ]
l1run.sh RUNNING
l1appnbiot.sh [ STOPPED ]
When the noscript is run with `watch` command, the output show the below characters.
***** SERVICE MNXT STATUS ***** enodebl2 ^[1;32m RUNNING ^[0m l1run.sh [ ^[1;32m RUNNING ^[0m ] l1appnbiot.sh ^[1;31m STOPPED ^[0m
What is causing this, and how to get rid of them ?
https://redd.it/1feawox
@r_bash
Hi,
I have a bash noscript that gives the below out.
SERVICE MNXT STATUS
enodebl2 [ RUNNING ]
l1run.sh RUNNING
l1appnbiot.sh [ STOPPED ]
When the noscript is run with `watch` command, the output show the below characters.
***** SERVICE MNXT STATUS ***** enodebl2 ^[1;32m RUNNING ^[0m l1run.sh [ ^[1;32m RUNNING ^[0m ] l1appnbiot.sh ^[1;31m STOPPED ^[0m
What is causing this, and how to get rid of them ?
https://redd.it/1feawox
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
I have about 100 function in my .bashrc. Should I convert them into noscripts? Do they take unnecessary memory?
As per noscript. Actually I have a dedicated .bash_functions file that is sourced from .bashrc. Most of my custom functions are one liners.
Thanks.
https://redd.it/1fectb3
@r_bash
As per noscript. Actually I have a dedicated .bash_functions file that is sourced from .bashrc. Most of my custom functions are one liners.
Thanks.
https://redd.it/1fectb3
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Best Practices: Multiple spaces in a $(...) for readability
Let's say that I do this in an attempt to make it easier for me to read the noscript:
foo=$(nice -n 19 ionice -c 3 \
find /foo/ -maxdepth 1 -type f -exec du -b {} + | awk '{sum += $1} END {print sum}')
In case it doesn't post the way I typed it, there's a \\ followed by a line break, then 6 spaces on the second line to make it line up with the first line.
I'm not having an errors when I run it, but is this something that I should worry about becoming an error later on? I don't use bash that often, and I dread having an error in 3 or 4 years and having no idea why.
Not that most of you can see the future... I guess I'm just asking about "best practices" O:-)
https://redd.it/1ff9eh9
@r_bash
Let's say that I do this in an attempt to make it easier for me to read the noscript:
foo=$(nice -n 19 ionice -c 3 \
find /foo/ -maxdepth 1 -type f -exec du -b {} + | awk '{sum += $1} END {print sum}')
In case it doesn't post the way I typed it, there's a \\ followed by a line break, then 6 spaces on the second line to make it line up with the first line.
I'm not having an errors when I run it, but is this something that I should worry about becoming an error later on? I don't use bash that often, and I dread having an error in 3 or 4 years and having no idea why.
Not that most of you can see the future... I guess I'm just asking about "best practices" O:-)
https://redd.it/1ff9eh9
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
FOSS project is looking for BASH enthusiasts
https://preview.redd.it/lgbrquf1kkod1.png?width=996&format=png&auto=webp&s=1063d8906c4a2753b09e25c44568d386373b226f
We are excited to introduce the next generation of the Armbian Config tool! This redesigned and lightweight tool is central to managing single-board computers, offering a wide range of features for both hardware-specific and general system configuration.
# Key Advantages:
* Extremely lightweight with minimal dependencies
* Redesigned from scratch for better performance and flexibility
* JSON-based menu structure with options for TUI, CLI, or API
# Quick Recap
The `armbian-config` tool has been essential for configuring single-board computers, combining our long-term expertise in Linux and the embedded world. However, the old version had become bulky and difficult to maintain, prompting us to redesign it from the ground up. This new version offers better performance, flexibility, and robustness. We’re calling on the community to help test and complete it before the upcoming release!
You can help by installing the developer version for testing:
echo "deb [signed-by=/usr/share/keyrings/armbian.gpg] stable main" \
| sudo tee /etc/apt/sources.list.d/armbian-development.list > /dev/null
sudo apt update
sudo apt install armbian-configng
https://armbian.github.io/configng
Then, execute:
sudo armbian-configng
Check help with:
sudo bin/armbian-configng --help
*Note: This is a developer version meant for testing purposes only.*
# Users: We Need Your Feedback!
This tool is not yet production-ready, and we expect issues to arise. We encourage you to submit bug reports and feature requests as you encounter them. Our team will address these based on priority and feasibility.
* [**Submit Bug Report**](https://github.com/armbian/configng/issues/new?assignees=&labels=Bug&projects=&template=1-bugreport.yml&noscript=%5BBug%5D%3A+)
* [**Request a Feature**](https://github.com/armbian/configng/issues/new?assignees=&labels=Feature+Request&projects=&template=2-feature.yml&noscript=%5BFeature+Request%5D%3A+)
# Developers: Show your talent!
We’re looking for developers to contribute to this project! If you have skills in application design, function development, or code improvement, we’d love to have your input. This new tool has been completely redesigned, so it’s more than just copy-pasting from the old `armbian-config`.
As a token of our appreciation, contributors of non-trivial code will be entered into a draw to [win a mini PC or a high-end desktop workstation](https://www.armbian.com/newsflash/armbian-khadas-are-rewarding-contributors/). Stick around to help maintain the tool, and we can even discuss monthly compensation.
Head over to GitHub to contribute: [https://github.com/armbian/configng](https://github.com/armbian/configng)
Propose changes by opening a pull request!
Thank you for your support!
https://redd.it/1fftcpo
@r_bash
https://preview.redd.it/lgbrquf1kkod1.png?width=996&format=png&auto=webp&s=1063d8906c4a2753b09e25c44568d386373b226f
We are excited to introduce the next generation of the Armbian Config tool! This redesigned and lightweight tool is central to managing single-board computers, offering a wide range of features for both hardware-specific and general system configuration.
# Key Advantages:
* Extremely lightweight with minimal dependencies
* Redesigned from scratch for better performance and flexibility
* JSON-based menu structure with options for TUI, CLI, or API
# Quick Recap
The `armbian-config` tool has been essential for configuring single-board computers, combining our long-term expertise in Linux and the embedded world. However, the old version had become bulky and difficult to maintain, prompting us to redesign it from the ground up. This new version offers better performance, flexibility, and robustness. We’re calling on the community to help test and complete it before the upcoming release!
You can help by installing the developer version for testing:
echo "deb [signed-by=/usr/share/keyrings/armbian.gpg] stable main" \
| sudo tee /etc/apt/sources.list.d/armbian-development.list > /dev/null
sudo apt update
sudo apt install armbian-configng
https://armbian.github.io/configng
Then, execute:
sudo armbian-configng
Check help with:
sudo bin/armbian-configng --help
*Note: This is a developer version meant for testing purposes only.*
# Users: We Need Your Feedback!
This tool is not yet production-ready, and we expect issues to arise. We encourage you to submit bug reports and feature requests as you encounter them. Our team will address these based on priority and feasibility.
* [**Submit Bug Report**](https://github.com/armbian/configng/issues/new?assignees=&labels=Bug&projects=&template=1-bugreport.yml&noscript=%5BBug%5D%3A+)
* [**Request a Feature**](https://github.com/armbian/configng/issues/new?assignees=&labels=Feature+Request&projects=&template=2-feature.yml&noscript=%5BFeature+Request%5D%3A+)
# Developers: Show your talent!
We’re looking for developers to contribute to this project! If you have skills in application design, function development, or code improvement, we’d love to have your input. This new tool has been completely redesigned, so it’s more than just copy-pasting from the old `armbian-config`.
As a token of our appreciation, contributors of non-trivial code will be entered into a draw to [win a mini PC or a high-end desktop workstation](https://www.armbian.com/newsflash/armbian-khadas-are-rewarding-contributors/). Stick around to help maintain the tool, and we can even discuss monthly compensation.
Head over to GitHub to contribute: [https://github.com/armbian/configng](https://github.com/armbian/configng)
Propose changes by opening a pull request!
Thank you for your support!
https://redd.it/1fftcpo
@r_bash
After "Hello World", I figured "MTU Test" would be a good second noscript
https://github.com/michealespinola/mtutest/blob/main/mtutest.sh
https://redd.it/1fgfood
@r_bash
https://github.com/michealespinola/mtutest/blob/main/mtutest.sh
https://redd.it/1fgfood
@r_bash
GitHub
mtutest/mtutest.sh at main · michealespinola/mtutest
A noscript to automagically determine the ideal Maximum Transmission Unit (MTU) size - michealespinola/mtutest
If you pipe a list of files, what bash command do you pipe it to, for it to move those files to another directory?
E.g. ls | mv ... what?
https://redd.it/1fgtg88
@r_bash
E.g. ls | mv ... what?
https://redd.it/1fgtg88
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Why is the output getting mixed up? I've done tons of troubleshooting but nothing has worked. I followed a noscript from a textbook so I expected it to just function, and not reverse the order of the numbers. I can tell it has to do with the third period but can't tell why or how.
https://redd.it/1fh13d2
@r_bash
https://redd.it/1fh13d2
@r_bash
Reddit
From the bash community on Reddit: Why is the output getting mixed up? I've done tons of troubleshooting but nothing has worked.…
Explore this post and more from the bash community
How to check if background while loop exits early?
I have a bluetooth dmenu noscript that enables the service then prompts me to select devices to connect. I have my devices auto-connect when service is enabled. I want to make it smarter--when a device connects within 3 seconds (they usually auto-connect practically instantly), do not show prompt and quit the noscript early when device connects, else show it and continue on with noscript further prompting the user.
It seems I need a while loop in the background to start counting for the timeout, right? I have something like this:
# ... code to enable bluetooth
# background while loop
declare -i i=0 timeout=3
# quit loop early if there are connected devices
while (( i <= timeout )) || (( ${#devices_connected[@]} )); do
i+=1
sleep 1
done &
pid=$!
# ... code to get `devices_connected`, expected to run as soon as
# background while loop starts so it can start seeing connected devices
if wait "$pid" && (( i < 2)); then
echo "exit now"
exit
else
echo "continue with noscript"
fi
Is this even the right approach? The code doesn't work because `i` is modified within while loop so it value is not kept.
https://redd.it/1fh5r93
@r_bash
I have a bluetooth dmenu noscript that enables the service then prompts me to select devices to connect. I have my devices auto-connect when service is enabled. I want to make it smarter--when a device connects within 3 seconds (they usually auto-connect practically instantly), do not show prompt and quit the noscript early when device connects, else show it and continue on with noscript further prompting the user.
It seems I need a while loop in the background to start counting for the timeout, right? I have something like this:
# ... code to enable bluetooth
# background while loop
declare -i i=0 timeout=3
# quit loop early if there are connected devices
while (( i <= timeout )) || (( ${#devices_connected[@]} )); do
i+=1
sleep 1
done &
pid=$!
# ... code to get `devices_connected`, expected to run as soon as
# background while loop starts so it can start seeing connected devices
if wait "$pid" && (( i < 2)); then
echo "exit now"
exit
else
echo "continue with noscript"
fi
Is this even the right approach? The code doesn't work because `i` is modified within while loop so it value is not kept.
https://redd.it/1fh5r93
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
I need help I don't know why /home/minecraft doesn't include all the files
#!/bin/bash
# Defining variables
PROJECT_ID="alexuni2"
VM_NAME="minecraft-server"
DISK_NAME="minecraft-disk2"
IP_NAME="mc-server-ip"
NETWORK_NAME="minecraft-network"
REGION="us-central1"
ZONE="us-central1-a"
BUCKET_NAME="minecraft-backup"
MINECRAFT_DIRECTORY="/home/minecraft"
SERVER_JAR_URL="https://launcher.mojang.com/v1/objects/d0d0fe2b1dc6ab4c65554cb734270872b72dadd6/server.jar"
# Set the project ID for gcloud commands
gcloud config set project $PROJECT_ID
# Step 1: Create the VPC with automatic subnetting
echo "Creating VPC with automatic subnetting..."
gcloud compute networks create $NETWORK_NAME --subnet-mode=auto --project=$PROJECT_ID
echo "Creating Cloud Storage Bucket..."
gsutil mb -l $REGION -p $PROJECT_ID gs://$BUCKET_NAME/
# Step 2: Create a static external IP address
echo "Creating static external IP..."
gcloud compute addresses create $IP_NAME --region=$REGION --project=$PROJECT_ID
# Step 3: Create the VM Instance with a blank disk and external static IP
echo "Creating VM instance."
gcloud compute instances create $VM_NAME \\
--zone=$ZONE \\
--machine-type=e2-medium \\
--network=$NETWORK_NAME \\
--tags=minecraft-server \\
--boot-disk-size=10GB \\
--boot-disk-type=pd-ssd \\
--boot-disk-device-name=$DISK_NAME \\
--address=$IP_NAME \\
--no-service-account \\
--no-scopes \\
--metadata=startup-noscript-url=https://storage.googleapis.com/cloud-training/archinfra/mcserver/startup.sh,\\
shutdown-noscript-url=https://storage.googleapis.com/cloud-training/archinfra/mcserver/shutdown.sh \\
echo "Attaching additional 50 GB SSD disk..."
gcloud compute instances attach-disk $VM_NAME \\
--disk=$DISK_NAME \\
--zone=$ZONE \\
--project=$PROJECT_ID
# Step 4: Create the Firewall Rules
echo "Creating firewall rules..."
gcloud compute firewall-rules create minecraft-allow-ssh \\
--direction=INGRESS \\
--priority=1000 \\
--network=$NETWORK_NAME \\
--action=ALLOW \\
--rules=tcp:22 \\
--source-ranges=0.0.0.0/0 \\
--project=$PROJECT_ID
gcloud compute firewall-rules create minecraft-allow-internal \\
--direction=INGRESS \\
--priority=1000 \\
--network=$NETWORK_NAME \\
--action=ALLOW \\
--rules=all \\
--source-ranges=10.128.0.0/20 \\
--project=$PROJECT_ID
gcloud compute firewall-rules create minecraft-allow-icmp \\
--direction=INGRESS \\
--priority=1000 \\
--network=$NETWORK_NAME \\
--action=ALLOW \\
--rules=icmp \\
--source-ranges=0.0.0.0/0 \\
--project=$PROJECT_ID
gcloud compute firewall-rules create minecraft-rule \\
--direction=INGRESS \\
--priority=1000 \\
--network=$NETWORK_NAME \\
--action=ALLOW \\
--rules=tcp:25565 \\
--source-ranges=0.0.0.0/0 \\
--target-tags=minecraft-server \\
--project=$PROJECT_ID
# Step 5: SSH into the VM
echo "SSH into VM: gcloud compute ssh $VM_NAME --zone=$ZONE"
# Step 6: Format and Mount the Disk
echo "Mounting and formatting disk..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo mkfs.ext4 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/google-$DISK_NAME"
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo mkdir -p $MINECRAFT_DIRECTORY"
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo mount -o discard,defaults /dev/disk/by-id/google-$DISK_NAME $MINECRAFT_DIRECTORY"
# Verify the disk is mounted
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="df -h"
# Step 7: Install Java, Screen, and Other Packages
echo "Installing Java, screen, and wget..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo apt-get update && sudo apt-get install -y openjdk-11-jre-headless screen wget"
# Step 8: Download Minecraft Server JAR
echo "Downloading Minecraft server JAR..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="cd $MINECRAFT_DIRECTORY && sudo wget $SERVER_JAR_URL"
# Step 9:
#!/bin/bash
# Defining variables
PROJECT_ID="alexuni2"
VM_NAME="minecraft-server"
DISK_NAME="minecraft-disk2"
IP_NAME="mc-server-ip"
NETWORK_NAME="minecraft-network"
REGION="us-central1"
ZONE="us-central1-a"
BUCKET_NAME="minecraft-backup"
MINECRAFT_DIRECTORY="/home/minecraft"
SERVER_JAR_URL="https://launcher.mojang.com/v1/objects/d0d0fe2b1dc6ab4c65554cb734270872b72dadd6/server.jar"
# Set the project ID for gcloud commands
gcloud config set project $PROJECT_ID
# Step 1: Create the VPC with automatic subnetting
echo "Creating VPC with automatic subnetting..."
gcloud compute networks create $NETWORK_NAME --subnet-mode=auto --project=$PROJECT_ID
echo "Creating Cloud Storage Bucket..."
gsutil mb -l $REGION -p $PROJECT_ID gs://$BUCKET_NAME/
# Step 2: Create a static external IP address
echo "Creating static external IP..."
gcloud compute addresses create $IP_NAME --region=$REGION --project=$PROJECT_ID
# Step 3: Create the VM Instance with a blank disk and external static IP
echo "Creating VM instance."
gcloud compute instances create $VM_NAME \\
--zone=$ZONE \\
--machine-type=e2-medium \\
--network=$NETWORK_NAME \\
--tags=minecraft-server \\
--boot-disk-size=10GB \\
--boot-disk-type=pd-ssd \\
--boot-disk-device-name=$DISK_NAME \\
--address=$IP_NAME \\
--no-service-account \\
--no-scopes \\
--metadata=startup-noscript-url=https://storage.googleapis.com/cloud-training/archinfra/mcserver/startup.sh,\\
shutdown-noscript-url=https://storage.googleapis.com/cloud-training/archinfra/mcserver/shutdown.sh \\
echo "Attaching additional 50 GB SSD disk..."
gcloud compute instances attach-disk $VM_NAME \\
--disk=$DISK_NAME \\
--zone=$ZONE \\
--project=$PROJECT_ID
# Step 4: Create the Firewall Rules
echo "Creating firewall rules..."
gcloud compute firewall-rules create minecraft-allow-ssh \\
--direction=INGRESS \\
--priority=1000 \\
--network=$NETWORK_NAME \\
--action=ALLOW \\
--rules=tcp:22 \\
--source-ranges=0.0.0.0/0 \\
--project=$PROJECT_ID
gcloud compute firewall-rules create minecraft-allow-internal \\
--direction=INGRESS \\
--priority=1000 \\
--network=$NETWORK_NAME \\
--action=ALLOW \\
--rules=all \\
--source-ranges=10.128.0.0/20 \\
--project=$PROJECT_ID
gcloud compute firewall-rules create minecraft-allow-icmp \\
--direction=INGRESS \\
--priority=1000 \\
--network=$NETWORK_NAME \\
--action=ALLOW \\
--rules=icmp \\
--source-ranges=0.0.0.0/0 \\
--project=$PROJECT_ID
gcloud compute firewall-rules create minecraft-rule \\
--direction=INGRESS \\
--priority=1000 \\
--network=$NETWORK_NAME \\
--action=ALLOW \\
--rules=tcp:25565 \\
--source-ranges=0.0.0.0/0 \\
--target-tags=minecraft-server \\
--project=$PROJECT_ID
# Step 5: SSH into the VM
echo "SSH into VM: gcloud compute ssh $VM_NAME --zone=$ZONE"
# Step 6: Format and Mount the Disk
echo "Mounting and formatting disk..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo mkfs.ext4 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/google-$DISK_NAME"
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo mkdir -p $MINECRAFT_DIRECTORY"
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo mount -o discard,defaults /dev/disk/by-id/google-$DISK_NAME $MINECRAFT_DIRECTORY"
# Verify the disk is mounted
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="df -h"
# Step 7: Install Java, Screen, and Other Packages
echo "Installing Java, screen, and wget..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo apt-get update && sudo apt-get install -y openjdk-11-jre-headless screen wget"
# Step 8: Download Minecraft Server JAR
echo "Downloading Minecraft server JAR..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="cd $MINECRAFT_DIRECTORY && sudo wget $SERVER_JAR_URL"
# Step 9:
init the server
echo "initialize the server..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="cd $MINECRAFT_DIRECTORY && sudo java -Xmx1024M -Xms1024M -jar server.jar nogui && \\
sudo chmod 777 eula.txt && \\
echo "eula=true" | sudo cat > eula.txt && \\"
# Step 10: Start the Minecraft Server in Screen
echo "Starting Minecraft server in a screen session..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="cd $MINECRAFT_DIRECTORY && sudo screen -dmS mcs java -Xmx1024M -Xms1024M -jar server.jar nogui && \\
sudo screen -d mcs && \\
sudo screen -r mcs"
# Step 11: Create Backup Script
echo "Creating backup noscript..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo tee $MINECRAFT_DIRECTORY/backup.sh > /dev/null <<EOL
#!/bin/bash
screen -r mcs -X stuff '/save-all\\n/save-off\\n'
/usr/bin/gsutil cp -R ${BASH_SOURCE%/*}/world gs://$BUCKET_NAME-minecraft-backup/\\$(date '+%Y%m%d-%H%M%S')-world
screen -r mcs -X stuff '/save-on\\n'
EOL"
# Step 12: Make the Backup Script Executable
echo "Making backup noscript executable..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo chmod +x $MINECRAFT_DIRECTORY/backup.sh"
# Step 13: Schedule Backup to Run Every 8 Hours
echo "Scheduling backups every 8 hours..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="(crontab -l 2>/dev/null; echo '0 */8 * * * $MINECRAFT_DIRECTORY/backup.sh') | crontab -"
echo "Minecraft server setup complete. Network, VM, disk, firewall, and backups are configured."
https://redd.it/1fhvj56
@r_bash
echo "initialize the server..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="cd $MINECRAFT_DIRECTORY && sudo java -Xmx1024M -Xms1024M -jar server.jar nogui && \\
sudo chmod 777 eula.txt && \\
echo "eula=true" | sudo cat > eula.txt && \\"
# Step 10: Start the Minecraft Server in Screen
echo "Starting Minecraft server in a screen session..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="cd $MINECRAFT_DIRECTORY && sudo screen -dmS mcs java -Xmx1024M -Xms1024M -jar server.jar nogui && \\
sudo screen -d mcs && \\
sudo screen -r mcs"
# Step 11: Create Backup Script
echo "Creating backup noscript..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo tee $MINECRAFT_DIRECTORY/backup.sh > /dev/null <<EOL
#!/bin/bash
screen -r mcs -X stuff '/save-all\\n/save-off\\n'
/usr/bin/gsutil cp -R ${BASH_SOURCE%/*}/world gs://$BUCKET_NAME-minecraft-backup/\\$(date '+%Y%m%d-%H%M%S')-world
screen -r mcs -X stuff '/save-on\\n'
EOL"
# Step 12: Make the Backup Script Executable
echo "Making backup noscript executable..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="sudo chmod +x $MINECRAFT_DIRECTORY/backup.sh"
# Step 13: Schedule Backup to Run Every 8 Hours
echo "Scheduling backups every 8 hours..."
gcloud compute ssh $VM_NAME --zone=$ZONE --project=$PROJECT_ID --command="(crontab -l 2>/dev/null; echo '0 */8 * * * $MINECRAFT_DIRECTORY/backup.sh') | crontab -"
echo "Minecraft server setup complete. Network, VM, disk, firewall, and backups are configured."
https://redd.it/1fhvj56
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Condition to remove ANSI characters in case of commands following a "|"
In my noscript I have some options that show colored messages.
If I prefix these with "> text.txt" or ">> text.txt" or a "| less" (by the way "less" is already included in these options), the output will also show the ANSI codes used.
I have already experimented with a filter using "sed", but who will unknowingly use the above symbols and commands, how will they have a "clean" output?
Is there a way to let the noscript know that one of the above characters or commands is in use?
https://redd.it/1fi9knc
@r_bash
In my noscript I have some options that show colored messages.
If I prefix these with "> text.txt" or ">> text.txt" or a "| less" (by the way "less" is already included in these options), the output will also show the ANSI codes used.
I have already experimented with a filter using "sed", but who will unknowingly use the above symbols and commands, how will they have a "clean" output?
Is there a way to let the noscript know that one of the above characters or commands is in use?
https://redd.it/1fi9knc
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Bash noscript cannot run JavaScript file with top level await
I am trying to make a systemd timer that runs a noscript every 5 minutes for notifications to my phone based on an api, and I have successfully checked that the timer and the noscript work separately. For some reason, though, whenever I have the systemd timer point to the noscript.sh and run it, and if I do sudo systemctl status noscript.service, it provides an error: await is a reserved word. I suspect this is because it is a top level await, which for some reason bash can't do? The code it runs in the file is node ./noscript.js, and I have debugged everything I can think of. Even trying to put all of my code in an await function and then doing a then catch on it doesn't work.
Any help would be greatly appreciated, and if this is the wrong subreddit please let me know!
https://redd.it/1fij8mc
@r_bash
I am trying to make a systemd timer that runs a noscript every 5 minutes for notifications to my phone based on an api, and I have successfully checked that the timer and the noscript work separately. For some reason, though, whenever I have the systemd timer point to the noscript.sh and run it, and if I do sudo systemctl status noscript.service, it provides an error: await is a reserved word. I suspect this is because it is a top level await, which for some reason bash can't do? The code it runs in the file is node ./noscript.js, and I have debugged everything I can think of. Even trying to put all of my code in an await function and then doing a then catch on it doesn't work.
Any help would be greatly appreciated, and if this is the wrong subreddit please let me know!
https://redd.it/1fij8mc
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Dot files management and bashrc for different servers
So, I am trying to use gnu stow to install my dotfiles. This seems to work for most of my config, except for the
and some sort of master bashrc with:
is this a good approach? What have you out there tried and got it to work?
https://redd.it/1fio66d
@r_bash
So, I am trying to use gnu stow to install my dotfiles. This seems to work for most of my config, except for the
.bashrc. Here I work with multiple servers and also with my laptop. Thus, I cannot use the same .bashrc for all of them. I am thinking of using multiple files like.bashrc_s1
.bashrc_s2
...
and some sort of master bashrc with:
if [[ "$(hostname)" == "s1" ]];then
source .bashrc_s1
...
fi
is this a good approach? What have you out there tried and got it to work?
https://redd.it/1fio66d
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Cucking bored gibbme some linux command line homework
Like practical skills using bash noscripts. Command line tools like find, awk, sed etc. And how am I supposed to learn about sed and awk? What book is best. I am currently in amazon.in and can't find any books lesser than 100$(equivalent).
https://redd.it/1fion5f
@r_bash
Like practical skills using bash noscripts. Command line tools like find, awk, sed etc. And how am I supposed to learn about sed and awk? What book is best. I am currently in amazon.in and can't find any books lesser than 100$(equivalent).
https://redd.it/1fion5f
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
Adding spaces in the
SOLVED. I just needed to add single quotes to the format. export day="$(date '+%a, %b %d, %Y')" Thank you for the replies.
I'd like to set `day` as a variable with the following format "Tue, Sep 17, 2024".
I found the codes: export day="$(date +%a, %b %d, %Y)", but I don't understand how to add the padding.
The man page mentions padding with underscores and zeros but I'm clearly not doing it correctly. Ex.: `echo $day -> Tue,0Sep017,02024` `echo $day -> Tue,_Sep_17,_2024`
https://redd.it/1firt7w
@r_bash
date command?SOLVED. I just needed to add single quotes to the format. export day="$(date '+%a, %b %d, %Y')" Thank you for the replies.
I'd like to set `day` as a variable with the following format "Tue, Sep 17, 2024".
I found the codes: export day="$(date +%a, %b %d, %Y)", but I don't understand how to add the padding.
The man page mentions padding with underscores and zeros but I'm clearly not doing it correctly. Ex.: `echo $day -> Tue,0Sep017,02024` `echo $day -> Tue,_Sep_17,_2024`
https://redd.it/1firt7w
@r_bash
Reddit
From the bash community on Reddit
Explore this post and more from the bash community
I need your opinions on scron (the code written in it)
https://github.com/omarafal/scron
I'm not exactly sure where to post this, I hope this is the right place as I need any feedback I can get on my bash noscripting code.
So as the noscript suggests, I made a cli tool that basically uses cron for scheduling commands but adds a couple of things; logging for the scheduled commands and simplifies the date/time part of cron making it a bit more human-readable.
It's a mix of bash noscripting and python but mostly bash noscripting.
I want to emphasize that cron is already easy to use, the syntax is far from hard by a mile but some people (including myself) took a biiiit of some time to get the hang of it. So I made this in hopes that it would make scheduling commands a bit more easier and quicker I guess. It in no way replaces cron, if you want to make more complex "timing", use cron, this is called "simple cron" for a reason, to schedule things on the go.
Please do go a tiny bit easy on me lol, this is my first time doing something like this or even posting at all. I'm open to any suggestions, feedback, and comments.
https://redd.it/1fix8vy
@r_bash
https://github.com/omarafal/scron
I'm not exactly sure where to post this, I hope this is the right place as I need any feedback I can get on my bash noscripting code.
So as the noscript suggests, I made a cli tool that basically uses cron for scheduling commands but adds a couple of things; logging for the scheduled commands and simplifies the date/time part of cron making it a bit more human-readable.
It's a mix of bash noscripting and python but mostly bash noscripting.
I want to emphasize that cron is already easy to use, the syntax is far from hard by a mile but some people (including myself) took a biiiit of some time to get the hang of it. So I made this in hopes that it would make scheduling commands a bit more easier and quicker I guess. It in no way replaces cron, if you want to make more complex "timing", use cron, this is called "simple cron" for a reason, to schedule things on the go.
Please do go a tiny bit easy on me lol, this is my first time doing something like this or even posting at all. I'm open to any suggestions, feedback, and comments.
https://redd.it/1fix8vy
@r_bash
GitHub
GitHub - omarafal/scron
Contribute to omarafal/scron development by creating an account on GitHub.