Exponential search is an algorithm designed to search for a target value in a sorted array. It is useful in scenarios when dealing with large or potentially infinite datasets and it can also help you find a number, which is not known in advance. Let’s see how it works and how to implement exponential search in bash.
Continue readingdealing with float numbers in bash
Dealing with float numbers in bash can be a bit tricky since bash natively supports only integer arithmetic. However, you can perform floating-point arithmetic using external tools. Here we will walk through few methods to handle floating-point numbers in bash.
Continue readingloops in Linux shell scripts
Loops in Linux shell scripts is something you will inevitably face once writing more complex scenarios. They are nothing new for those who have at least some sort of programming experience, since they exist in pretty much any programming language. Loops are control structures to repeatedly execute a block of code as long as a specified condition is true. They are essential for automating repetitive tasks and processing large amounts of data efficiently. Since loops are a fundamental programming concept, they of course exist in bash (or any other shell).
Continue readingnegate something in regex using negative lookahead
If you wish to negate something in regex, one of the easiest and most reliable ways to do it is to employ negative lookahead assertion. Having a need to split the set of objects into different categories with some “other” / “default” / “the rest” option is one of the most common use cases where this approach can be used.
Continue readingconvert wildcard in file name into relevant static file name
Sometimes you might encounter cases when files are named somewhat weird and makes it hard to use them for automated analysis purposes. In such cases, wildcard expansion becomes a very useful concept. For example, some applications tend to write their logs into log files with some additional information in file names, like:
[root@linux ~]# ls -l /var/log/demo/
total 76
-rw-r--r-- 1 root root 19125 Mar 15 13:48 2024-03-13.demo.log
-rw-r--r-- 1 root root 29580 Mar 15 13:49 2024-03-14.demo.log
-rw-r--r-- 1 root root 22100 Mar 15 13:49 2024-03-15.demo.log
[root@linux ~]#
Say log file is being written to as long as calendar date matches the current one. And what if you want to set some automated analysis of such log files, but to do it only for the relevant one, to which application currently writes?
Continue readingcheck ownership and permissions for absolute path easily
I couldn’t count times when asking someone to check permissions in Linux for some file I was given answer which was something like:
[root@linux ~]# ls -l /var/log/httpd/access_log
-rw-r--r-- 1 root root 17245040 Mar 13 13:38 /var/log/httpd/access_log
[root@linux ~]#
So all looks good – file is readable. But is it really?
Continue readingretrieving country codes from IP automatically
I once had a need to monitor the origin of HTTP requests, track it in real time from web server log. Since this need was actually nothing more but pure curiosity, I was not willing to pay for it. So I started looking for free solutions for this purpose – convert IP to country. Here is what it all ended at…
Continue readingcheck if json is valid
Sometimes you might need to check if json is valid directly in CLI. You can validate if json has correct structure easily with command line utility “jq“.
Continue readingredirect both stdout and stderr to same place
Sometimes you might want to redirect both stdout and stderr to same place. You can do it like:
[root@linux ~]# ./script.sh >/dev/null 2>&1
But there is a shorter way…
Continue readingcreate results file only when fully finished
Idea behind this trick is very simple yet powerful enough. It allows you to avoid unexpected consequences when some results file is being appended long enough by your process.
Continue reading