Linux – Midnight Commander, using date in User menu

datelinuxmctar

I would like to use MC (midnight commander) to compress the selected dir with date in its name, e.g:
dirname_20131231.tar.gz

The command in the User menu is :

tar -czf dirname_`date '+%Y%m%d'`.tar.gz %d

The archive is missing because %m, and %d has another meaning in MC.
I made an alias for the date, but it also doesn't work.

Does anybody solved this problem ever?

Best Answer

To escape the percent signs, double them:

tar -czf dirname_$(date '+%%Y%%m%%d').tar.gz %d

The above would compress the current directory (%d) to a file also in the current directory. If you want to compress the directory pointed to by the cursor rather than the current directory, use %f instead:

tar -czf %f_$(date '+%%Y%%m%%d').tar.gz %f

mc handles escaping of special characters so there is no need to put %f in quotes.

By the way, midnight commander's special treatment of percent signs occurs not just in the user menu file but also at the command line. This is an issue when using shell commands with constructs like ${var%.c}. At the command line, the same as in the user menu file, percent signs can be escaped by doubling them.

Related Question