Как сделать завершение командной строки с файлами и папками

[1132009] Дополнение к ответу Дженни Ди, из [1132446] man ssh[1132447]:

Я думаю, что разрешение на [1132448].ssh[1132449] изначально "свободное", но оно ограничено разрешением файла с закрытым ключом, поэтому вы не можете дать [1132450].ssh[1132451] разрешение на запись группе или другой.[1132012]

1
28.08.2014, 01:53
3 ответа

Я использую bash , и на вкладке также происходит завершение имени файла.

Но для конкретного примера, который вы взяли - длинных имен файлов, если у вас есть много файлов с одинаковым префиксом в каталоге, много вкладок потребуется, чтобы добраться до файл!

Я столкнулся с аналогичной проблемой с одной кодовой базой, с которой я работал, и обходной путь, который я создал для себя, заключался в том, чтобы иметь псевдоним + комбинацию скриптов Perl, которой я бы дал только первые буквы , из слов в имени файла. Например,

$ ls
elementary_differentail_equations.pdf # 1
elementary_differentail_equations_and_boundary_value_problems.pdf # 2
elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf # 3

$ opdf e d e                      # opens 1
$ opdf e d e a b v p              # opens 2
$ opdf e d e a b v p 9 b d        # opens 3

, где opdf - это псевдоним (скажем), который ищет только расширение .pdf .

2
27.01.2020, 23:21

Виртуальные интерфейсы можно создать с помощью инструментария iproute2 .

ip link add veth0 type veth peer name veth1

Это приведет к созданию 2 интерфейсов veth0 и veth1 . Подумайте о них 2 как о концах трубы. Любой трафик, отправленный в veth0 , будет исходить из veth1 и наоборот.

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

sysctl -w net.ipv4.conf.veth0.forwarding=1

Это позволит ядру пересылать трафик, поступающий от veth0 (поэтому используйте veth1 для используемой конечной точки).

Другой вариант - установка моста с veth0 и другим интерфейсом. Тогда любой трафик, поступающий через виртуальный интерфейс, будет направляться в сеть, как если бы ваша машина просто действовала как коммутатор.

Есть много других вещей, которые вы можете сделать с этим трафиком (маскировать его, перенаправлять, DNAT и т.д.), но это зависит от того, что вы пытаетесь сделать.

Чтобы разорвать его:

ip link del veth0
-121--5767-

man xmodmap говорит:

Список имен ключей можно найти в файле заголовка < X11/keysymdef.h > (без префикса XK_), дополненный базой данных/ usr/local/share/X11/XKeysymDB ключей.

Для вашего примера, соответствующая строка X11/keysymdef.h:

 #define XK_rightdoublequotemark          0x0ad3  /* U+201D RIGHT DOUBLE QUOTATION MARK */

Последние версии этого файла имеют заголовок комментария, который описывает, как надежно проанализировать его с помощью Perl /etc. для любых необходимых действий машины, включая создание таблицы обратного хода.

-121--76477-

При использовании Bash и его способности выполнять завершение с помощью клавиши Tab существует 2 аспектов завершения, которые могут путаться.

Если ввести букву в подсказке и перейти на Tab , вы заметите описываемое поведение.

Пример

$ el Tab

el4-rpmlint  el5-rpmlint  elbadmin     elfedit      elif    elinks    else

Это поиск в системе $ PATH и представление исполняемых файлов, соответствующих критериям поиска, т.е. el .

Однако при наличии каталога таких файлов, как приведенный ниже, можно использовать те же самые возможности завершения с помощью Tab .

Примеры файлов:

$ ls -1
efile.pdf
elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf
elements1.pdf

Пример

Делать этом:

$ ls el Tab

Bash автозавершит это до слова элемент . В этот пункт она остановится, так как это самая большая последовательность, которая является общей для группы файлов (или одного файла) в текущем каталоге. Если вы дважды нажмете Tab , Bash выведет список файлов, соответствующих этому элементу:

$ ls element Tab Tab elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf elements1.pdf

$ ls element

После этого вы вернетесь в то же место в приглашении. Баш в основном сделал ls элемент * для вас в тот момент. Если ввести букву или две, чтобы помочь Bash в том, какой файл вы хотите из подмножества он представил вам и нажмите Tab еще раз, он попытается сопоставить некоторые из ваших файлов с вашим расширенным рядом теперь в ответ на запрос:

$ ls elementa Tab

Будет достаточно, чтобы получить остальное имя файла:

$ ls elementary_differentail_equations_and_boundary_value_problems_9ed_boyce_diprima.pdf

2
27.01.2020, 23:21

Альтернативный подход к деталям вашего вопроса о том, чего вы действительно пытаетесь достичь: меньше печатать.

Вы также можете обнаружить, что хорошие псевдонимы позволяют использовать лучшее из обоих миров, то есть длинные имена папок. Мне нравятся длинные имена папок, и мне также нравятся короткие имена для набора текста, и я добиваюсь этого с помощью таких псевдонимов, как:

alias zab='cd ~/mycar/activerecord-boolean-converter'
alias q='cd ~/Dropbox/95_2014/work/code/ruby__rails/ruby/ruby_quiz'
alias dummy='cd ~/zipcar/zipcar-rails-core/spec/dummy'

Затем я просто набираю, например, q , затем нажимаю return

0
27.01.2020, 23:21

Теги

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