Общесистемные псевдонимы

Решения:

  1. Мне нужно удалить только закрывающий тег из первого файла, решение:

    sed -i.bak -e 's/<\/ns0:collection>/ /' -e 's/<\/Record>/ /' n0
    
  2. удалить оба <?xml version="1.0" encoding="UTF-8" ?><ns0:collection xmlns:ns0="http://namspace/Service/1.0">и </ns0:collection>в следующих (n -1 )файлах:

    sed -i.bak -e 's/<?xml version=1.0 encoding=UTF-8 ?>.*<ns0:collection/ /' -e 's/xmlns.*/ /' -e 's/<\/R.*>.*>/ /' n1
    
    • То же самое для диапазона имен файлов:

      find. -type f -name "n[1-3]" -exec sed i.bak -e 's/<?xml version=1.0 encoding=UTF-8 ?>.*<ns0:collection/ /' -e 's/xmlns.*/ /' -e 's/<\/R.*>.*>/ /' {} \;
      
  3. Приходится удалять только в последнем файле и объединять все вместе:

    sed i.bak -e 's/<?xml version=1.0 encoding=UTF-8 ?>.*<ns0:collection/ /' -e 's/xmlns.*/ /' ne
    

Тогда, наконец, присоединяйтесь к ним:

cat n0 n[1-3] ne > joined

Я использовал следующие файлы :n0, n1, n2, n3и ne. Я добавил следующий текст в каждый:

<?xml version="1.0" encoding="UTF-8" ?><ns0:collection
xmlns:ns0="http://namspace/Service/1.0"><Record>
hello from nigeria
</Record></ns0:collection>

Полученный файл joinedвыглядел так, как показано ниже:

<?xml version="1.0" encoding="UTF-8" ?><ns0:collection
xmlns:ns0="http://namspace/Service/1.0"><Record>
hello from nigeria



hello from nigeria



hello from nigeria



hello from nigeria



hello from nigeria
</Record></ns0:collection>

Примечание:

  1. Я вижу из первой проблемы, что вам нужно удалить оба </Record></ns0:collection>, а не только </ns0:collection>. Я позволил себе это сделать, иначе у нас была бы дублирующаяся запись </Record>при объединении файлов.

  2. Имена файлов здесь должны быть изменены вами, чтобы вы могли выполнить одну команду над ними всеми, здесь я использовал n[1-3]. Выберите то, что лучше всего работает для вас.

  3. ПОЖАЛУЙСТА, ЗАПУСТИТЕ ТЕСТ И ПОСМОТРИТЕ РЕЗУЛЬТАТЫ , здесь я использовал i.bak, поэтому sedавтоматически создает резервную копию.

0
24.01.2020, 07:07
2 ответа

Заголовок вашего вопроса вводит в заблуждение, потому что проблема, которую вы описываете, связана не с псевдонимами оболочки, а скорее с тем, как ваша система обрабатывает установленные приложения.

Система Desktop Entries freedesktop.org — это то, что вам нужно.

Вы упомянули «Whisker Menu» (средство запуска приложений для Xfce ), так что вполне вероятно, что вы используете среду рабочего стола Xfce. Одной из целей Xfce является «соблюдение стандартов, в частности тех, которые определены на freedesktop.org». Таким образом, вместо изменения переменной PATH, создания скриптов-оболочек и т. д. Вы можете использовать этот стандарт для создания пользовательской -или общесистемной -«записи рабочего стола», чтобы переопределить тему gtk для любого конкретного приложения.

Три шага для добавления пользовательской записи для кодовых блоков:

  1. скопируйте предоставленный файл записи рабочего стола системы /usr/share/applications/codeblocks.desktopв каталог~/.local/share/applications
  2. отредактируйте ~/.local/share/applications/codeblocks.desktop, добавив переменную среды env GTK_THEME=Adwaita:lightпосле клавиши Exec, чтобы строка читалась как:
Exec=env GTK_THEME=Adwaita:light codeblocks %F
  1. создайте файл mimeinfo.cache для этого каталога, выполнив следующую команду:update-desktop-database ~/.local/share/applications

Или все это можно сделать всего за ОДИН шаг с помощью:

desktop-file-install --dir="$HOME/.local/share/applications" --rebuild-mime-info-cache --set-key=Exec --set-value='env GTK_THEME=Adwaita:light codeblocks %F' /usr/share/applications/codeblocks.desktop
0
28.01.2020, 02:29

Псевдонимы Bash вызываются только при запуске bash, поэтому то, что вы пробовали, не сработает. Создайте сценарий, который запускает вашу команду с псевдонимом, и поместите его в каталог, который находится вверху вашего $PATH; Например, $HOME/bin. Возможно, вам придется сначала выйти из системы, но это должно сработать.

3
28.01.2020, 02:29

Теги

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