Да, в tcsh это возможно (в отличие от оболочек в стиле Bourne -, где вместо этого вам нужно использовать функцию ). Вам нужно поместить !*
в текст псевдонима, чтобы заменить параметры, переданные псевдониму, и после этого может быть еще что-то.
alias emacs 'emacs \!* &'
Полезнее использовать встроенный сервер. Начиная с Emacs 22 (IIRC ), вы можете легко запустить emacsclient
и запустить Emacs, если он еще не запущен. (В более ранних версияхemacsclient
существует, но менее полезен.)
alias e 'emacsclient -a "" \!* &'
А если Emacs работает, и вы просто хотите открыть новое окно, тогда нет необходимости запускать emacsclient в фоновом режиме :скажите ему открыть файл в существующем экземпляре Emacs и выйти.
alias e 'emacsclient -a "" -c \!*'
С помощью sed
можно использовать обратные ссылки на совпадающие шаблоны:
sed 's/\(PATTERN1\)\(PATTERN2\)/\2\n\1/'
Поменяет местами два шаблона и добавит новую строку между ними. ШАБЛОН1 будет, например. ^.*
т. е. любые символы с начала строки, ШАБЛОН2 #.*$
т. е. символ решетки, за которым следует любое количество символов до конца строки.
Для удаления лишних пробелов можно добавить это:
's/ *$//'
Лучше также позаботиться о комментариях с #
в их собственном тексте, исключив символ в совпадении для первой части через [^#]
, то есть любые символы, которые НЕ #
. В совокупности это составляет:
sed 's/\(^[^#]*\)\(#.*$\)/\2\n\1/;s/ *$//'
Использование GNU awk для третьего аргумента для match()
и \S/\s
сокращения:
$ awk 'match($0,/([^#]*\S)\s*(#.*)/,a) { $0=a[2] ORS a[1] } 1' file
#description of command....
auditctl -a always,exit -F arch=b64 -S openat -F auid=1000
#long description
auditctl -a....
или с любым POSIX awk:
$ awk 'match($0,/[[:space:]]*#/) { $0=substr($0,RSTART+RLENGTH-1) ORS substr($0,1,RSTART-1) } 1' file
#description of # command....
auditctl -a always,exit -F arch=b64 -S openat -F auid=1000
#long description
auditctl -a....
Обратите внимание, что описанное выше будет работать независимо от того, какие символы содержит комментарий, включая #
, и есть ли пробелы перед комментарием или нет, и он удалит все пробелы, предшествующие -, в конце комментария. остаток строки перед печатью.