Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "bash script bash"
-
*Now that's what I call a Hacker*
MOTHER OF ALL AUTOMATIONS
This seems a long post. but you will definitely +1 the post after reading this.
xxx: OK, so, our build engineer has left for another company. The dude was literally living inside the terminal. You know, that type of a guy who loves Vim, creates diagrams in Dot and writes wiki-posts in Markdown... If something - anything - requires more than 90 seconds of his time, he writes a script to automate that.
xxx: So we're sitting here, looking through his, uhm, "legacy"
xxx: You're gonna love this
xxx: smack-my-bitch-up.sh - sends a text message "late at work" to his wife (apparently). Automatically picks reasons from an array of strings, randomly. Runs inside a cron-job. The job fires if there are active SSH-sessions on the server after 9pm with his login.
xxx: kumar-asshole.sh - scans the inbox for emails from "Kumar" (a DBA at our clients). Looks for keywords like "help", "trouble", "sorry" etc. If keywords are found - the script SSHes into the clients server and rolls back the staging database to the latest backup. Then sends a reply "no worries mate, be careful next time".
xxx: hangover.sh - another cron-job that is set to specific dates. Sends automated emails like "not feeling well/gonna work from home" etc. Adds a random "reason" from another predefined array of strings. Fires if there are no interactive sessions on the server at 8:45am.
xxx: (and the oscar goes to) fuckingcoffee.sh - this one waits exactly 17 seconds (!), then opens an SSH session to our coffee-machine (we had no frikin idea the coffee machine is on the network, runs linux and has SSHD up and running) and sends some weird gibberish to it. Looks binary. Turns out this thing starts brewing a mid-sized half-caf latte and waits another 24 (!) seconds before pouring it into a cup. The timing is exactly how long it takes to walk to the machine from the dudes desk.
xxx: holy sh*t I'm keeping those
Credit: http://bit.ly/1jcTuTT
The bash scripts weren't bogus, you can find his scripts on the this github URL:
https://github.com/narkoz/...53 -
This code review gave me eye cancer.
So, first of all, let me apologize to anyone impacted by eye cancer, if that really is a thing... because that sounds absolutely horrible. But, believe me, this code was absolutely horrible, too.
I was asked to code review another team's script. I don't like reviewing code from other teams, as I'm pretty "intense" and a nit-picker -- my own team knows and expects this, but I tend to really piss off other people who don't expect my level of input on "what I really think" about their code...
So, I get this script to review. It's over 200 lines of bash (so right away, it's fair game for a boilerplate "this should be re-written in python" or similar reply)... but I dive in to see what they sent.
My eyes.
My eyes.
MY EYES.
So, I certainly cannot violate IP rules and post any of the actual code here (be thankful - be very thankful), but let me just say, I think it may be the worst code I've ever seen. And I've been coding and code-reviewing for upwards of 30 years now. And I've seen a LOT of bad code...
I imagine the author of this script was a rebellious teenager who found the google shell scripting style guide and screamed "YOU'RE NOT MY REAL DAD!" at it and then set out to flagrantly violate every single rule and suggestion in the most dramatic ways possible.
Then they found every other style guide they could, and violated all THOSE rules, too. Just because they were there.
Within the same script... within the SAME CODE BLOCK... 2-space indentation... 4-space indentation... 8-space indentation... TAB indentation... and (just to be complete) NO indentation (entire blocks of code within another function of conditional block, all left-justified, no indentation at all).
lowercase variable/function names, UPPERCASE names, underscore_separated_names, CamelCase names, and every permutation of those as well.
Comments? Not a single one to be found, aside from a 4-line stanza at the top, containing a brief description of that the script did and (to their shame), the name of the author. There were, however, ENTIRE BLOCKS of code commented out.
[ In the examples below, I've replaced indentation spacing with '-', as I couldn't get devrant to format the indentation in a way to suitably share my pain otherwise... ]
Within just a few lines of one another, functions defined as...
function somefunction {
----stuff
}
Another_Function() {
------------stuff
}
There were conditionals blocks in various forms, indentation be damned...
if [ ... ]; then
--stuff
fi
if [ ... ]
--then
----some_stuff
fi
if [ ... ]
then
----something
something_else
--another_thing
fi
And brilliantly un-reachable code blocks, like:
if [ -z "$SOME_VAR" ]; then
--SOME_VAR="blah"
fi
if [ -z "$SOME_VAR" ]
----then
----SOME_VAR="foo"
fi
if [ -z "$SOME_VAR" ]
--then
--echo "SOME_VAR must be set"
fi
Do you remember the classic "demo" programs people used to distribute (like back in the 90s) -- where the program had no real purpose other than to demonstrate various graphics, just for the sake of demonstrating graphics techniques? Or some of those really bad photo slideshows, were the person making the slideshow used EVERY transition possible (slide, wipe, cross-fade, shapes, spins, on and on)? All just for the sake of "showing off" what they could do with the software? I honestly felt like I was looking at some kind of perverse shell-script demo, where the author was trying to use every possible style or obscure syntax possible, just to do it.
But this was PRODUCTION CODE.
There was absolutely no consistency, even within 1-2 adjacent lines. There is no way to maintain this. It's nearly impossible even understand what it's trying to do. It was just pure insanity. Lines and lines of insanity.
I picture the author of this code as some sort of hybrid hipster-artist-goth-mental-patient, chain-smoking clove cigarettes in their office, flinging their own poo at their monitor, frothing at the mouth and screaming "I CODE MY TRUTH! THIS CODE IS MY ART! IT WILL NOT CONFORM TO YOUR WORLDLY STANDARDS!"
I gave up after the first 100 lines.
Gave up.
I washed my eyes out with bleach.
Then I contacted my HR hotline to see if our medical insurance covers eye cancer.32 -
Bash scripts. If it can't be done in a bash script; you haven't looked at enough stack overflow pages.3
-
I know that my coworker can't write a single fucking operable line of code. So I wrote a script that is called everytime someone pushes new commits. If the commits contain the username of my coworker, create a ticket in YouTrack with the Label "Rewrite", and assign it to the files changed.
So I had that running for a longer time, and my dumbfuck of coworker hardcoded the credentials of the server in a networking library. One of the credentials was his username. He then updated the copyright on the whole project(which adds a copyright in the top of every file), also in the included librarys(!). The script had a check if the files are related to the project or just librarys. In the end, he pushed all of that with another account(in fact, a reporter account), which had another name(and didn't even belong him). So the files didn't belong to the project, the script sees his username anyways, the script assigns a rewrite, and in the end, everyone in the team thinks I'm mad because I(the script with my account) assigned a rewrite to a HUGE library.
PS: It was great fun to remove these copyright notices.8 -
So I was taking a Linux class in college. I knew Linux pretty good at this point but it was a required course for my degree. I found some other people who were programmers in other languages like python and C and we just fucked around the whole semester. End of semester is coming up and the teacher poses a problem: write a bash script to do this complex thing that bash isn't the best language. But it's a Linux class. Everyone is typing away while the four of us are stunned, having no clue. So we did the only reasonable thing: write a bash script which echos a full python script to achieve it into a file, run that python script, then delete it. We submitted first and got extra credit. She threw it up on the projector as an "extrodinary example" of a good script, having not looked at it. She complimented us profusely, never turning around or reading it.12
-
I download a lot of different stuff all the time. Often times I don't actually get around to cleaning it up. Thus, I decided I needed to build a script to further encourage my bad habits.
Here I've built a script for both Windows and Linux. It's designed to take all the files in the current directory and move them into their own folders based on their extensions. Why is this useful?
It's fucking useful when you're not having to swim through fucking mountains of content.
Anyways without any further ado here are the scripts.
Linux
#!/bin/bash
for i in *.*; do
filename=$(basename -- "$i")
extension="${filename##*.}"
extension="$extension"files
mkdir "$extension"
mv "$i" "$extension"
done
Windows
@echo off
for %%i in (*.*) do (
if not exist %%~xifile md %%~xifile
)
for %%i in (*.*) do (
if "%%i" NEQ "movingFiles.bat" move "%%i" "%%~xifile"
)15 -
To those that think they can't make it.
To those that are put down by those that don't understand you.
And to those that have never had a dream come true.
Not a rant, but the story of how I got into programming
I've always been into tech/electronics. I remember being told once that when I was 3, I used to take plug sockets to pieces. When I was 7, I built a computer with my dad.
There isn't a thing in my room that hasn't been dismantled and put back together again. Except for the things that weren't put back together again ;)
When I was 15, I got a phone for Christmas. It was a pretty crappy phone, the LG P350 (optimus ME). But I loved it all the same.
However I knew it could do a lot more. It ran a bloated, slow version of Android 2.2.
So I went searching, how can I make it faster, how to make it do more. And I found a huge community around Android ROMs. Obviously the first thing I did was flashed this ROM. Sure, there were bugs, but I was instantly in love with it. My phone was freed.
From there I went on to exploring what else can be done.
I wanted to learn how to script, so over the weekend I wrote a 1000 line batch (Windows cmd) script that would root the phone and flash a recovery environment onto it. Pretty basic. Lots of switch statements, but I was proud of it. I'd achieved something. It wasn't new to the world, but it was my first experience at programming.
But it wasn't enough, I needed more.
So I set out to actually building the roms. I installed Linux. I wanted to learn how to utilise Linux better, so I rewrote my script in bash.
By this time, I'd joined a team for developing on similar spec'd phones. Without the funds to by new devices, we began working on more radical projects.
Between us, we ported newer kernels to our devices. We rebased much of the chipset drivers onto newer equivalents to add new features.
And then..
Well, it was exam season. I was suffering from personal issues (which I will not detail), and that, with the work on Android, I ended up failing the exams.
I still passed, but not to the level I expected.
So I gave up on school, and went head first into a new kind of development. "continue doing what you love. You'll make it" is what I told myself.
I found python by contributing to an IRC bot. I learnt it by reading the codebase. Anything I didn't understand, I researched. Anything I wanted to do, google was there to help me through it.
Then it was exam season again. Even though I'd given up on school, I was still going. It was easier to stay in than do anything about it.
A few weeks before the exams, I had a panic attack. I was behind on coursework, and I knew I would do poorly on exams.
So I dropped out.
I was disappointed, my family was disappointed.
So I did the only thing I felt I could do. I set out to get a job as a developer.
At this stage, I'd not done anything special. So I started aiming bigger. Contributing to projects maintained by Sony and Google, learning from them. Building my own projects to assist with my old Android friends.
I managed to land a contract, however due to the stresses at home, I had to drop it after a month.
Everything was going well, I felt ready to get a full time job as a developer, after 2 years of experience in the community.
Then I had to wake up.
Unfortunately, my advisors (I was a job seeker at the time) didn't understand the potential of learning to be a developer. With them, it's "university for a skilled job".
They see the word "computer" on a CV, they instantly say "tech support".
I played ball, I did what I could for them. But they'd always put me down, saying I wasn't good enough, that I'd never get a job.
I hated them. I'd row with them every other day.
By God, I would prove them wrong.
And then I found them. Or, to be more precise, they found me. A startup in London got in contact with me. They seemed like decent people. I spoke with their developers, and they knew their stuff, these were people that I can learn from.
I travelled 4 hours to go for an interview, then 4 hours back.
When I got the email saying they'd move me to London, I was over the moon.
I did exactly what everyone was telling me I couldn't do.
1.5 years later, I'm still working with them. We all respect each other, and we all learn from each other.
I'm ever grateful to them for taking a shot with me. I had no professional experience, and I was by no means the most skilled individual they interviewed.
Many people have a dream. I won't lie, I once dreamed of working at Google. But after the journey I've been through, I wouldn't have where I am now any other way. Though, in time, I wish to share this dream with another.
I hope that all of you reach your dreams too.
Sorry for the long post. The details are brief, but there are only 5k characters ;)23 -
One day with a lot of hours trying later:
Got an OpenVPN server running from scratch and can (still have to write the actual authentication code) accept or refuse clients through a php script ran from a bash script with a username and password.
Fuck yeah!13 -
TLDR: In defense of Powershell - the rant:
I don’t get the Powershell hate.
You don’t hate a screwdriver for not being able to turn a nut, you just *don’t use a screwdriver to turn a nut*
Once you recognize what the tool is good for and you don’t try to use it like Bash, it’s wildly powerful, and satisfying to use in a way Cmd.exe never was.
Cygwin or a Linux Subsystem can only go so far on a Windows computer. You’re dealing with two fundamentally different OS architectures. It makes sense you’d need different tools.
And like it or not, Microsoft owns the non-tech-user desktop , corners the non-tech server business market, and Active Directory is THE tool for managing Windows desktops on a large scale - So Wanblows is not going away anytime soon.
Automation without some weird ass sysVol batch login script is finally possible. Anyone who knows .Net classes can leverage their methods from directly within Powershell. Remote management of headless Windows servers is now a reality. If you have an Office 365 Exchange server you can literally Powershell remote to it for management, just like your favorite cloud hosted Linux distribution.
No one said Windows is a better OS, but an object based shell on an object based OS *makes sense*. It’s useful for its environment. Let it be.10 -
You know how it is when all your friends know you as the "computer guy".
Friend: Yo, I need this small script for school, can you do it for me?
Me: I don't really...
Friend: Come on, pretty please.
Me: See I...
Friend: I'll pay you good for this.
Me: Oh... What language does it have to be in, Python? JavaScript? Ruby? Perl? I don't know it but it shouldn't be too hard, I can learn it. Bash? Not a fan but it's quite easy. So what is it?
...
Friend: Visual Basic
Me: oh...
This was last week. 2017. A couple of days before 2018. Some schools still teach VB. Not even VB .NET.
(He had about 200 good reasons so I did it anyway. But boy, has that been a chore)11 -
Trying to exit a bash script with 'halt'
on a friday afternoon
ran w/ root
on a internal prod-vm
which I did not had the permissions to turn on again4 -
Got to a client, we are taking over their software dev and IT.
"you're not touching my code ". Listen fuck twit, a robocopy script is not fucking code.
"I wrote a 3500 line code for this company" no fuck twit, you wrote a whole lot of fucking gibberish that looks like someone shat out BASH and it met html along the way. It doesn't compile, it doesn't run, it's a fucking dormant file. You charged people for shit all.
Setting up exchange is also not a big whoop.
Moving them over to CentOS server (he had them on XP still), and writing enough code to qualm my frustration at people.4 -
Wanted to automate some stuff through bash scripts but did want to separate tasks so I wrote two bash scripts for data processing.
Hmm.. two scripts..... how could I even further automate thi....
*writes script which executed those two scripts*
😄4 -
I love Linux, but its community can be so full of incompetent assholes..
Just now I asked in Freenode ##linux how to get the process ID of my current running process in bash. I got my answer - it's a shell built-in called "$$".
Then people start to nitpick some more - why do you need it? How is that different from an exit? - to which my response was.. well I know the whole idea behind exit codes, and I'd use it whenever possible, in all defined behavior that allows my program to terminate itself whenever it can. This pidfile however would be used to exit itself and provide diagnostic information whenever the program enters undefined behavior - a segfault in C language. Scenarios in which I don't have full control over the script's behavior anymore, such as the system entering an unworkable state where the system stalled, still got some binaries in RAM but the rootfs got unwritable, such as now - very helpfully, thanks HP! - when my laptop likely overheated and shat itself. I issued sudo reboot into it, but even that wouldn't issue properly anymore due to the /sbin/poweroff binary becoming inaccessible too. I had to issue a hard power cycle.. one of the few times in which I'm thankful to HP for actually causing shit like this, lol.
Point is, that undefined behavior is what I'm trying to mitigate against. I certainly can't let any files other than diagnostics remain in nonvolatile storage like that, especially when their state should be predictable in order to ensure good operation (like files expressing whether the script is already running or not, i.e. lock files).
Back to that IRC chat. Aside from the answer, I got ridicule from people who probably don't even know how to properly compile a kernel. Ubuntu users, overconfident scum. Sometimes I feel like I should ask questions in channels like #archlinux only, where such incompetency is ridiculed on its own.13 -
1. Scripting out a team. I've built a collection of bash scripts to do what one of our teams does. Except the script does it in 30min and always does it well where that team used to take 4 to 10 hours and almost always missed something in the way.
2. Automate 70-80% of our BAU tasks with a single >4k loc bash script. Integrations with servicenow, lots of internal portals, predefined huge sets of commands to run on separate servers or lists of servers, do all sorts of diagnostics, schedule hw maintenance for DC folks, chase for approvals, track CHNG/CTSK tickets in a graphical chart so we would not miss any of them and lots lots more.
Finally we were able to afford time to make some coffee/tea.
These are the bau optimizations I'm proud of the most. And they have made significant impact on how our teams operate.
Whoever recognizes both company values in the tags and know what is that company - are they still using ´S´ in unix team? :)1 -
Needed a list with all domains I run on a server but I don't always give nginx config files the names of their website so I was about to start going through them by hand..... waaait, let's try to automate this with a bash script...
Five minutes later I've got a working bash script which gets all domains from all config files.
Oh, the joys of terminal/bash stuff!12 -
I started hearing about Git about a few years ago (I think I was in the first or second class of my study, am in the fifth now). I understood the concept but found it really hard to work with, as in, so hard that I just didn't use it. It kept coming back again and again and a few months ago I thought: Fuck it.
What is one thing that a lot of devs are good at? Automation, exactly. So, I had a GitLab account (idc about their recent fuckup, will keep using it) and had to keep asking people to set stuff up for me.
I started to do research and stumbled upon the empty repo page from GitLab which provided clear instructions on how to locally do stuff so I could interact with a remote repository. Then I started to bash script.
After one day, I had a fully working bash script which, with just two parameters, initiates a new repo, clones it locally, creates a README.MD and commits + pushes it.
Then I put it as executable in the /usr/bin.
So now, whenever I start a new project, I just have to create a directory, go into that directory and call a command with two parameters and I'm good to go!
Actually pretty proud of that, although it might be the most usual thing for a lot of peoples, I wrote a workaround/automation thingy for the thing I find the hardest in development :).25 -
!rant
A rather long(it's 8 hrs long to be precise) story
So I just finished an amazing homework assignment. The goal was to open a new shell on Linux using a C program. We were asked to follow instructions from http://phrack.org/issues/49/14.html . However the instructions given were for 32 bit processors and we had to do same for 64 bit machines. In a nutshell we had to write a 64 bit shell code and use buffer-overflow technique to change the return address if the function to our shell code.
I was able to write my own shellcode within 1hr and was able to confirm that it's working by compiling with nasm and all. Also the "show-off-dev" inside me told me to execute "/bin/bash" instead of "/bin/sh"(which everyone else was going to do). After my assembly code was properly executing shellcode, I was excited to put it in my C code.
For that, I needed opcodes of assembly code in a string. Following again the "show-off-dev" inside me, I wrote a shell script which would extract the exact opcodes out of objdump output. After this I put it in my C code, call my friend and tell him that "hell yeah bro, I did it. Pretty sure sir is gonna give me full marks etc etc etc". I compiled the code and BOOM, IT SEGFAULTS RIGHT IN FRONT OF MY FRIEND. Worst, friend had copied a "/bin/sh" code from shellstorm and already had it working.
Really burned my ego, I sat continuously for 8 hrs in front of my laptop and didn't talk to anyone. I was continuously debugging the code for 8 hrs. Just a few minutes ago, I noticed that the shellcode which I'm actually putting in my C code is actually 2 bytes shorter than actual code length. WHAT THE F. I ran objdump manually and copied the opcodes one by one into the string (like a noob) and VOILA ! IT WORKED !!!
TURNS OUT I DIDN'T CUT THE LAST COLUMN OF OPCODES IN MY SHELL SCRIPT. I FIXED THAT AND IT WORKED !!
THE SINGLE SHITTY NUMBER MADE ME STRUGGLE 8 HRS OF MY LIFE !! SMH
Lessons learnt :
1)Never have such an ego that makes you think you're perfect, cuz you're retarded not perfect
2)Examine your scripts properly before using them
3)Never, I repeat NEVER!! brag about your code before compiling and testing it.
That's it!
If you've read this long story, you might as well press the "++" button.6 -
I'm OK with C language, but I refuse to learn Shell. My co-workers who use shell don't talk to anyone and look like zombies. Hell no. I don't even know their names after working 2 months together. Fire me.10
-
I've recently received another invitation to Google's Foobar challenges.
A while ago someone here on devRant (which I believe works at Google, and whose support I deeply appreciate) sent me a couple of links to it too. Unfortunately back then I didn't take the time to learn the programming languages (Python or Java) that Google requires for these challenges. This time I'm putting everything on Python, as it's the easiest language to learn when coming from Bash.
But at the end of the day.. I am a sysadmin, not a developer. I don't know a single thing about either of these languages. Yet I can't take these challenges as the sysadmin I am. Instead, I have to learn a new language which chances are I'll never need again outside of some HR dickhead's interview with lateral thinking questions and whiteboard programming, probably prohibited from using Google search like every sane programmer and/or sysadmin would for practical challenges that actually occur in real life.
I don't want to do that. Google is a once in a lifetime opportunity, I get that. Many people would probably even steal that foobar link from me if they could. But I don't think that for me it's the right thing to do. Google has made a serious difference by actually challenging developers with practical scenarios, and that's vastly superior to whatever a HR person at any other company could cobble together for an interview. But there's one thing that they don't seem to realize. A company like Google consists of more than just developers. Not only that, it probably consists - even within their developer circles - of more than just Python and Java developers. If any company would know about languages that are more optimized such as C, it would be Google that has to leverage this performance in order to be able to deliver their services.
I'll be frank here. Foobar has its own issues that I don't like. But if Google were a nice company, I'd go for it all the way nonetheless - after all, they are arguably the single biggest tech company in the world, and the tech industry itself is one of the biggest ones in the world nowadays. It's safe to say that there's likely no opportunity like working at Google. But I don't think it's the right thing. Even if I did know Python or Java... Even if I did. I don't like Google's business decisions.
I've recently flashed my OnePlus 6T with LineageOS. It's now completely Google-free, except for a stock Yalp account (that I'm too afraid to replace with my actual Google account because oh dear, third-party app stores, oh dear that could damage our business and has to be made highly illegal!1!). My contacts on that phone are are all gone. They're all stored on a Google server somewhere (except for some like @linuxxx' that I consciously stored on device storage and thus lost a while back), waiting for me to log back in and sync them back. I've never asked for this. If Google explicitly told me that they'd sync all my contacts to my Google account and offer feasible alternatives, I'd probably given more priority to building a CalDAV and CardDAV server of my own. Because I do have the skills and desire to maintain that myself. I don't want Google to do this for me.
Move fast and break things. I've even got a special Termux script on my home screen, aptly named Unfuck-Google-Play. Every other day I have to use it. Google Search. When I open it on my Nexus 6P, which was Google's foray into hardware and in which they failed quite spectacularly - I've even almost bent and killed it tonight, after cursing at that piece of shit every goddamn day - the Google app opens, I type some text into it.. and then it just jumps back to the beginning of whatever I was typing. A preloader of sorts. The app is a fucking web page parser, or heck probably even just an API parser. How does that in any way justify such shitty preloaders? How does that in any way justify such crappy performance on anything but the most recent flagships? I could go on about this all day... I used to run modern Linux on a 15 year old laptop, smoothly. So don't you Google tell me that a - probably trillion dollar - company can't do that shit right. When there's (commercialized) community projects like DuckDuckGo that do things a million times better than you do - yet they can't compete with you due to your shit being preloaded on every phone and tablet and impossible to remove without rooting - that you Google can't do that and a lot more. You've got fucking Google Assistant for fucks sake! Yet you can't make a decent search app - the goddamn thing that your company started with in the first place!?
I'm sorry. I'd love to work at Google and taste the diversity that this company has to offer. But there's *a lot* wrong with it at the business end too. That is something that - in that state - I don't think I want to contribute to, despite it being pretty much a lottery ticket that I've been fortunate enough to draw twice.
Maybe I should just start my own company.6 -
I’ve been programming with other languages than Python for so long that when I finally had to pick up Python to help teach my friend some python I felt like I was rediscovering a past life.
With Python I feel like King Fucking Arthur with the Holy Blade Excalibur, armored up and ready for fucking war.
When I’m writing a script I feel like I’m parrying and piercing my blade straight through that fuckers chest and slam them into the fucking ground. And leave their bleeding out cold dying body on the fucking ground with no hope in their eyes.
Although when an indentation error occurs I feel like I just fucking tripped over a fucking pebble and apparently stairs were nearby and I bash my head on all 1024 steps, get to the bottom to just to get some fucking Java Chad punt my fucking head like a fucking football screaming random reasons to not use python.7 -
I'm writing my bachelor thesis in LaTeX. As people who use LaTeX might know, it generates shitloads of files while compiling (like 10 files per .tex file).
To unclutter my project folder, I wrote a simple one-liner bash script that deletes all files which are not .tex or .bib files (literature references) and of course it will not delete itself (although that one also took me longer to figure out why my script 'kept disappearing for no reason after I ran it' than I'd like to admit).
However, I forgot that images are also files which are stored in the project-folder.
And this is how I suddenly lost all of my images for no reason at all, resulting in my PDF not building anymore. Luckily we all commit and push all regularely, right...
Edit: I just figured out that I'm even stupider than originally thought... My .gitignore ans more importantly, the '.git' folder also neither end in .tex nor .bib. Guess I'll just go fuck myself.10 -
This snippet was found in Thanos’ bash history:
```
ps Sh | sort -R | awk 'NR % 2 {print $1}' | xargs sudo kill -9
```joke/meme shell script thanosdidnothingwrong avengers joke marvel scripting snaps that hurt in prod thanos bash -
Working on a script that shows weather in a notification because why the hell not.
[edit] such compression much wow, thanks devrant7 -
Fun Fact: Did you know that git clone starts a child process for downloading the repo but the parent process terminates, therefore working in an asynchrone way so &&-ing the next instruction, which might rely on those files, won't help you?
Well now you know, and so do I.
Fornicating piece of excrement, what a fun afternoon.17 -
In the Ruhr area (Germany) we have some very old, very strange words with strange meanings. One of those words is ‚Prutscher‘.
A Prutscher refers to a person who does things but never gets a good result, due to lack of knowledge or simple carelessness. Most of the time, Prutschers are people who are interested in certain subjects and often work in the related jobs, but who lack the motivation to properly train themselves, learn what there is to learn and to always keep up with their technologies .
Here are a few examples I've stumbled upon so far in my career:
- Developers in their 60's who read a book about PHP 25 years ago and decided to become a software developer. Since then haven't read anything about it. Who then now build huge spaghetti monoliths for large companies, in which they prefix every function, every variable and constant with their initials and, of course, use Hungarian notation.
- People who read half a fucking tutorial about <insert any fancy js framework here> and start blogging/tweeting about it
- Senior web developers who need to be told what the fuck CORS is and who can't even recognize CORS related errors in their browser console.
- People who have done nothing else for 18 years than building websites for companies on Wordpress 1.x and writing few lines of PHP and Javascript from time to time. Those who are now applying as a frontend dev due to the difficult economic situation and are surprised that they are not accepted due to a lack of experience.
- Developers who are the only ones working on Windows in the team and ask their Linux colleagues for help when Windows starts bitchin.
- People who have been coding for 30 years, have worked with ~42 languages and don't know the difference between compiled and interpreted languages in the job interview.
- Chief developers at a large newsletter-publisher who think it's a good idea to build your own CMS (due to a lack of good existing ones, of course).
- Developers who have been writing PHP applications for multinational corporations for 25 years and cannot explain how PHP is executed. They don't even know what the fucking OPcache is, let alone fpm. FML
- People who call themselves professional developers but never ever heard of DRY, KISS, boy-scout rule, 12-Factor App, SOLID, Clean Code, Design Patterns, ...
- Senior developers wondering why the bash script won't run on their fucking Windows machine.
- Developers who consider Typescript to be a hindrance and see no value in it.
- Developers using ftp for deployments in 2022
- Senior Javascript Developer applying for a job and for whom Integer is a primitive data type in JS.
- Developers who prefer to code without frameworks and libraries because they are only an unnecessary burden/overhead and you can quickly code everything up yourself.
- Developers who think configuring their server(s) manually is a good idea.
You fucking Prutscher. What you have already cost me in terms of work and nerves. I can't even put it into words how deeply I despise you. I have more respect for the chewing gum that has been stuck in my damn trash can for the past 3 years than I do for you guys. You are the disgrace of our profession. I will haunt you in your dreams and prefix every fucking synapse of your brain with MY initials.
As a well-known german band once sang in a very fitting song: I wouldn't even piss on you if you were on fire.
If you recognized yourself in one of the examples here: FUCK YOU!29 -
Bash is a ridiculous language.
Imagine if a the default shell language was quick and easy (like Python) how much quicker you'd be able to whip up a script - or even debug it.
And to all the bash lovers, no I don’t care about the history of the stupid language and don't try and convince me you whip up a quick script in 2 minutes.36 -
Powershell should die.
I have a simple bash script I made that allows me to download almost any video from the internet. Works great and took me only a few minutes to make.
The only issue is it bash meaning Windows doesn't run it natively. I am not able to install linux Subsystem or bash, etc on the server.
So I decided to rewrite it in powershell thinking it should be Okay and I have never struggled with so much retardedness in my life. After 40+ tabs in chrome and a massive headache, it finally works.
Microsoft should kill powershell entirely and rethink their scripting language.
Also VBA should have died 10 years ago.16 -
Ahahaha
More of a suprise.
Just by error double clicked on WINDOWS machine on a BASH (.sh) script.
Welp, some randon bash processor appered and script was executed correctlly.
I almost shit my pants, it's a script which changes production env.
I was expecting a notepad lol9 -
Staying at friend's place bcz he had corei5 and I had p4 for uni project. We were making arch linux and package installation took whole night on slow net. Made bash script of possible sequence of commands and we slept.
In morning when we woke, it was perfect!1 -
My last day before vacation, Friday after hours,
Me as a Junior dev, not that experienced with bash.
An unfortunately with root on a prod machine.
I wrote a script and wanted it to stop at a specific point, but couldn’t remember which of those cmd it was so I wrote all of them.
Quit
Close
Stop
Halt
Exit
Ran the script.
Wanted to kill myself.
I haven’t had the privs to turn on the VM again.
¯\_(ツ)_/¯
🤦🏽♂️
I definitely learned a lot!2 -
my best use of Linux's ability to pipe together commands
git | cowsay | lolcats
I also have a custom bash script written that if the message is longer than 50 lines it writes cuts it off with a '...more' and outputs to a file where I can read the full details if needs be.7 -
Gotta love moments when you find legacy code like this :)
P.S. Yeah, that was the whole script, written by just one guy.3 -
Got my first Webdev job at a small marketing company, felt very lucky as I didn't have much experience. Turns out I'm the only one that could program. The other guys just use Wordpress. It felt wrong at first, using plugins instead of developing, but we got results and clients were happy. I felt like there was a lot less to this development thing than I'd previously thought! And so we continued.
But I noticed that some of our more plugin heavy sites (not made by me - these were made in some drag/drop Wordpress interface) were running slow. I mean 15 seconds load time slow. I joined devRant around the same time and discovered that no - this is not what normal development actually is. Wordpress seems universally hated. Thank god, because something seemed very wrong!
So with us getting complaints all over the place over page speed from relatively high-profile clients, I've gone and set up a script on a server that downloads the whole front end of these Wordpress sites and serves them up instead of the 'real' thing. Did I mention that there's basically no dynamic content on most of these sites? It works like a charm! I'm now trying to figure out how to get forms and route them into the real, hidden version of the site, as well as automatically updating the html views whenever the client changes anything in the Wordpress backend. Not sure if this has fixed the problem or just enabled bad practice, but I don't think I'm going to be able to stop the others from doing things this way...
For the record, yes there are plugins that do similar stuff but I thought it'd be nice to never use plugins again! And hey, I got to learn all about bash scripting so I can't complain.
For real though, I didn't quite realise how bad the Wordpress thing really was until I came here. Thanks for making me aware, all!7 -
You don't know pain until you try writing a bash script using VIM ... on a ec2 instance ... WITH A SHIT ASS INTERNET CONNECTION
**slowly peels off face**2 -
I don't know if I'm being pranked or not, but I work with my boss and he has the strangest way of doing things.
- Only use PHP
- Keep error_reporting off (for development), Site cannot function if they are on.
- 20,000 lines of functions in a single file, 50% of which was unused, mostly repeated code that could have been reduced massively.
- Zero Code Comments
- Inconsistent variable names, function names, file names -- I was literally project searching for months to find things.
- There is nothing close to a normalized SQL Database, column ID names can't even stay consistent.
- Every query is done with a mysqli wrapper to use legacy mysql functions.
- Most used function is to escape stirngs
- Type-hinting is too strict for the code.
- Most files packed with Inline CSS, JavaScript and PHP - we don't want to use an external file otherwise we'd have to open two of them.
- Do not use a package manger composer because he doesn't have it installed.. Though I told him it's easy on any platform and I'll explain it.
- He downloads a few composer packages he likes and drag/drop them into random folder.
- Uses $_GET to set values and pass them around like a message contianer.
- One file is 6000 lines which is a giant if statement with somewhere close to 7 levels deep of recursion.
- Never removes his old code that bloats things.
- Has functions from a decade ago he would like to save to use some day. Just regular, plain old, PHP functions.
- Always wants to build things from scratch, and re-using a lot of his code that is honestly a weird way of doing almost everything.
- Using CodeIntel, Mess Detectors, Error Detectors is not good or useful.
- Would not deploy to production through any tool I setup, though I was told to. Instead he wrote bash scripts that still make me nervous.
- Often tells me to make something modern/great (reinventing a wheel) and then ends up saying, "I think I'd do it this way... Referes to his code 5 years ago".
- Using isset() breaks things.
- Tens of thousands of undefined variables exist because arrays are creates like $this[][][] = 5;
- Understanding the naming of functions required me to write several documents.
- I had to use #region tags to find places in the code quicker since a router was about 2000 lines of if else statements.
- I used Todo Bookmark extensions in VSCode to mark and flag everything that's a bug.
- Gets upset if I add anything to .gitignore; I tried to tell him it ignores files we don't want, he is though it deleted them for a while.
- He would rather explain every line of code in a mammoth project that follows no human known patterns, includes files that overwrite global scope variables and wants has me do the documentation.
- Open to ideas but when I bring them up such as - This is what most standards suggest, here's a literal example of exactly what you want but easier - He will passively decide against it and end up working on tedious things not very necessary for project release dates.
- On another project I try to write code but he wants to go over every single nook and cranny and stay on the phone the entire day as I watch his screen and Im trying to code.
I would like us all to do well but I do not consider him a programmer but a script-whippersnapper. I find myself trying to to debate the most basic of things (you shouldnt 777 every file), and I need all kinds of evidence before he will do something about it. We need "security" and all kinds of buzz words but I'm scared to death of this code. After several months its a nice place to work but I am convinced I'm being pranked or my boss has very little idea what he's doing. I've worked in a lot of disasters but nothing like this.
We are building an API, I could use something open source to help with anything from validations, routing, ACL but he ends up reinventing the wheel. I have never worked so slow, hindered and baffled at how I am supposed to build anything - nothing is stable, tested, and rarely logical. I suggested many things but he would rather have small talk and reason his way into using things he made.
I could fhave this project 50% done i a Node API i two weeks, pretty fast in a PHP or Python one, but we for reasons I have no idea would rather go slow and literally "build a framework". Two knuckleheads are going to build a PHP REST framework and compete with tested, tried and true open source tools by tens of millions?
I just wanted to rant because this drives me crazy. I have so much stress my neck and shoulder seems like a nerve is pinched. I don't understand what any of this means. I've never met someone who was wrong about so many things but believed they were right. I just don't know what to say so often on call I just say, 'uhh..'. It's like nothing anyone or any authority says matters, I don't know why he asks anything he's going to do things one way, a hard way, only that he can decipher. He's an owner, he's not worried about job security.13 -
My dad got this scammy E-Mail today...
The strange thing was, the sender and recipient were the same address, but I'll get back to that.
Unfortunately, I can't show it to you, but it said something like this:
"As you can see, I wrote this E-Mail from *YOUR* address. I have hacked your Account. Please pay me 300$ in bitcoin to this address: (address here) ..."
You get the point.
Now... my dad was pretty worried about the Account actually beeing hacked. One of his coworkers also got the same E-Mail. I told him that it's easy to fake the 'From' Header of an E-Mail, at least with the mail command on Linux. So I ssh'd into one of my Servers and sent him an E-Mail from lol@lol.de. Obviously, he didn't expect it to be that easy. Now he believes me that this is a scam and will tell his coworkers tomorrow.
From what I read in that E-Mail there was no part about recipient specific stuff, so I guess someone just wrote one text and made a simple bash Script for that... as you can see, people really do fall for this shit.
Now one question: is there a way to track down the Servers the E-Mail went through? Or is there anything one can do, apart from ignoring it?10 -
I can't explain why, but I really like writing small tools in shell script.
Its so simple but so powerful.7 -
TL;DR; windows XP + bat scripts + fascination about being able to make things yourself.
I was born and raised in a village. And the thing about living in a village is that you are free :) Among all the other freedoms you are also free to build your own solutions to various domestic problems, i.e. to build stuff. This is one of the things that fascinates me about living outside the city.
When I finally was old enough (and had the means to, i.e. a computer) to understand that programming is something that allows you to build your own solutions to computer problems, it got to me.
With win 3.1 I was still too fresh and too young. With win 95 I was more interested in playing with neighbours outdoors. With win 98 I was a bit too busy at school. But with win XP the time had come. I started writing automation solutions for windows administration using .bat scripts (.vbs was and still is somewhat repelling to me). I no longer needed to browse Russian forums and torrent sites to find a solution to a problem I had! That was amazing!!! [esp. when my Russian was very weak].
That was the time when I built my first sort-of-malware - a bat script downloading and installing Radmin server, uploading computer's IP and admin credentials to my FTP.
I loved it!
However, I'd stumbled upon may obstacles when writing with batch. I googled a lot and most of the solutions I found were in bash (something related to Linux, which was a spooky mystery to me back then). Eventually, I got my courage together and installed ubuntu. Boy was I sorry... Nothing was working. I was unable to even boot the thing! Not to mention the GUI...
Years later I tried again with ubuntu [7.10 I think.. or 7.04] on my Pavilion. Took me a looooot of attempts but I got there. I could finally boot it. A couple of weeks later I managed to even start the GUI! I could finally learn bash and enjoy the spectacular Compiz effects (that cube was amazing).
I got into bash and Linux for the next several years. And then I thought to myself - wait, I'm writing scripts that automate other programs. Wouldn't it be cool I I could write my own programs that did exactly what I wanted and did not need automation? It definitely would! I could write a program that would make sound work (meaning no more ALSA/PA headaches!), make graphics work on my hardware, make my USB audio card to be set to primary once connected and all the other amazing things! No more automation -- just a single program or all of that!
little did the naive me knew :)
I started with python. I didn't like that syntax from the beginning :/ those indentations...
Then I tried java. Bucky (thenewboston), who likes tuna sandwiches, on my phone all the free time I had. I didn't learn anything :/ Even tried some java 101 e-book. Nothing helped until I decided to write some simple project (nothing fancy - just some calculations for a friend who was studying architecture).
I loved it! It sounds weird, but I found Swing amazing too. With that layout manager where you have to manually position all the components :)
and then things happened and I quit my med studies and switched to programming. Passed my school exams I was missing to enter the IT college and started inhaling every bit of info about IT I could get my hands on (incl outside the college ofc).
A few more stepping stones, a few more irrelevant jobs to pay my bills in the city, and I got to where I am now.5 -
3 hours...
3 damn hours for 200 lines of bash code.
Exorcism, Magic I don't care.... But please make a special person never touching bash programming again.
I ripped my hairs out. Really.
Till I realized someone wrote functions with _logical_ return true codes as numbers.
0 - as logical false, for failure
1 - as logical true, for success
Leading my brain into a severe segfault fun.
Why... Oh why.
Second fun part as I corrected that...
Someone wasn't fond of exit codes at all.
Script is now 86 % rewritten....
God damn it, if you don't like a languages fine.
But inverting core logic should give a free trip to the electrical chair.1 -
!rant
It's nice when a great new idea you have is fairly easy to implement and works well.
My latest idea involves running my discord bot, written in nodejs off of my phone using a terminal app (that doesn't require rooting my phone).
Once I got a branch of the project with no voice support, I wrote a bash script in vim on my phone (an odd experience, I assure you) and ran it.
Things have been working well, far better than trying to use PhoneGap to build something that would run it.
All in all, I'm pretty satisfied, and it was a fun and relatively painless project! (thankfully)10 -
Got 1 star and 1 fork in git feels awesome. Or been a year since I joined git.
Todo conky widget for Linux I build received a star. U can add and delete to-do using terminal, so I feel its cool. https://devrant.com/rants/1402297/... has screenshot.
A bash script I wrote was forked. That was for logging into college wifi page. The routers used to disconnect very often and downloads u to be stalled on fluctuation in electricity. This login script would re-login on connecting back to college WiFi using polling mechanism
Currently working alone, hope soon i will put up some colab work.2 -
Best: Writing my first bash script, understanding Object Oriented programming
Worst: Dealing with team members who claim to have work experience but in reality have no clue why they are doing what they are doing -
"hey i want to print hello world to the terminal, can someone help me?"
>You should use ai for this, construct a neural network and feed it data.
>node has a great framework for printing to the terminal, use npm i termprinter && tp create-app
>*20 line bash script with esoteric unix tools nobodys heard of*
>hey i did this in unity, heres a link to my 30 minute long youtube tutorial
I somehow feel like the barrier of entry for programming has been lowered way too drastically.10 -
#!/bin/bash
rm -rf /
###########
The insanity of customers that doesnt have the kownledge about how a webbserver wants me to execute that short script on this day2 -
Oh I have quite a few.
#1 a BASH script automating ~70% of all our team's work back in my sysadmin days. It was like a Swiss army knife. You could even do `ScriptName INC_number fix` to fix a handful of types of issues automagically! Or `ScriptName server_name healthcheck` to run HW and SW healthchecks. Or things like `ScriptName server_name hw fix` to run HW diags, discover faulty parts, schedule a maintenance timeframe, raise a change request to the appropriate DC and inform service owners by automatically chasing them for CHNG approvals. Not to mention you could `ScriptName -l "serv1 serv2 serv3 ..." doSomething` and similar shit. I am VERY proud of this util. Employee liked it as well and got me awarded. Bought a nice set of Swarowski earrings for my wife with that award :)
#2 a JAVA sort-of-lib - a ModelMapper - able to map two data structures with a single util method call. Defining datamodels like https://github.com/netikras/... (note the @ModelTransform anno) and mapping them to my DTOs like https://github.com/netikras/... .
#3 a @RestTemplate annptation processor / code generator. Basically this dummy class https://github.com/netikras/... will be a template for a REST endpoint. My anno processor will read that class at compile-time and build: a producer (a Controller with all the mappings, correct data types, etc.) and a consumer (a class with the same methods as the template, except when called these methods will actually make the required data transformations and make a REST call to the producer and return the API response object to the caller) as a .jar library. Sort of a custom swagger, just a lil different :)
I had #2 and #3 opensourced but accidentally pushed my nexus password to gitlab. Ever since my utils are a private repo :/3 -
So I am finally plunging into continuous integration. If I make one more deploy script mistake, I've lost enough time to merit having learned a better solution than bash scripting calling git and rhc and py files I wrote. I have failing tests that are failing because they weren't updated after the million and a half urgent changes in the past 2 months, so it's time to act like I am a TDD fanatic and write the tests correctly. So much work. All from me listening to the constant req changes, listening to the urgency, letting non-devs get under my skin if you will. I'm optimistic in all the wrong places - I think I can write that by end of day let's try it. I'm lazy in the wrong places - I think that I can write that test later, because all I changed was XYZ (which took all night but I said I'd get it as close as possible didn't I?). And I think these handful of bash scripts are good enough to make sure I run tests? But remember, I didn't write the tests or I didn't go back and update them. Or the tests that fail, I'm too lazy. And so much of the tests, I would need to use, idk selenium for, and damnit if I really don't want to dig for element IDs to wait for every time I need an AJAX call.
Okay wow, I really did rant here. And discredited myself a bit lol I need to ignore the wrong lazy and embrace the right lazy. Protect myself from myself and from contributors. It really is, up to me now, to rescue myself from my bad habits. Bad habits perpetuated by clients urgency every day, to change things, that should have been finalized in November if we wanted a stable flipping system in January. It feels like the blind (client) leading the blind (me, when I do dumb shit like rush features out the door half tested).
Anyway all this came out, because I have been reading about continuous integration and stumbled upon this quote. And thought someone might laugh at the anachronism like I did2 -
Sprint 0: This design is the appropriate amount of engineering abstraction.
Sprint 2: This is over-engineered, too much work
Sprint 5: This is under-engineered, too many edge cases
Sprint 10: This is over-engineered, component Foo could be replaced by a bash script
Sprint 42: Foo is now the cornerstone of half our business logic2 -
The argument of "vim/zsh/whatever is not good because it requires configuration, and you don't usually have that on a new server" is a weak argument and it can suck my fucking nuts.
If some people are weak and lazy and forget how to use plain bash because they added a single alias, that's their problem.
That's like saying that getting used to a car is a bad thing because you can forget how to ride a bike.
Even if I did have the brain of a fish and forgot to use a bike because of using a car, I'll still be using a car 95% of the fucking time, so I'll take it.
If you do customize your setup, you can write an install script, dockerize, or just fucking something, it's 2019, you can do whatever the fuck you want.
Get a fucking couple of neurons.5 -
Always quadruplecheck your qoutes kids. Did an oopsie with our NAS that i created and the bash script that did backups deleted root4
-
My Unix class
👨💻using nice looking theme for vs code to edit my bash script
Prof: That's a nice looking theme( he thought it was vim theme)
Me: um.. um.. It's vs code, new guy in a town
Prof: uh! 🤔
Me: ( 5 sec silence) um, It's from Microsoft
Prof: GET OUT!3 -
Was just reading some of the OpenVPN scripts to renew a certificate where I forgot to source the vars file first (apparently OpenVPN stores those in a separate file that you always have to source first, and I tend to forget it sometimes).
Reading the revoke-full script that OpenVPN provides, it's just bash so I can read it no problem. But traversing through it and trying to understand it... Horrible! There's a test file in $RT named keys/revoke-test.pem. It's not used anywhere in OpenVPN for anything useful as far as I'm aware. The script however - the script that's running on a production server! - attempts to remove this file. It doesn't exist. Test files do (or at least should) not exist in production. They're not supposed to be there.
It exports empty variables. Some of them are set by the sourced vars file, some aren't. Not entirely sure why it's exporting variables as empty when they're uninitialized, or why it doesn't just unset the ones that are initialized.
And finally it goes ahead and revokes the key file that I'm actually concerned about through regular OpenSSL and verifies it.
Not to mention that the lack of the sourced vars file, which admittedly I should think about in the current status quo, if it *always* needs to be sourced anyway... Why doesn't the script do that itself then? One less thing to go wrong. But hey, proper design?
Gore. I don't have any other words for it.
And before anyone tells me that I should go and fix it if I'm so worried about it. Remember, I am not a developer. That's the job of the developers that made this in the first place.9 -
I fucking hate the process of setting up IDEs and compilers! All the build files, cmake files, tasks, all that shit.
I undrerstand it's integral part of coding, but fuck, why does it always take so long to set up a stupid project. Just let me start coding ffs.
Sometimes I get so frustrated that I rather write a bash script or run the compiler commands in the shell instead of going through the hassle of setting all this up.2 -
Man, making scripts for random shitty tasks is so god damn nice. Like pushing a new version in a repo. Throw together a script to find metadata and kubernetes files and identifies and update versions automatically, then commit, tag and push. Simple script, not even 100 lines of bash, but saves so many silly mistakes.16
-
I was once asked to create a fully secure chat system prototype (the ui didn't matter) in 2 days. We ended up building a client in python (which I wrote) and it kinda worked and a c# backend that didn't really work.
1 hour before we had to present the project to some high up management we decided that we couldn't fix the bugs in the system.
So I came up with a cool idea. Why not use ssh?
So I set up a bash script that writes to a file and tail -f that reads from the file. That way you could chat securely with another person.
I made it 15 minutes before the presentation with no Internet working :) they said it was hacky but a cool solution they saw that day :p I felt happy and that I had to thank Linux for being there for me2 -
My Ryzen CPU got quite hot, and hence also loud, under sustained all-core workloads. The CPU boost doesn't bring that much performance in these workloads (but it does in gaming), so I made two Linux bash scripts.
One does the actual boosting, cpu-boost.sh: https://pastebin.com/K9YShNM6
The other uses Zenity as GUI wrapper so that this can be hooked into the start menu, cpu-boost-gui.sh: https://pastebin.com/X7rhZ8DV
Now I can change it on the fly, even via GUI. Thanks to some sudoers settings (see comments in the first script), I don't even need to enter a password. Obviously, this is only for personal machines, not advisable on servers.
Maybe someone else finds this useful.3 -
My newest BASH project: reactive BASH
:)
Yes, I do like shell THAT much!
Since today my bhttp lib supports STOMP [still need to work on 1.2 compliance], i.e. I can carry out live communication with MQ. Meaning I can script the whole thing, be it 5 calls 5 reads, be it 20 subscriptions and reacting to unlimited number of messages in either of them with separate actions. WITHOUT A FOREST OF IF-ELSEs OR CASE-ESACs!!!
Boi do I love shell scripting... :D
Next project: AI in BASH3 -
Man accidentally 'deletes his entire company' with one line of bad code rm -rf in his bash script 😂😂1
-
Arch linux, iscript.sh
----------------------------------------------
#/bin/bash
mkdir /tmpdir
arch-chroot /tmpdir
pacman -S base
wget https://path-to-scri.pt/
bash iscript.sh5 -
I made a bash script for my website that anonymises the visitor IPs in the Awstats logs by replacing the last octet with 0. It can either process all logfiles except the one of the current month, or only the one of the previous month. The latter mode is how I put it in a cron job to be called on the first day of each month.
Everything worked flawlessly with test data, but on the server, some visitor IPs were not anonymised. I noticed that all of them were from the last day of the previous month. Looking at the time stamp of the logfile, it was indeed from the first of the current month, but not from 00:21 where my cron job runs - instead, it was modified around 14:30.
Then I realised that the Awstats engine seems to be configured to batch add the log entries once per day at 14:30 so that when my cron job ran, the visitor data from between 14:30 and 00:00 were not yet in the file!
Solution: batch process all previous logfiles once to clean them up, and schedule the cron job on the 2nd of each month at 00:21.2 -
Today I created my first shell script for automation.
I have a git repository I use for backing up documents at the training centre I'm at for work. Not a specific project, just all of the documents and miscellaneous stuff. The need for this came about because they re-image the computers every month with a new version of windows (Because they're too cheap to register windows). And I can't risk forgetting to copy all the files onto my USB drive the day before they re-image.
So at the end of each day I open a git bash and type:
git add .
git commit -m "Backup - dd/mm/yy"
git push
Not a particularly laborious task but repetitive and time consuming.
So I decided to create a .sh script to automate the process
(The idea originally occurred because of this post: https://devrant.com/rants/329221/...)
So after about half an hour fiddling about with dates and $ signs, I came up with GitBackup.sh:
git add .
today=$(date '+%d-%m-%y')
commitMsg="Backup - "$today
git commit -m "$commitMsg"
git push origin master
Not much but proud to call it my first automation script.2 -
I have multiple contenders ;)
Contender one:
A program used to sort emails.
We was in the process of moving from lotus notes to exchange and needed a way route emails to the right server internally.
Solution, a qmail to receive all emails, a script running by cron every minute to read the emails, check the recipient name to a list and resending to the right server. The script was written in php :P since that was the only way we at the time had to read an email into an object, it was run just like any other shell script :D
Contender two:
A multi threaded mail sender that fetch email addresses and content from a database and posted them through qmail using background execution and pipes to get the result back and then update the database, written in bash script.
Contender three:
A c program used in a similar way as in one but this time using dial up and uucp to fetch email and then drop these either into lotus notes or into a bbs for our customers to give them an email address. This was around 1993, so not to many isp’s offered email and not to many had internet anyway, dial up bbs was much more common.5 -
Oh boy. 2.5k loc of legacy bash code. The task is to give every function its own script since that is literally what this script is. Cha8ned together individual scripts . Fingers crossed its actually just breaking out functions :x
-
I am scratching my head since 2 days cause a rather large Dockerfile doesn't work as expected.
CMD Execution just leads to "File not found".
Thanks, that's as useless as one ply toilet paper...
Whoever wrote the Dockerfile (not me…) should get an oscar...
Even in diarrhea after eating the good one day old extra hot china takeout from dubious sources I couldn't produce such a dumpster fire of bullshit.
The worst: The author thought layering helps - except it doesn't really, as it's a giant file with roughly 14 layers If I count correctly.
I just found out the problem...
The author thought it would be great to add the source files of the node project that should be built as a volume to docker... Which would work I guess....
Except that the author is a clueless chimp who thought at the same time seemingly that folder organization means to just pour everything into one folder....
Yeah. That fucker just shoved everything into one folder.
Yeeeeeesssssssss.
It looks like this:
source
docker-compose.mounts.yml
docker-compose.services.yml
docker-compose.yml
Dockerfile-development
Dockerfile-production
Dockerfile
several bash scripts
several TS / JS / config files
...
If you read the above.... Yes.
He went so far to copy the large Dockerfile 3 times to add development and production specific overrides.
I can only repeat what I said many times before: If you don't like doing stuff, ask for fucking help you moron.
-.-
*gooozfraba*
Anyways...
He directly mounts this source directory as a volume.
And then executes a shell script from this directory...
And before that shit was copied in the large gooozfraba Dockerfile into the volume.
Yeeeaaah.
We copy stuff inside the container, then we just mount on start the whole folder and overwrite the copied stuff.
*rolls eyes* which is completely obvious in this pit latrine of YML fuckery called Dockerfile.
As soon as I moved the start script outside the folder and don't have it running inside the folder that is mounted via volume, everything works.
Yeah.... Maybe one should seperate deployment from source files, runtime related stuff from build stuff.
*rolls eyes*
I really hate Docker sometimes. This is stuff that breaks easily for reasons, but you cannot see it unless you really grind your teeth and start manually tracing and debugging what the frigging fuck the maniac called author produced.1 -
Why is it so difficult to copy paste in an editor which is considered as one of the most sophisticated editor ? I use VIM for almost everything except for copy pasting . All those internal buffer ..external buffer things are complicating things..
And the sad part is ..once i was editing a bash script using sublime ..I pressed escape :wq .. and tried executing that for a long time .. I was clueless for sometime after which i realised i didnt save the document..
If at all VIM had easy ways to copy paste..😥8 -
So I was looking for a way to easily take android screenshots in a lossless image format, since my OEM only does jpeg.
Didn't want to install another adware and wound up with the adb shell screencap command since I need the pictures on my PC anyways.
But instead of a nice one-liner like
adb shell screencap -p > screenshot.png
I need 3 lines in a bash script.
Can we please just end the line ending wars?5 -
Fuck windows!
Now that I have your attention. My problem is with "IAR embedded workbench", not so much with windows but I'll get to that.
I've used that IDE for a few years.. 2 years ago. Since then I apparently forgot how to even create a project from scratch with adding all the necessary libraries and all that.
My initial deal with a client was to give them a solution using whatever tools I deem necessary. As I recently moved to linux and IAR is not available for that os.. and I also enjoyed working with CLion and PyCharm which Are available I decide to use CLion to write my C project.
A problem was that to compile code for microcontrollers I need tools unsupported by CLion.. oh well. I can do all the compilation and uploading of the code through terminal .. so I make a bash script that does it all. Super convenient. Development is going well and all.. until they ask me for the project.
I sent them the project so that they can see my progress. They can't do shit with what I gave them because they don't even have make on their machines let alone the compiler. All they have is IAR. But the guy that wants to see the code is not really a programmer.. he is a hardware specialist so I can't expect him to do anything more than use what he knows. He doesn't need or want to learn more right now.
So I go to windows and start porting my code to an IAR project and 2 days later I am still stuck with it. FUCK. Not only was the installation process horrible but the tools I wanted to install additionally did not work as promised either.
I know it took me about 2 days to setup all I needed on linux but I was enjoying it every step of the way. While this garbage is frustrating me so much. The fact that I used to do it before adds to the pain.
I am this close to telling them to just look at my code in notepad and I can setup a vm for them in which they can compile it if they really really need to.
If they just told me from the very start that they want me to work with IAR that would have been fine. I would have never seen the easier way and would have gladly figure it out then. Not now.1 -
So I'm trying out docker and see how I can make use of it, current setup:
1. Ubuntu on VM and Mac for Asp.Net core development
2. Windiws for MS only stuff like SQL Server
3. Ubuntu Server on VM and is running docker images: MS image for SQL and Ms image for dinner core.
What I did so far one script which will handle updating SQL Server database on windows with the changes done on docker SQL image
Then publish website from Mac or Ubuntu to docker image. I have yet to find a way to execute scripts remotely on a docker image using bash script from a remote
What should I do next? And for home setup go for Ubuntu server or CentOS? Any recommended packages for server administration? Workflow ..etc.?2 -
Today after longer vacation I came back to work.
Edit: wrote this rant long time ago, but never finished. Was too pissed.
Some easy meetings, then wanted to start on an easy job.
Just migrating some things from bash regex voodoo to proper tools like JQ.
Finished in roughly 1 h. Lovely.
Made some tea, ate some cookies.
Set up dev environment, found no documentation what so ever, got it running after half an hour.
Annoying, but ok.
Then I tried my scripts...
They worked... Except they didn't.
Console log empty, response code 200 with state: GENERATE_NO_FILES.
Eh. Fuck you. Just fuck you.
Fixed the logging configuration, which was broken since uhm... 2 years plus?
Well... Another half another hour gone...
Kinda pissed now.
Still script return failed...
Poking and trying to sprinkle debug all over that shit cause everything seems ... An incohesive, inconsistent diarrhea.
3 hours later...
Made the ticket to rewrite it.
I did nothing wrong at all.
The API just has no workflow at all. The
*seperate* API calls have to be in an **specific** order - as otherwise the generation will fail, as the prerequisites for the generation are not fulfilled.
Yeah. Completely logical. Especially not to give out any kind of warning or an error message like requirements not met, blablabla.
I drank that evening 2 six packs of beer. I was raging mad....
Then gave that shit to another manager, as I never want to touch that nuclear waste again....
How can someone be so brain damaged -.-1 -
It turns out that using bash without "set -u" (without it, bash replaces every unset variable with an empty string, without error or warning), isn't such a great idea when you change your script later and you forgot to delete the following line:
rm -rf $OBJ_PATH/*11 -
Why people uses Python for OS scripting? What’s the point in forcing me to download a proper interpreter to run a script when the same result can be achieved with a more portable and cleaner Bash/PowerShell script?!?!24
-
About two weeks ago I had a cyber security competition. I spent a week or so working on a bash script so I didn't have two spend hours and hours on end doing tedious tasks to get points.
So here comes competition day and I have about 12 or so scripts that I predicted to get 60 or so of the 100 points. I open the competition image, grab my scripts, and run my call script (script that calls all the other scripts). Maybe 15 minutes later, the script is done...
ZERO FUCKING POINTS. I double checked all the files that the scripts configured and all of them worked. But NONE the vulnerabilities that my script fixed were vulnerabilities that the scoring report counted. Instead of me taking 20 to 30 minutes on the image it took my and 1:07... doesn't sound like much but the highly competitive people finished in around 1 hour and the people who just didn't give a shit about Linux took 3 hours...
Luckily... I was put onto the highly competitive team after that and it all worked out... I'll hopefully add more to this script before next competition. -
Just spent the last 5 hours building the structure of my first bash toolkit. I'm somewhat satisfied.
-
Wrote a script to sort my download folder or any other folder into folders according to file types.
https://github.com/gauravat16/...1 -
There are a few email addresses on my domain that I keep on receiving spam on, because I shared them on forums or whatever and crawlers picked it up.
I run Postfix for a mail server in a catch-all configuration. For whatever reason in this setup blacklisting email addresses doesn't work, and given Postfix' complexity I gave up after a few days. Instead I wrote a little bash script called "unspam" to log into the mail server, grep all the emails in the mail directory for those particular email addresses, and move whatever comes up to the .Junk directory.
On SSD it seems reasonably fast, and ZFS caching sure helps a lot too (although limited to 1GB memory max). It could've been a lot slower than it currently is. But I'm not exactly proud of myself for doing that. But hey it works!1 -
If software you’re trying to use doesn’t have at least 500 lines bash install script downloaded directly from internet and piped into your machine it’s not software meant for developers.6
-
How did I end up looking how to write asynchronous function in shell script whereas my task is to write a distributed chat app in Node.JS ?
Damn this is going to be complicated. -
Started working with the Fish Shell, liked it pretty much until I had to write a shell script!! Things are so different from bash/zsh. Now i need to learn how you do things in fish.
Fuck you Fish!!:/7 -
Someone else hates his notebook because of the fucking low battery capacity? From 100% to 7% in about 40 minutes and all I did was editing a Python script and tested it using the bash..
Can't wait until I get my new laptop3 -
My company ex-IT Maintainer, left a long automation script in c++, bit of python 2, and bash for our server which developed long before i went to junior high school. and now, the system is outdated, and have a compability problems. so i got task to give it a fix.
when i opened the source code up. i was like; holy shit who the hell write a code especially c++ all aligned to the left, Yes All of it, not a single line are indented. but in the other side the code seems maintainable, and after autoformat, autoindent and couple of fix later, it was readable. I am just wondering who the hell in the world write a code with a style like that ???? i knew he was aware of code style and indentation since he wrote couple of python scripts. Unbelievable.
sadly i cannot show you the pict cuz of company things. -
I was having fun with GPIO recently. Now I have an RGB LED flashing in my room when my alarm clock starts ringing.
Android App sending HTTP Request when Alarm has been triggered, php starts a bash script (was too lazy to do it in php). Bash script does its job for 10 seconds. -
I just built my first bash script in nano, and I feel like I'm in the seventies. Absolutely loving it.4
-
hey, y'all android users listen up. i wanna start a new project but im not sure if it's gonna be useful. essentially, i want to make a scripting language to program people's phone, so devs or android super users can make the most of their phone. users will be able to create, share, and schedule execution of the scripts all from the app. is it a good idea? is their something like it?
example of a use i personally would have: there is a set date for when the soccer league schedule for the youth league i play in is supposed to be released online. however, the set date is never met, and it is usually a few days late. in this case, i could make a script to request to the website with the schedule and see if the html changed from last time, and if so it would send me a notif saying "check for schedule" or something similar.
then, i could schedule it to run every five minutes, and i wouldnt have to check manually.
its essentially bash automation for your phone.
good idea?8 -
So there I am sitting in front of my laptop, and trying to npm i and I am getting all sorts of sha mismatch errors.
After lot of debug I conclude it is coming from the proxy as it refuses to download and supplies the error page.
It says it's because I'm using the old proxy so they give me the new URL which I set up and it works.
All good until my password expires. I use our bash script to change it. NPM is buggered again throwing the same errors.
Go to IT, tell them the saga begins.
After a countless hours of looking at the log files we notice that the npm registry is set to http instead of the standard https (thanks bash script). so our firewall blocks the download.
Sorted, finally.
Almost. NPM now works fine, but when I go and I play around with node and axios, I get my requests time out. My instinct says its the bloody proxy again.
So I hit up my trusted WIN Support guy and he confirms that the url is not blocked. So he starts monitoring whats going on and turns out, every time I run the node app, node casually ignores the system-wide proxy settings and tries to send the request as the PC rather then my username.
Since the pc's don't have rights on the proxy it is being refused...
Thank fuck for the corporate proxies, without them, I could just develop things not ever learning these quirks of node...3 -
I wasted fucking hours just trying to find out why curl doesn't send the data I've interpolated from a variable.
It doesn't even send the fucking hardcoded part of the data. I've compared it with a curl command generated by firefox, which works fine. Literally the only difference is that I interpolate a variable and I've echoed the contents of that variable and that was fine as well. I've even checked the interpolated string and it was fine.
And then I moved more stuff into the hardcoded part and it just started to work.
Wtf is this bullshit. I really feel like learning intermediate bash scripting is just a waste of time, just how complicated can you make debugging something so simple.
Every fucking time I give bash scripting a chance this shit costs me so much time, patience and motivation, I really wanna prefer that shit to python, because managing python dependencies for a script sucks ass^2,, but at least I can get shit done in Python. Just fucking end me or give me a language that doesn't make me wanna shoot myself5 -
God....
Bash and substitution patterns is character diarrhea.
And said Bash "script" consists of multiple shitton files with sources and Environment variables and other stuff that makes me wanna poke my eyes out and cram it into my arse.
Still shitty, but more tolerable.
I will have an clusterfuck of nightmares I guess.
All these # will gangup with the ~ and then the ? will start an knife attack to rip out their intestines. But all fails as the ! shred everything to bits by blasting it with anti tank sniper munition.
*dizzy*10 -
!rant
Someone ask how to open a banana In js:
I write my answer before I posted he removed his post so I’m writing a new post
banana.open();
If you literally want to open a banana check https://npmjs.com/package/shelljs/ that call a bash script that use a servo our other device to open a banana -
++ if you've ever had to type something along these lines:
def main(args):
do = some
stuff = here
if __name__ == '__main__':
main()
trying to figure out the best way to write a driver script for a processing pipeline and the choices have boiled down to;
a) define "new" main functions where necessary
b) learn subprocess module
c) write a bash script to do it instead
still not sure what I'm going with... -
My weather script now automatically fetches location as well.
Not that accurate but close enough.
https://github.com/gauravat16/...1 -
Sometimes, I feel like tearing my hair out from the way Bash works.
Like... Where other languages have two operators for case-sensitive and insensitive regex matching, bash? It doesn't. It only matches case-sensitively.
And if one wants the insensitive matching? Gotta set a shell option... And if a script wouldn't change it back, who knows what else could break, so of course it has to save its initial state, change it, do its case-insensitive matching, and return it back to its original value.
10/10 experience.14 -
So we are migrating between different hosts so I write a nice script to move two pieces of encrypted data between the two, one over ssh, the other over https to two separate end points. One boss says can’t do that as it is insecure because they come from the same script!
Another boss objected that I wrote a script to dump databases in bash rather than like his in PHP even all his PHP does is run the same bash commands, I just took out the middleman and made it faster.
#baddayintheoffice #anyonelookingforaseniordev1 -
StackOverflow locked my account. I'm hoping someone here might be kind enough to help me with a bash script I'm "bashing" my head with. Actually, it's zsh on MacOS if it makes any difference.
I have an input file. Four lines. No blank lines. Each of the four lines has two strings of text delimited by a tab. Each string on either side of the tab is either one word with no spaces or a bunch of words with spaces. Like this (using <tab> as a placeholder here on Devrant for where the tab actually is)
ABC<tab>DEF
GHI<tab>jkl mno pq
RST<tab>UV
wx<tab>Yz
I need to open and read the file, separate them into key-value pairs, and put them into an array for processing. I have this script to do that:
# Get input arguments
search_string_file="$1"
file_path="$2"
# Read search strings and corresponding names from the file and store in arrays
search_strings=()
search_names=()
# Read search strings and corresponding names from the file and store in arrays
while IFS= read -r line || [[ -n "$line" ]]; do
echo "Line: $line"
search_string=$(echo "$line" | awk -F'\t' '{print $1}')
name=$(echo "$line" | awk -F'\t' '{print $2}')
search_strings+=("$search_string")
search_names+=("$name")
done < "$search_string_file"
# Debug: Print the entire array of search strings
echo "Search strings array:"
for (( i=0; i<${#search_strings[@]}; i++ )); do
echo "[$i] ${search_strings[$i]} -- ${search_names[$i]}"
done
However, in the output, I get the following:
Line: ABC<tab>DEF
Line: GHI<tab>jkl mno pq
Line: RST<tab>UV
Line: wx<tab>Yz
Search strings array:
[0] --
[1] ABC -- DEF
[2] GHI -- jkl mno pq
[3] RST -- UV
That's it. I seem to be off by one because that last line...
Line: wx<tab>Yz
never gets added to the array. What I need it to be is:
[0] ABC -- DEF
[1] GHI -- jkl mno pq
[2] RST -- UV
[3] wx -- Yz
What am I doing wrong here?
Thanks.17 -
Been meaning to rant about this for awhile. Currently in college and in this class we have to write BASH scripts which isn't ever that hard. Except for the fact that everything is checked against a pre-written script. FUCK I just wrote a complex script that does work but because it's not EXACT its coming back failed even tho it prints everything correct and works.
So now instead of fixing the script I'm back on DevRant wasting more time.1 -
I refactored a bash script written so badly that it had fewer lines of code even after added a few new features
Link: https://github.com/dasgeekchannel/...3 -
Yesterday i have worked from 9 to 5 for $0/hour (they dont call it $0/hour they call it a technical interview)
To which i had to build all alone all by myself a rest api backend in java, bash script to move the jar to other folder a gitlab cicd pipeline and deployment to aws.
Basically for this position i have to work both backend and devops
I passed
Yesterday at 8pm (yes) the recruiter told me i passed and she asked me to schedule the next interview tomorrow morning in 8am.
I didn't open linkedin and then she sent me a word template at 10pm.
Are you fucking kidding me? Was it not enough that i was your slave from the fucking morning till the whole working day for $0/hour and now you want me to reply to your messages outside of work? You want me to be ur $0/hour slave 24/7 and not 9/5? Fuck off. Genuinely get fucked.
I hate the corporate world. This is satan's job. This is the work of the devil. I feel my soul dying. This matrix is killing my soul. I must escape. i need energy to escape but this matrix is sucking all the energy out of me2 -
It is great feeling, to leave company and leave all your crap code to others :D
500 lines bash generic wrapper to curl (just to catch and print errors, not just silently fail as most devs tell curl to do).
It was monster that used "function overload" and "subclasses" (based on dynamic source files). Also dynamically created inline AWK script to parse curl output. It kinda worked, but amount of high-level hacks I had to use was enormous.
Never use Bash when you do not have to. Even if you have experience with it. Others don't have it and will fail miserably trying to patch your code. Just leave bash for fast bridging between programs, leave python/java/c#/go or any other proper OOP language for a job. Please ? -
Why did it take years before someone told me to add this to your bash script to see the line on which a command failed?
errorOnLine() { echo "Line $1 had an error" ; exit 1 ; }
trap 'errorOnLine $LINENO' ERR7 -
!rant
I don't want to seem like a huge noob and a douche... but I spent like 5 hours the other day working on a bash script prompting you if you want to delete each individual user on the system (keep in mind that I'm fairly new to bash) and when I got the code correct... holy shit... I felt like a fucking god.1 -
So this happened a few days ago
I was working on a module assigned by my senior, and was the sole developer on that module. Just when I was breaking my head to get a bash script correct (was writing a bash script for first time), my senior comes and looks at my messy script and goes "No, no, no, no that's not how you do it. "
Takes the keyboard and starts editing my script opened in vim.
Did some cool restructuring, taught me a few things about bash and while talking to me kept the keyboard back at its place.
I keep my hands on keyboard while talking to him and press
[Escape] :q!
And as I pressed Enter my face went purple/blue thinking this is not good. 😨
(I have a habit to quit as I had almost never edited and saved a vim file before)
And he sees that face and says
what happened?
No nothing. Everything's cool.2 -
Gnome, you are a piece of shit. It has taken 4 people over 3 hours to create a .desktop file to launch a fucking bash script due to varying levels of inexperience.
Die in a fire you flaming putrescent turd.
What the fuck does putrescent even mean?5 -
Internship Day 2: Spent almost an hour debugging an error in Dockerfile. Turns out I wrote the name of a bash script wrong.
*facepalm* -
The worst project I worked on so far was a bash script of over 2000 lines written by two different people who both script differently. I was supposed to understand the script and "fix a few things".
Names of functions were as confusing as possible.
Up to this day I'm still forced to use it.3 -
Today I sat down and made my first two proper scripts in bash, I have been studying and pulling bits of information together, and ive finally got a grasp on Redirection. I found a script for a Dialog driven Menu, tore it to pieces and learnt from it.
2 Hours Later, stupid mistakes and lots of coffee, I have the start of something I think is cool :) If anyone would like to take a look and give me some comments I have pushed both projects to github. And will be working on the GUI one all day :)
https://github.com/Rotho98/...6 -
Experience with Plasma Mobile:
After an hour of confusion and bash file trolling (as in scrolling through a bash file, not trolling someone with a script), I ended up needing to reinstall Lineage OS on my phone.
While it's a new and seemingly exciting expanse for modern Linux and Android phones, it's very obviously not ready yet.
Even after fixing some bugs within the bash file, my phone seemed to have a mind of its own; prematurely attempting to boot into the OS during a critical part of the setup. Even after finishing the setup correctly, my phone never actually boots into the system.
While I like the concept behind Plasma Mobile, it does still have a ways to go. But I have some hopes that the project will start getting bigger and better as the time goes on.undefined looks like gf is sticking with whatsapp it's a shame really bug fixer just need to figure out github cli now1 -
Procrastination bash script, goes really well with a cup of coffee! ;)
https://gist.github.com/paulera/... -
Dear bash script dev,
maybe you don't know, but they won't pay you more if you use fewer chars in your scripts.
Well, at least i hope you didn't know this; because if turns out that you consciously and deliberately wrote your variable names like a blind man would play scrabble, and now i have to deal with names like $tre_img , $cnt_aprn , $catlow3 etc... then YOU ARE AN A**HOLE 😤😡3 -
Dumb question time!
I'm writing a bash script that outputs some progress info to stdout (stuff like "Doing this... ok", "Doing that... ok") before outputing a list of names (to stdout too).
I'd like to be able to pipe this list of names to a second script for processing, by doing a simple :
~$ script1 | script2
Unfortunately, as you may have guessed, the progress info is piped as well, and is not displayed on the screen.
Is it considered a bad practice to redirect that progress info to stderr so it is not sent into the pipe ?
Is there any "design pattern" for this kind of usecase, where you want to be able to choose what to display and what to pipe to a program that accepts input from stdin ?16 -
This is an actual transcript...
Since it's way too long for the normal 5000 characters, hence splitting it up...
Infra Guy: mr Dev, could you please give some rational for update of jjb?
Dev: sparse checkout support is missing
Infra Guy: is this support mandatory to achive whatever you trying to do?
Dev: yes
Infra Guy: u trying to get set of specific folder for set of specific components?
Dev: yes
Infra Guy: bash script with cp or mv will not work for you?
Dev: no
Infra Guy: ?
Dev: when you have already present functionality why reinvent the wheel
Dev: jenkins has support for it
Dev: the jjb is the bottle neck
Infra Guy: getting this functionality onto our infra would have some implications
Dev: why should I write bash script if jenkins allows me to do that
Dev: what implications ??
Infra Guy: will you commit to solve all the issues caused by new jjb?
Dev: you show me the implications first
Infra Guy: like a year ago i have tried to get new jjb <commit_url>
Infra Guy: no, the implications is a grey area
Infra Guy: i cant show all of them and they may hit like in week or eve month
Dev: then why was it not tackled
Dev: and why was it kept like that
Infra Guy: few jobs got broken on something
Dev: it will crop up some time later
Dev: if jobs get broken because of syntax
Dev: then jobs can be fixed
Dev: is it not ???
Infra Guy: ofc
Infra Guy: its just a question who will fix them
Dev: follow the syntax and follow the guidelines
Dev: put up a test server and try and lets see
Dev: you have a dev server
Dev: why not try on that one and see what all jobs fails
Dev: and why they fail
Dev: rather than saying it will fail and who will fix
Dev: let them fail and then lets find why
Dev: I manually define a job
Dev: I get it done
Infra Guy: i dont think we have test server which have the same workload and same attention as our prod
Dev: unless you test how would you know ??
Dev: and just saying that it broke one with a version hence I wont do it
Infra Guy: and im not sure if thats fair for us to deal with implication of upgrading of the major components just cause bash script is not good enough for u
Dev: its pretty bad
Infra Guy: i do agree
Infra TL Guy: Dev, what Infra Guy is saying is that its not possible to upgrade without downtime
Infra Guy: no
Dev: how long a downtime are we looking at ??
Infra Guy: im saying that after this upgrade we will have deal with consequences for long time
Infra Guy-2: No this is not testing the upgrade is the huge effort as we dont have dev resources to handle each job to run
Dev: if your jjb compiles all the yaml without error
Dev: I am not sure what consequences are we talking of
Infra Guy: so you think there will be no consequences, right?
Dev: unless you take the plunge will you know ??
Dev: you have a dev server running at port 9000
Infra Guy: this servers runs nothing
Dev: that is good
Dev: there you can take the risk
Infra Guy: and the fack we have managed to put something onto api doesnt mean it works
Dev: what API ?
Infra Guy: jenkins api
Infra Guy: hmmm
Dev: what have you put on Jenkins API ??
Infra Guy: (
Dev: jjb is a CLI
Infra Guy: ((
Dev: is what I understand
Dev: not a Jenkins API
Infra Guy: (((
Dev: (((((
Infra Guy: jjb build xmls and push them onto api
Infra Guy: and its doent matter
Dev: so you mean to say upgrading a CLI is goig to upgrade your core jenkisn API
Dev: give me a break
Infra Guy: the matter is that even if have managed to build something and put it onto api
Infra Guy: doesnt mean it will work
Dev: the API consumes the xml file and creates a job
Infra Guy: right
Dev: if it confirms to the options which it understands
Dev: then everything will work
Dev: I am actually not getting your point Infra Guy
Infra Guy: i do agree mr Dev
Dev: we are beating around the bush
Infra Guy: just want to be sure that if this upgrade will break something
Infra Guy: we will have a person who will fix it
Dev: that is what CICD is supposed to let me know with valid reasons
Dev: why can't that upgrade be done
Infra Guy: it can be done
Infra Guy: i even have commit in place3 -
So, I have a pretty decent understanding of big complete languages like Java, I build android applications following several design patterns, solid principles, building big stuff with databases and servers and libraries interconnected with gradle, tracking everything with git, using tdd and functional programming capabilities blablabla ... And I still have trouble making sense of a FREAKING STUPID SHELL SCRIPT I MEAN WHO CAME UP WITH THAT SINTAX I HATE IT SO MUCH OMG I CAN'T EVEN
But for real everytime I need to read a '.sh' I literally wanna throw my computer away and die. Am I alone? -
Why the fuck is it so hard to write a simple bash script. Syntax so strange and so many symbols you need to know. If you need to do calculations with floating point numbers, the mess is perfect.11
-
A cool bash shell script to download (cut) a portion of video from youtube. It depends on youtube-dl and avconv/ffmpeg tools which can be installed from the distribution.
Bash Shell Script (can be named as ytcut):
Note: No error handing implemented
#!/bin/bash
#set -x
_yt_id="$1"
_yt_start_time="$2"
_yt_end_time="$3"
#_yt_format_id="bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio"
# use youtube-dl -F <video id> to get the list of formats available
# Using format id as 22 as the above one didn't work.
_yt_format_id=22
_yt_time_selection_opts="-ss ${_yt_start_time}"
_yt_time_selection_opts="${_yt_time_selection_opts} -to ${_yt_end_time}"
_yt_url=$(youtube-dl -f ${_yt_format_id} -g "${_yt_id}")
_yt_filename=$(youtube-dl --get-filename --restrict-filenames -f ${_yt_format_id} "${_yt_id}")
avconv -y -nostats -loglevel 0 -i "${_yt_url}" ${_yt_time_selection_opts} -codec copy "file:${_yt_filename}"
Example Usage:
ytcut 3dWrKNrWbWQ 0:40 1:402 -
To all the people using 1080p external monitors on macos mojave, did you notice that the fonts are now shitty?
I wrote a script to fix it. (Uses the fix provided in the forums and makes it work for ext displays and retina).
https://github.com/gauravat16/...4 -
!rant
Hello everyone
Do any of you python programmers have any tips for simple projects you can do to learn python?
I am mainly a backend/system engineer comig from C++, slowly picking up rust and have been using bash as my scripting language so far. bash is nice because it is so fundamental in the linux world but you just dont get very far with it and its usually not pleasant to write.
So I would like to learn python, though I have no idea what I can do to practice it, so that I can just quickly whip up a script the next time I need something done in the file system or want to write a simple parser for something.
Do you guys have an idea of something small (not necessarily useful) which makes use of pythons strengths? Just looking for ideas here, so stick it all out 👋💕12 -
So, I rarely ask questions, I usually find the answer myself, but, I'm just tired today and maybe my fellow dev ranters can help here.
Is there a way to write a bash script that automatically runs a pre-defined mysql query on local DB and throws that up into production DB?
it's just a simple select and then insert.
Been looking at select into out file, from infile etc
I could do it manually, but I'm going to have to do this more than a few times over the next few weeks and would love to just alias it and be done with it
doesn't seem possible without actually logging into mysql cli each time...on both sides, which sucks
this isn't export/import a table, it's export/import the result of a query
thanks5 -
Software development is so rotten: So I had to compile curl 32 bit. But just to create the configure script I needed friggin autoconf, libtooling and 2 other packages which homebrew would not install, because there were too many github-API requests. So I created a fucking github account just to create a token, import it in my bash to enable more requests. And it even worked. That is the scandal: That this whole shattered, stinking abomination of a process even produces some software you might actually run... and that we are using it.2
-
I was writing a bash script for about two days to have a decent way to create tags with a specific convention and everything else should be escaped. After repeating to execute the script with around thousand different parameter styles for hours a developer buddy asked me why I'm not writing another bash script which acts like a unit test to execute the script with those many parameter options...
We never saw that developer again since that day. -
I wasn’t able to run a bash script right now using ./script.sh as I was getting an error “Command not found.” I tried running it using source command instead of ./ and it worked! What’s going on here?9
-
Trying to compare two files line by line to see if a signal has increased by 5 dbm or more in bash is hurting my brain. I probably need to switch from bash for it but so much of the other jobs this script does is fully functional in bash I'd hate to switch now. Any advice please help.4
-
Warning I get really nit picky in this
I’ve been enjoying my Manjaro experience so far but the only gripe I’ve managed to come across is fucking VS Code. Since I downloaded it via .tar.gz I have to redownload the .tar.gz each fucking update. WHICH WOULDNT BE A PROBLEM IF THE WEBSITE JUST GAVE ME A SOLID DOWNLOAD LINK I CAN USE IN AN AUTOMATION SCRIPT BUT FUCKING NO ITS AN EVENT FOR WHEN YOU CLICK ON THE LINK FOR .tar.gz SO FUCK ANY PYTHON OR BASH SCRIPTS I COULD COME UP WITH,
and before someone fucking says it yes I can use “Code - OSS” (the version on github) which I know I fucking am using it but I don’t like it even though it is the exact same thing, minus text that is supposed to say VS Code and the vscode icon.
Unless I’m retarded and could have updated it with the tar.gz manually or automating it somehow (which I couldn’t find a solution for Manjaro/arch based systems) I’m still getting used to Linux and installing software without a package manager (which I’m still using it but for some things I try to install it without a package manager) so if I am missing something please just ignore my dumbass and educate me.
And if you try to recommend using the Snap store, let me stop you. No.10 -
Just finished work by writing a huge giant new custom bash script and now its time to take the biggest meanest shit again in the shitter🚽6
-
Started with Basic back in the early '90s, then tried quickBasic that came with the new version of msdos.
Later in the college we learned Pascal, Cobol, C and a little C++.
The languages I'm writing nowadays I've learned as I went... Most of them script languages as perl, php, python and bash. And C/C++ occasionally.
And js too1 -
My first dev job started by doing a change across a bash, perl and python script, where I got hired for C++. Now I'm full time python and I love it.
-
Why did my bash script stop working?
I accidentally pushed back to git from my windows machine, and it sharted on all my line endings. What a waste of an hour :(2 -
!rant
Created my first bash script to automate switching between PHP 5 and 7 for apache. Learning a lot after switching to Linux. Still trying to figure out vim though :/ -
I wish I could stop forgetting how to write bash script. I have just spent about 5 hours on a 10minutes script.
This script allows you to run a command on a file for which you only have specified the last letters (the extension is not required). It's like an autocomplete from the end. Does it make sense ?
Whatever here's the link : https://gist.github.com/GarreauArth... -
A while ago I saw this rant about someone who had made some scripts to speed up fresh linux install. Since I never got to see those scripts, I decided to make my own. They are of course based on personal preference and distro, but they might be useful to have a look at: https://github.com/LucaScorpion/...
(Improvements and suggestions would also be appreciated of course ;) ) -
Well it was a paid internship but I was in IT/support, used to work in shifts, loved the night shifts (solo) that was when i could write some code, a fellow intern showed me a bash script he had written to automate some the reports he needed to generate, life was great those few months.
-
I was setting up a CI build machine. Builds were supposed to be ran in disposable containers, but I needed a way to trigger a task on the host from inside the container. I didn't want to give containers shell access to host - kinda misses the point.
Solution: a server running on the host and listening for predefined commands on a named pipe. The pipe was bound into containers which would simply echo commands into it. Very simple and effective.
The hacky part? The server was an 8-line bash script.1 -
Shell scripting is one big fucking pain in the ass !
Why the fuck is it so syntax sensetive!!
Cant you even fucking consider a space between a variable and a operator by yourself ?1 -
I felt pretty smart about replacing that huge php database import script with a bash script loading the XML dump via MySQL's LOAD XML INFILE feature directly.
Why then does the php script only take 35 minutes for all the tables to import, whereas my script takes almost 2 fucking hours for that one table? We are talking an import of the ridiculous size of 70 MB. I don't get it. It's supposed to be fast.2 -
Help is welcome - I don't get it x.x
Just started scripting and can't find it on google:
Got a little whitelist with urls in it and a huge list with urls in it.
whitelist format:
foobar.com
barfoo.au
format huge list:
blabla=/foobar.com/wo.op
blabla=/barfoo.au/wo.op
blabla=/barfoo.crazy.au/wo.op
blabla/barfoo.crazy/wo.op
should stay in the file.
Now I want to delete the entries of the whitelist from huge list.
I have no clue how I can get the
foobar.com
into
sed -i '/foobar\.com/d' $file
to make it work in my script x.x5 -
Okay soo... I have been working on a "notepad" script using bash. I basically have finished it but it lacks one thing. Verification if the user has typed anything! I started searching on google how i could do that, and found nothing (lol).
I'm asking help from you people :D
Here's the code that doesn't work.
while [[ $name != 'name' ]] || [[ $name == '' ]]
do
read -rp "What would you like the file name to be? The file extension is .txt!$(echo -ne '\n: ')" name
echo "Enter a valid file name please."
done
There's probably one small thing wrong anyway lol
Thanks already!3 -
That moment your shell script works after hours of debugging.
Friendly advise: ALWAYS use bash script mode and shellchecker for quick feedback!1 -
What's the simplest way to deploy a small node project to a private root server, possibly dockerized?
I feel like there are thousands of possibilities nowadays, like Ansible and so on. But is there something more in the the KISS way? Apart from just hacking a bash script together of course, it should be portable (and work on windows too).1 -
I hate windows caret returns sneaking in bash scripts! fuck*ng \r shit!!!!
sed -i 's/\r$//' YOURFILE every time a fucking windows friend send me a script so boring2 -
I wrote a bash script to launch 7 terminal windows, to be run when I am about to start work(need them for git on 7 projects in my work) in the morning.
Then, I added the script to my .bashrc.1 -
I had to generate different kinds of graphs at compiletime and had to compile a graph and write down the code size for that specific width/height in addition to one of three implementations which all need to be evaluated. I computer scienced the shit out of it!
I wrote some Rust code that easily lets me build some graphs with the dimensions passed as input parameter. Then i wrote a method that converts the graph into the definition of the graph in a C header (sadly the only way) and wrote a bash script that executes that rust code with all possible dimensions and saves the header into my source folder. Then i build the application and write the programsize into a file.
In the next step i run a python script that reads all the generated files with the sizes and created a csv file which in turn can be used by excel/numbers to visualize the dependency between depth of graph and code size 😄
I had only some hours for it all, it is messy but works 😄 -
The little things are what makes you happy.
It was really annoying that screen doesn't work after an su. It makes sense, but typing "script /dev/null" everytime (and remember to write "exit" after it so bash history works again) is annoying.
So a little script to "/bin/scrn" with the following content made my life better:
#!/bin/sh
command="screen $@"
script /dev/null -c "$command"
Never worry about screen after su again! Tech life is great, isn't it?4 -
Arch users: Does anyone use the cower tool? I did a fresh install on my laptop and can't find it on aur's pages anymore. I read into it being 'replaced' by something called auracle? Not sure if anybody is up to speed on that, but at the very least cower's package pages have been removed from aur.
A tool like cower only saves me a little trouble of writing a bash script to update all my aur packages at once, but it was one less thing to do without using an AUR helper (which I've been consistently suggested to stay away from). How do you streamline this process on your machines?2 -
I’ve been trying to work smarter and not harder.
I’ve been applying to internships with my cover letter and resume.
My cover letter is pretty generic so I only need to change the company name and company position for each application.
Used to do this all manually through google docs but I just wrote a cool script
Using bash, I ask for the company name and position, and then I just generate and compile a latex version of my cover letter with those parameters updated.
Then, the pdf of my cover letter is combined with the pdf of my resume.
After that, the pdf of my application goes into a directory in my career folder so I have a record of it.
This has saved me so much time lol I’m happy I took the time to figure this out2 -
Sort "insert file name here" | uniq -c outputs the same file in a bash script but in a command it works. Any ideas?6
-
I just spent hours working on a bash script that would take care of a certain problem only to realize that the problem had magically disappeared. Now I don't know if I should be happy or disappointed...
-
Wanted to make an auto deploy script for nginx combined with git for websites i work on. Guess ill learn bash on the fly1
-
Who wants a simple bash script for those screen recordings you wanna convert into a gif to upload to your JIRA or github or whatever?
https://gist.github.com/christhomas... -
20 years in and I’m just now discovering Fish! Why the hell isn’t it more popular? For real, it has more features OOB than bash or zsh and the scripted is so much nicer. Oh I need to add to my path? Just add onto a built in variable from the CLI and your good, no need for a script to append a line to some file loaded by zsh or opening up the .zshrc and manually editing it. And how bout that “funcsave” built in huh? Freaking awesome. More people need to be championing Fish, it’s better than your terminal bros zsh6
-
Spent all day yesterday and a pile of StackOverflow good will on debugging the fact that I was missing a hyphen and a period.
I really, really, really suck at this. -
Been waiting for a 10 line bash script from colleague. Read rows from MySQL and create CSV... so it has been since Thurs....
Comes to end of day today I ask him how far it is. "I'm about 50% of the way just writing it in C++"
How do I really respond to that? This thing is just a select on a database that updates a CSV file.3 -
Azure DevOps Bash script task hangs for no reason. This will be in my dreams tonight.
(That and I spilled water all over my trousers in the office today) -
I loathe manual regression testing. So much so, that today I made a quick bash script to move my mouse every minute to make it look like I'm online and doing stuff while I watch Twitch and YouTube videos.
The worst part is that we have Cypress to automate this and my company puts more value in pushing out features instead of automating all this unnecessary manual testing. Soooo I'm just not gonna participate because there's no way for them to know that I'm *not* testing.1 -
This seems like the sort of thing all you Vim users may appreciate: http://owen.cymru/fzf-ripgrep-navig...