Some of the most common commands for iterating with the FS in Linux that we use in our day-to-day tasks are:

  • mkdir dir - Create a single directory
  • mkdir -p foo/bar/dir - Create a directory with parent directories
  • touch file - Create a new file
  • mkdir -p foo/bar && touch foo/bar/file - Create a file with parent directories

Not very complex. And all of us are actually used to this syntax.

But let me introduce you a script which allows you to deal with paths with use of just one single command which is even simpler.

Examples

Take a look at the following examples to get an idea of how the process of creating paths may look like when following just one convention:

I was actually inspired by the way how the Vim NERDTree plugin deals with paths following the same convention described above.

If you want to create a file, just provide a path to it:

$ tt foo/bar/file  # => Will create a file "/current/path/foo/bar/file"

If you want to create a directory, append a / to the path:

$ tt foo/bar/dir/ # => Will create a directory "/current/path/foo/bar/dir"

The same will also work for absolute paths:

$ tt /foo/bar/file  # => Will create a file at "/foo/bar/file"
$ tt /foo/bar/dir/  # => Will create a directory at "/foo/bar/dir/"

Installation

To install the script just copy one raw file from github to your search $PATH and make it executable.

For example:

wget -O /tmp/tt -- https://gist.githubusercontent.com/zinovyev/1f8caf9e886de610e2dd2c22a4ef7d69/raw/tt ;\
chmod +x /tmp/tt ;\
sudo mv -f /tmp/tt /usr/bin/tt

Source Code

That’s how the source code looks like: