Welcome to the first article of this year's Advent calendar series. The last Advent calendar was extremely successful so I thought it would be a good idea to continue this.
The topic for the Advent calendar series 2011 is “24 Outstanding ZSH Gems” because the Z Shell is my absolute favorite shell. There's nothing ZSH can't do except the dishes. In my opinion it's much more powerful than any other shell out there. If you are not a ZSH user (yet?), you're still very welcome to enjoy this series as well. Maybe then you'll make the switch. And if not: some features also work similarly in Bash, although they might be not so comfortable there.
Now let's begin with programmable renaming of files or batch renaming. That sounds very abstract, but let me show you what I mean.
Hi, today I'll present you something new. It is an experiment and I'd be curios whether you like it. I've started a little series of ttyrecs. That means, I've recorded a little tip or trick on the console and uploaded it to PLAYterm so it can be easily played back in the browser. I thought it could be useful to do a little command line gymnastics.
Today I'll show you three ways how you can number lines in text files. We'll do that with cat, nl and vim.
grep is a handy tool and I use it every day. But sometimes I wish it had some more features. For instance full featured Perl compatible regular expressions (PCRE) since the current implementation is not complete and I think it will never be, automatic recursive search, exclusion of non-text files etc.
Here a tool called ack comes into play. It's a search tool and grep replacement written in Perl, which is able to do all these things. Guess what!
Adobe Flash has ever been a great source of anger due to many bugs (see here for example) and security vulnerabilities. Anyhow, it has evolved into a widely used technology and many, many websites need it to function correctly (yeah, HTML5 is coming, let's hope it will replace Flash in many places in the near future).
Adobe's bug fixing behavior has never been great and we all know, that Flash for Linux has been permanent beta (or alpha) since we can remember, but enough is enough. There is a severe bug that has now existed for three years, reported by hundreds of users. Adobe closed this report without taking action. Now it has been reported again and I want you to vote for it. Please!
awk is very complex and hard to learn. It is the most difficult task in Linux administrator's lives and drives everyone crazy who tries to learn it. It's written by Gods and used by them, no mortal man can ever learn awk.
In fact…, no! If you know any C-like programming language and regular expressions, awk is absolutely easy and it can make things much easier. It's pretty mighty, but I've never seen any programming language easier than awk (except QBasic).
File descriptors are very essential in programming. When you open a file, you get a token, which identifies the file instance. With this token you refer to the file, write, read or close it. You have about the same on the shell.
Processes in Linux may run with different priorities so that important processes get more CPU time than less important ones. This priority is called the “nice value” or ”niceness” (NI). The nice value is a number between -20 and +19 with the default value right in the center at 0. The higher this nice value, the “nicer” a process is to others, i.e., the lower its priority.
Performing calculations on the command line is very handy and bc is the tool which does it for you. Also bash can do some calculation stuff, but that's not very intuitive. Bash is built for different things than calculation and so bc is the better choice. It can do much more for you and its syntax is ways easier.
sed is built to process strings (either from STDIN or from a file) line by line. Therefore, you can't search for multiple lines. But there are several ways to work around this. I'll be showing you three ways of performing multi-line replacements.
On Linux devices and their partitions are named automatically when being plugged in. They have a base name (for SCSI devices it's sd), a device identifier (a lowercase letter) and a number for every partition. These names depend on the order in which the devices are plugged in, so they are not static at all.
This is not a tutorial about find in general as you might expect it. find, and the GNU variant in particular, is very complex and can't be covered in one short blog post and actually, there are many good tutorials on the Internet. Instead, this blog post concentrates on one single aspect of find: operators.
You probably know command substitution. Command substitution executes a command and uses its output as a variable on the shell. The operator for this is either the backtick operator. But did you also know that there is a counterpart of command substitution? This counterpart is called process substitution.
You've probably heard of lsof and fuser. Since on UNIX systems everything is a file, these tools are absolutely important to know for each system administrator. They can make your work easier and they can also help identifying attacks on your system.