2013-10-14 7 views
4

В bash, я использовал # для ввода комментария. Даже на интерактивной сессии.Как добавить комментарий к csh?

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

csh ошибка слюны для этого. Как я могу вставить комментарий к интерактивной сессии csh? Другими словами, я ищу способ сделать 100% уверенным комментарием в csh.

[email protected]:~ # # 
#: Command not found. 
[email protected]:~ # # 3e 
#: Command not found. 
[email protected]:~ # # 
#: Command not found. 
[email protected]:~ # 
+0

Просто для удовольствия в интерактивном csh вы можете удалить все файлы, заканчивающиеся хэшем с 'rm * #'. Поместите это в скрипт и что-то другое произойдет. – agentp

+0

@george Если это правда, это действительно ужасно! И я не хочу это доказывать сам! – Eonil

+0

о, да, что-то, что я много лет назад усвоил, создав скрипт для очистки файлов autosave emacs .. bash, похоже, нуждается в пробеле перед #, чтобы указать комментарий кстати. – agentp

ответ

4

Интерактивный csh или tcsh не делает комментарии. Символ # вводит комментарий только в сценарии. (Это в отличии от поведения ш и ее производных, таких как Баш.) Цитирование страницы csh человека (от Solaris 9, одной из остальных систем, в которых csh это не просто символическая ссылка на tcsh):

При вход оболочки не является терминалом, символ # вводит комментарий, который продолжается до конца строки ввода. Его особое значение подавляется, когда предшествует символ \ или заключен в соответствующие кавычки в .

Я считаю, что интерактивные команды не нуждаются в комментариях.

Если вы используете Tcsh, вы можете сделать что-то подобное с помощью встроенного : команды, которая ничего не делает:

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

(где % представляет приглашение оболочки и : является команда) , Цитирование аргумента - хорошая идея; в противном случае, если команда не выполняется, это может иметь какой-то эффект:

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

Заметим, что поскольку : является команда, она должна быть затем пробел.

Команда : была первоначально представлена ​​в очень ранней версии оболочки Bourne или, возможно, еще до этого.

Однако версия команды :/bin/csh не допускает каких-либо аргументов, что делает его бесполезным в качестве комментария замены:

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

(я не понимал, что, когда я первоначально отправил этот ответ я должен. . протестировали его с Tcsh, а не истинный CSH)

Поскольку : не работает в чистом CSH, следующий лучшим решением является, вероятно, использовать echo и перенаправить вывод:

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

Обязательная ссылка: http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot

+0

Думаю, теперь я понимаю, почему люди перестают использовать 'csh'. И просто для заметки, я хотел это для копирования и вставки большого количества кода, как быстрый REPL. – Eonil

+0

Не знаете, почему это было занижено ... – SethMMorton

+0

@SethMMorton: Не знаю, почему этот и не связанный с моим ответом ответ были отведены на 12 секунд. Совпадение? –

1

Для справки, я хотел бы отметить, мой текущий обходной путь. Он использует echo.

#!/bin/tcsh 
echo "This is comment line." 
echo "But still, beware... Because `expression` is still being evaluated. 

Это лучший способ найти меня.

+0

Если это в скрипте, что подразумевается в строке '#!/Bin/tcsh', вы можете просто использовать обычные комментарии' # '. –

-1

Проверьте, имеет ли ваш сценарий UNIX EOL Format. Имеет некоторые проблемы с Windows EOL Format.

0

Чтобы использовать # для интерактивных комментариев в Tcsh или CSH, это, кажется, работает в большинстве случаев:

alias '#' 'echo \!* >> /dev/null' 

Он может быть запущен пользователем в интерактивном режиме или помещены в .tcshrc или .cshrc конфигурационный файл.

(псевдоним, очевидно, можно назвать по-другому, как вы могли бы желать, нормальные ограничения.)


Примечание: как уже отмечалось выше, Кейт Томпсон, это все равно будет давать ошибки, если ваш комментарий включает переадресацию символы таких как > или >>, но этот способ, по-видимому, фактически не создает нежелательный файл перенаправления. Окрестность комментария в одинарных кавычках (') все же является обходным решением.

Смежные вопросы