Как я могу CD, а затем Ls в моем CSHRC

Я пытался выполнить перенастройку параметров LDAP по сценарию (пакет ldap-auth-config) с помощью debconf-get-selections / set-selections, упомянутый выше, только для того, чтобы обнаружить, что этот пакет игнорирует настройки в debconf после начальной установки. Вы можете использовать debconf для предварительного заполнения перед установкой, но после установки ldap-auth-config предпочитает перезаписывать ваши настройки debconf тем, что установлено в файлах конфигурации системы, которыми он управляет. Пакет pam-auth-config ведет себя так же.

Механизм EDITOR / VISUAL также трудно использовать в этом случае, потому что ldap-auth-config вызывает его несколько раз для разных наборов вопросов. С этим можно легче справиться с помощью сценария ожидания или путем прямого изменения файлов конфигурации системы. Так что не всегда легко избежать ожидания!

1
11.12.2018, 23:20
1 ответ

Вы были очень-очень близки. Unix любит обратную косую черту; Unix ест обратную косую черту на завтрак. Вам нужно

alias cs 'cd \!:1; ls'

Если вы посмотрите документацию для csh (и его потомков ), вы увидите, что !относится к механизму истории, который позволяет вам ссылаться на предыдущую команду (s ). Самый простой пример — !!, который вызывает и повторяет самую последнюю команду. !:1означает слово #1 из указанной команды (где самой командой является слово #0; так, например, в grep needle *.txt, !:0— это grep, а !:1— этоneedle).

Bash и другие потомки оболочки Bourne имеют функцию это очень похоже.

Псевдонимы оболочки C немного странные. Когда вы запускаете псевдоним, введенная вами команда (например,cs vacation_photographs)рассматривается как "предыдущая команда". Итак, когда псевдоним запускается, !:1заменяется на vacation_photographs.

Загвоздка в том, что это происходит , когда псевдоним запускается . Но расширение истории происходит, когда псевдоним такжеопределен . Так, например, если ваш .cshrcговорит

set prompt = '% '
alias cs 'cd !:1; ls'

, тогда !:1оцениваетсякак prompt, а псевдоним определяется как cd prompt; ls. Чтобы иметь возможность ссылаться на команду, которую вы набрали (vacation_photographs), вам нужно определить псевдоним как cd !:1; ls, и поэтому вам нужно использовать обратную косую черту отложить интерпретацию !:1, поэтому он будет оцениваться при запуске псевдонима вместо того, когда он определен.

Если вы занимались

alias cs 'cd !:1; ls'

и ничего не делает ничего(даже не выдает сообщение об ошибке ), Я не могу этого объяснить.

1
27.01.2020, 23:42

Теги

Похожие вопросы