ZSH Gem #16: Command arguments completion

Posted by | Comments (4) | Trackbacks (0)

ZSH has lots of great expansion and auto completion features and I have shown you many of them. One more completion feature I want to show you is command arguments completion. With this completion of command line parameters you can auto complete the arguments of your command line tools. Many completion definitions are already included in ZSH, many more can be installed via your package manager.

Read more…

ZSH Gem #15: Shared history

Posted by | Comments (0) | Trackback (1)

If one thing annoys me then it's when the shell history doesn't handle multiple simultaneous shell sessions properly. Once you close a shell instance, its complete history is written to the history file. And when you close the second instance, it writes its whole history in one go, too. The result is that I have to go through all history entries of the second instance to come to the last entry of the first one (if they're not already deleted because the history of the second shell was longer than the maximum history size or because the shell is configured to replace the whole history instead of appending new entries).

Read more…

ZSH Gem #14: Anonymous functions

Posted by | Comments (2) | Trackbacks (0)

I hope, you're familiar with parameter scopes, i.e. local and global variables. Global variables are visible in all contexts including subshells, functions and what not. Local variables are only visible in the current scope (e.g. a function).

Read more…

ZSH Gem #13: Parameter expansion

Posted by | Comments (0) | Trackbacks (0)

Today I want to show you some examples of parameter expansion or parameter substitution as it is called in Bash. I've already used parameter expansion a few times in this series but now I want to show you how it works (at least some basics, I don't want to report the whole manual here).

Read more…

ZSH Gem #12: Autoloading functions

Posted by | Comments (4) | Trackbacks (0)

Have you ever wondered why ZSH provides so many features but is still so fast? That's because of its autoloading mechanism. Functions can be marked as empty so they aren't loaded before they are executed the first time. This saves a lot of memory and much processing power.

Read more…

ZSH Gem #11: Path and filename expansion

Posted by | Comments (6) | Trackbacks (0)

Yesterday I told you about Backtick expansion. Today I want to show you one more interesting expansion feature and that is path expansion for executable files.

Read more…

ZSH Gem #10: Backtick expansion

Posted by | Comments (0) | Trackbacks (0)

Today's Gem is very short. I just want to mention an interesting feature of ZSH and that is backtick expansion.

Read more…

ZSH Gem #9: zshexit() and other hook functions

Posted by | Comments (0) | Trackbacks (0)

Yesterday I told you about the chpwd() hook function. Today I want to go one step further and round up this topic. As you might have found out (or maybe you knew it already or at least guessed it), there are also other hook functions and today I want to present you some.

Read more…

ZSH Gem #8: Hook function chpwd()

Posted by | Comments (2) | Trackbacks (2)

There is a number of magic functions called hook functions in ZSH which are automatically executed under certain circumstances. One of these functions is chpwd() and it is executed each time you change the current working directory.

Read more…

ZSH Gem #7: Editing variables with vared

Posted by | Comments (2) | Trackbacks (0)
Today I'm showing you how to edit variables by using vared. The vared shell builtin invokes the ZSH line editor, to interactively edit variables. This is sometimes very useful when you have appended values to a variable but then recognize that you added something you didn't want to add. Instead of rebuilding all the contents of the variable you could just use vared and clean up the mess.

Read more…

ZSH Gem #6: Redirect output to multiple files

Posted by | Comments (4) | Trackbacks (0)

One unique feature in ZSH is that you can redirect streams to multiple outputs or inputs simultaneously. With this multi-stream redirection you can, e.g., redirect STDOUT OR STDERR of a program to more than one file at the same time without using a command line tool such as tee.

Read more…

ZSH Gem #5: Menu selection

Posted by | Comments (3) | Trackback (1)

By default, the ZSH auto completion is very rough. This seems very weird when you think of how powerful ZSH's expansion system is where you can expand any expression with the TAB key. But when you hit TAB to complete something, the only thing you can do is to toggle through a very basic list of files or commands.

But in fact, the ZSH completion system is very powerful. And when I say that, I mean very powerful. ZSH has a completely programmable completion system. For a long time, this has been a killer feature of ZSH. It still is, but other shells such as Bash have now implemented this as well. But in some areas, the ZSH completion system might still be the better one.

Read more…

ZSH Gem #4: Spell checking and auto correction

Posted by | Comments (0) | Trackback (1)

It often happens that you type a command, hit enter and then notice that you spelled the command incorrectly and your shell tells you something like:

zsh: command not found: wrongcommand

That is not a big problem, but especially when your command is very long, it is sometimes tedious to jump to the first word and correct it. You might configure your HOME key to do that, but sometimes this is not possible. It would be very convenient if the shell would not just say that you misspelled the command but also give you some alternative you'd only have to confirm with a keystroke. Well, ZSH can do that.

Read more…

ZSH Gem #3: No automatic word split

Posted by | Comments (2) | Trackbacks (0)

Have you ever stumbled upon this: you write a shell script which works with variables containing spaces and suddenly the whole script breaks? This is because most shells automatically split strings on spaces. This is some ancient behavior and in most cases it is just a pain in the ass.

Read more…

ZSH Gem #2: Extended globbing and expansion

Posted by | Comments (9) | Trackbacks (0)

You are probably familiar with globbing. Globbing is a way to select files on the command line based on a simple pattern. Newer versions of Bash can do a lot more, but I'll show you what the Z Shell can do.

Read more…

   (Page 2 of 5, totaling 65 entries)
Design and Code Copyright © 2010-2024 Janek Bevendorff Content on this site is published under the terms of the GNU Free Documentation License (GFDL). You may redistribute content only in compliance with these terms.