Почему я не могу использовать вкладку, expansion/auto-complete из переменных оболочки с CD?

[Centos-6 | Ubuntu 12.10] Этот cmd печатают 4 главных вида процессов ИСПОЛЬЗОВАНИЕМ ЦП

top -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5

Вывод

%CPU      %MEM      COMMAND
7.7       0.2       top
0.0       0.3       init
0.0       0.0       kthreadd
0.0       0.0       migration/0

Примечание: главный-n 5 вместо 4, потому что у нас также есть имя столбца

столбцы 9$, 10$, 12$ означают ЦП, MEM, КОМАНДУ. Используйте 'главную' команду для получения номеров столбцов

Вид ИСПОЛЬЗОВАНИЕМ ПАМЯТИ (Ваша 'вершина' должна поддерживать-m для выполнения этого),

# this work on my centos-6 machine, NOT work on my Ubuntu 12.10
top -m -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5
4
24.09.2014, 02:23
5 ответов

Нет, rsync синхронизирует файлы только в одном направлении. Подумайте об этом как об умной и более способной версии cp (или mv при использовании опции --remove-source-files ): умный в том смысле, что он пытается пропустить данные, которые уже существуют в месте назначения, и способен в том смысле, что он может сделать несколько вещей cp не делает, например, удаление файлов в месте назначения, которые были удалены в источнике. Но в своей основе он действительно делает то же самое, копируя из источника в пункт назначения.

Как Патрик упомянул в комментарии, unison будет делать то, что вы ищете, обновляя в обоих направлениях. Однако это не стандартный инструмент - во многих UNIX-подобных системах будет установлено rsync , но обычно не unison . Но в дистрибутиве Linux его можно найти в менеджере пакетов.

-121--80570-

Простой ответ для вас будет

$ cd into /etc/bash_completion.d
$ ls

только основные выходы

autoconf       gpg2               ntpdate           shadow
automake       gzip               open-iscsi        smartctl
bash-builtins  iconv              openssl           sqlite3
bind-utils     iftop              perl              ssh
brctl          ifupdown           pkg-config        strace
bzip2          info               pm-utils          subscription-manager
chkconfig      ipmitool           postfix           tar
configure      iproute2           procps            tcpdump
coreutils      iptables           python            util-linux
cpio           lsof               quota-tools       wireless-tools
crontab        lvm                redefine_filedir  xmllint
cryptsetup     lzma               rfkill            xmlwf
dd             make               rpm               xz
dhclient       man                rsync             yum.bash
e2fsprogs      mdadm              scl.bash          yum-utils.bash
findutils      module-init-tools  service
getent         net-tools          sh

просто добавить вашу нужную программу к автозавершению, чтобы bash completion

-121--19149-

Возможно, у вас нет каталогов в /path/to/some/dir/? Я только что попробовал cd $ SOME _ DIR/[ tab] на моей системе и это сработало.

0
27.01.2020, 21:00

В Cygwin у меня была такая же проблема, и мне пришлось заключить переменную оболочки в кавычки. Так, например, cd $ccc не расширился бы, а cd "$ccc", и Ваш курсор все еще находится перед правой кавычкой.

1
27.01.2020, 21:00

Единственный способ расширить переменную для меня - добавить слеш в конец:

$ cd $SOME_DIR[tab] ## fails
$ cd $SOME_DIR/[tab] ## works

Я получаю точно такое же поведение с cd или ls. Могли бы вы добавить косую черту и затуманить ее в другой?

.
0
27.01.2020, 21:00

У меня почти такая же проблема с (старым) bash 4.2.37, а не с bash 4.3 или 4.4.
То есть: расширение работает с ls , но не с cd .


Однако в качестве вспомогательной привязки клавиш я определил (из e S pand):

Ctrl - s в моем ~ / .inputrc :

Control-s: shell-expand-line

Это позволяет мне набрать: cd $ SOME_DIR , а затем Ctrl - s , чтобы расширить переменную до:

cd /path/to/some/dir

A Не менее полезное сочетание клавиш (из G лоббирование):

Ctrl - g также в моем ~ / .inputrc :

Control-g: glob-expand-word

Это позволяет мне набрать ls b * , а затем Ctrl - g , чтобы развернуть b * :

$ ls b*<kbd>Ctrl</kbd>-<kbd>s</kbd>
$ ls bash.html_node.tar.gz bash.pdf

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

0
27.01.2020, 21:00

Очевидно, shopt -s direxpand работает со всем, кроме встроенного cd. Поэтому я просто добавил alias xy=cd в свой профиль, и xy работает так же, как cd, за исключением того, что direxpand работает с использованием TAB. (Кто бы мог подумать, что это будет так просто?)

1
27.01.2020, 21:00

Теги

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