Shell: “Отобразите все 2 588 возможностей?”

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

Эффективно это комбинирует/обновляет каталог.

Без rmлуг каталог до разархивации, я вполне уверен, Вы не можете достигнуть того, что Вы пытаетесь сделать.

Перезапись весь режим, который Вы отсылаете к (-o), просто перезапишет файлы без спроса.

16
25.12.2014, 10:02
6 ответов

Нажатие клавиши TAB поможет вам автоматически выполнить либо команду, либо файл/директорию (если она является исполняемой), которую вы хотите использовать, в зависимости от того, что вы запрашиваете.

Двойное нажатие клавиши TAB помогает отобразить доступные материалы, которые можно использовать в дальнейшем.

например,

Завершение команды:

Я хочу отредактировать кронтаб. Нажав cront и нажав TAB, я увижу, что моя команда завершена: crontab.

Завершение файла/директории:

Я хочу создать резервную копию crontab. crontab -l >> Введите несколько слов назначения /ho TAB и я увижу: /home/, введите следующее us TAB и я увижу: /home/user/

Теперь, когда вы дважды нажмете кнопку TAB, не набирая ничего, то подсказка что-то ожидает, так что она поможет вам отобразить все возможности. Когда подсказка пуста, она ожидает команду или файл/каталог, поэтому она захочет отобразить все доступные для вас команды и все файлы/каталоги, расположенные в том каталоге, в котором вы находитесь.

Вывод 2588 возможностей означает общее количество команд/файлов/каталогов, доступных для ввода.

23
27.01.2020, 19:47

Нажатие Tab Два или более раз подряд покажет вам это.

7
27.01.2020, 19:47

Если вы запустите IBUS-Setup и проверьте «Использовать компоновку системы» ( Если я помню правильно), он не переопределит настройки системы.

Вы упомянули, что XModmap устарел, но вы все равно можете использовать его. Вы также можете использовать SetXKBMAP или XKBCOMP , которые не устарели.

-121--139858-

, который произойдет при ударе клавиши космоса (невидимой), а затем дважды клавиша вкладки (завершение Bash). Возможности 2588 для отображения, вероятно, являются файлами / каталогами в вашем текущем каталоге рабочего времени при ударе комбинации ключей завершения пространства + Bash.

16
27.01.2020, 19:47

Да, это возможно.

Посмотрите на эту полезную вики-страницу от Fedora , которая объясняет, что «скрипты» перед и после сборки принимают аргумент, который передается им, когда они запускаются как часть установки RPM.

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

-121--111684-

Это кажется, что это можно сделать более простым способом, но лучшее, что я могу придумать после часа царапания головы, это этот скрипт python :

#! /usr/bin/env python3

import sys, os

class Block:
    block_id = ''
    source1 = ''
    source2 = ''
    mixtures = []
    def __init__(self, block_id = '', source1 = '', source2 = '', mixtures = []):
        self.block_id = block_id
        self.mixtures = mixtures
        self.source1 = source1
        self.source2 = source2

        # Convert mixtures to a set of characters. For example, 
        #     ''.join(["AT", "TT"]) 
        # creates the string "ATTT". set() then converts that string to 
        # a set of characters {'A', 'T'}
        sources = set(''.join(mixtures))

        # If a source is empty, we take from the set the first element (pop()) 
        # after removing the other source (difference()). Since the set 
        # contains single characters, we double it to get "AA", "TT", etc.
        if self.source1 == '':
            self.source1 = sources.difference(set(self.source2)).pop()*2
        sources.remove (self.source1[0])
        if self.source2 == '':
            self.source2 = sources.pop()*2

    def print (self):
        print (self.block_id, "source1", self.source1)
        print (self.block_id, "source2", self.source2)
        for mix in self.mixtures:
            print (self.block_id, "mixture", mix)

if len(sys.argv) == 1:
    files = [os.stdin]
else:
    files = (open(f) for f in sys.argv[1:])

for f in files:
    # Read in all the lines
    data = [line for rawline in f for line in [rawline.strip().split(' ')]]
    # Get the unique block IDs
    blocks = set (lines[0] for line in data)
    # For each block ID
    for b in blocks:
        # The corresponding mixtures
        mix = [line[2] for line in data if line[0] == b and "mixture" == line[1]]

        # If "source1 XX" is present, we will get the list ['XX'], and [] if 
        # source1 is not present. ''.join() allows us to flatten ['XX']  to 
        # just 'XX' (and doesn't affect []). Similarly for source2.
        source1 = ''.join(d[2] for line in data if line[0] == b and "source1" == line[1])
        source2 = ''.join(d[2] for line in data if line[0] == b and "source2" == line[1])

        # Create an object of the class defined above, and print it.
        # Initialization fills up the blank values.
        Block(b, source1, source2, mix).print()

Даже тогда это обеспечит случайный, неупорядоченный вывод (т.е. block3 данные могут прийти до block1

Сохраните это в сценарии (скажем, insert.py ) и запустите:

python3 insert.py inputfile

Я переписал это в awk :

#! /usr/bin/awk -f

function build (block, source1, source2, sources, mixtures)
{       
    if (! source1)
    {
        for (char in sources)
        {
            if (source2 != char char)
            {
                source1 = char char
                delete sources[char]
                break
            }
        }
    }
    if (! source2)
    {   
        for (char in sources)
        {
            if (source1 != char char)
            {
                source2 = char char
                delete sources[char]
                break
            }
        }
    }
    printf "%s %s %s\n", block, "source1", source1
    printf "%s %s %s\n", block, "source2", source2
    for (m in mixtures)
    {
        for (i = 0; i < mixtures[m]; i++)
        {
            printf "%s %s %s\n", block, "mixture", m
        }
    }

}

{
    if (prev != $1)
    {
        if (prev in data)
        {
            build(prev, source1, source2, sources, mixtures)
        }

        prev = $1
        source1 = ""
        source2 = ""
        delete sources
        delete mixtures
    }

    data[$1]++
    if ($2 == "source1") {source1 = $3; next}
    if ($2 == "source2") {source2 = $3; next}
    if ($2 == "mixture")
    {
        mixtures[$3]++ 
        split ($3, chars, "")
        for (i=1; i <= length($3); i++)
        {
            sources[chars[i]]++
        }
    }
}

END { build(prev, source1, source2, sources, mixtures) }

Сохраните это в сценарии (скажем insert.awk ), chmod + x и запустите его:

./insert.awk inputfile

Теперь он также должен сохранить порядок. Обратите внимание, что я использовал delete , который может отсутствовать в некоторых пробуждениях (но должен находиться в GNU awk и mawk).

-121--90882-

В соответствии с https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html

При попытке завершения слова для аргумента команды для какая спецификация завершения (compspec) была определена с помощью полное построение (см. Программируемые построения завершения), вызываются программируемые средства завершения.

0
27.01.2020, 19:47

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

«\ T» получает колокол

«\ T», получает колокол

«\ T \ T» получает список каталогов

«\ T \ T» получает отображение всех возможностей (а затем Если я ударю "\ t" после этого в новой командировке, я получу это снова вместо звонка)

2
27.01.2020, 19:47

При трехкратном нажатии клавиши Esc отобразится это сообщение.

0
27.01.2020, 19:47

Теги

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