Попробуйте использовать:
test -x filename
или
[ -x filename ]
Из справочной страницы bash в разделе Условные выражения :
-x file True if file exists and is executable.
Также есть 'paredit
. В шпаргалке показаны все доступные команды. Мне это нравится больше, чем электрический режим, предложенный в другом ответе. Хотя paredit применяется только к (), поэтому он может не соответствовать вашим потребностям.
Но, честно говоря, есть несколько пакетов, окружающих скобки. В вики они все перечислены здесь . Режимы, в которых рассматривается ваш вопрос:
да, этот режим называется электрическим . Вы можете комбинировать электрическое поведение с этим простым макросом для максимального комфорта:
(defun electric-pair ()
"If at end of line, insert character pair without surrounding spaces.
Otherwise, just insert the typed character."
(interactive)
(if (eolp) (let (parens-require-spaces) (insert-pair))
(self-insert-command 1)))
Затем включите его, привязав к нему соответствующие символы в ваших любимых режимах программирования. Например, для PythonMode:
(add-hook 'python-mode-hook
(lambda ()
(define-key python-mode-map "\"" 'electric-pair)
(define-key python-mode-map "\'" 'electric-pair)
(define-key python-mode-map "(" 'electric-pair)
(define-key python-mode-map "[" 'electric-pair)
(define-key python-mode-map "{" 'electric-pair)))
Режим CPerl предоставляет это как встроенную функцию:
;; from my .emacs
(add-hook 'cperl-mode-hook
(lambda ()
(setq cperl-hairy nil
abbrev-mode t ;; automatic keyword expansion
cperl-highlight-variables-indiscriminately t
cperl-auto-newline t
cperl-auto-newline-after-colon t
cperl-regexp-scan nil
cperl-electric-keywords t
cperl-electric-linefeed t
cperl-electric-parens nil) ;; <------ electric parens!
Другие режимы могут предоставлять нечто подобное.
cmarcelo has written a wonderful post about this using skeleton mode. He also shows how to remove the balanced bracket if you delete the opening bracket and how to deal with the case that you accidentally type the closing bracket. (Incidentally both behaviors copy TextMate).
Update:
Since I posted this answer, I've discovered Autopair which is a pretty much perfect system for this use case. I've been using it a lot and loving it.