При выполнении чего-то вроде этого это никогда не будет заменять каталог, если это будет существовать, то это создаст любые файлы в каталоге, которые уже не существуют и заменяют любые файлы, которые делают.
Эффективно это комбинирует/обновляет каталог.
Без rm
луг каталог до разархивации, я вполне уверен, Вы не можете достигнуть того, что Вы пытаетесь сделать.
Перезапись весь режим, который Вы отсылаете к (-o), просто перезапишет файлы без спроса.
Нажатие клавиши TAB поможет вам автоматически выполнить либо команду, либо файл/директорию (если она является исполняемой), которую вы хотите использовать, в зависимости от того, что вы запрашиваете.
Двойное нажатие клавиши TAB помогает отобразить доступные материалы, которые можно использовать в дальнейшем.
например,
Завершение команды:
Я хочу отредактировать кронтаб. Нажав cront
и нажав TAB, я увижу, что моя команда завершена: crontab
.
Завершение файла/директории:
Я хочу создать резервную копию crontab. crontab -l >>
Введите несколько слов назначения /ho
TAB и я увижу: /home/
, введите следующее us
TAB и я увижу: /home/user/
Теперь, когда вы дважды нажмете кнопку TAB, не набирая ничего, то подсказка что-то ожидает, так что она поможет вам отобразить все возможности. Когда подсказка пуста, она ожидает команду или файл/каталог, поэтому она захочет отобразить все доступные для вас команды и все файлы/каталоги, расположенные в том каталоге, в котором вы находитесь.
Вывод 2588 возможностей
означает общее количество команд/файлов/каталогов, доступных для ввода.
Если вы запустите IBUS-Setup
и проверьте «Использовать компоновку системы» ( Если я помню правильно), он не переопределит настройки системы.
Вы упомянули, что XModmap
устарел, но вы все равно можете использовать его. Вы также можете использовать SetXKBMAP
или XKBCOMP
, которые не устарели.
, который произойдет при ударе клавиши космоса (невидимой), а затем дважды клавиша вкладки (завершение Bash). Возможности 2588 для отображения, вероятно, являются файлами / каталогами в вашем текущем каталоге рабочего времени при ударе комбинации ключей завершения пространства + Bash.
Да, это возможно.
Посмотрите на эту полезную вики-страницу от 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).
В соответствии с https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html
При попытке завершения слова для аргумента команды для какая спецификация завершения (compspec) была определена с помощью полное построение (см. Программируемые построения завершения), вызываются программируемые средства завершения.
Я использую заполнение вкладки все время, чтобы сохранить в печати. Полностью не думал об этом, когда я не заканчиваю командную строку.
«\ T» получает колокол
«\ T», получает колокол
«\ T \ T» получает список каталогов
«\ T \ T» получает отображение всех возможностей (а затем Если я ударю "\ t" после этого в новой командировке, я получу это снова вместо звонка)