Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to input a comment on csh?

Tags:

comments

csh

In bash, I used # to input comment. Even on interactive session.

bash-3.2$ #
bash-3.2$ #
bash-3.2$ #
bash-3.2$ 

csh spits error for this. How can I input some comment on interactive csh session? In other words, I am looking for a way to make 100% sure comment in csh.

root@freebsd9:~ # #
#: Command not found.
root@freebsd9:~ # # 3e
#: Command not found.
root@freebsd9:~ # #
#: Command not found.
root@freebsd9:~ # 
like image 638
eonil Avatar asked Oct 14 '13 16:10

eonil


1 Answers

Interactive csh or tcsh doesn't do comments. The # character introduces a comment only in a script. (This is unlike the behavior of sh and its derivatives, such as bash.) Quoting the csh man page (from Solaris 9, one of the remaining systems where csh is not just a symlink to tcsh):

When the shell's input is not a terminal, the character # introduces a comment that continues to the end of the input line. Its special meaning is suppressed when preceded by a \ or enclosed in matching quotes.

The point, I think, is that interactive commands don't need comments.

If you're using tcsh, you can do something similar with the built-in : command, which does nothing:

% : 'This is not a comment, but it acts like one.'

(where % represents the shell prompt and : is the command). Quoting the argument is a good idea; otherwise, though the command is not executed, it can have some effect:

% : This will create the file "oops.txt" > oops.txt

Note that since : is a command, it must be followed by a space.

The : command was originally introduced in a very early version of the Bourne shell, or perhaps even before that.

However, the /bin/csh version of the : command does not permit any arguments, making it useless as a comment replacement:

csh% : 'This will not work.'
:: Too many arguments
csh% 

(I didn't realize that when I initially posted this answer. I must have tested it with tcsh rather than a true csh.)

Since : doesn't work in pure csh, the next best solution is probably to use echo and redirect the output:

csh% echo 'This is not a comment, but it acts like one.' > /dev/null

Obligatory link: http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot

like image 144
Keith Thompson Avatar answered Sep 23 '22 18:09

Keith Thompson