пользовательские действия Немо / колотят сценарий

Почему вы так уверены, что вам это не нужно? Возможно, другие пакеты зависят от него, он не используется исключительно для настройки MySQL Server, некоторые программы управляют своими внутренними DBS, используя его, например.

Теперь, чтобы ответить на ваш вопрос, первый шаг действительно выясняет, какой пакет установил эти файлы:

$ dpkg -S /usr/bin/mysql
mysql-client-core-5.5: /usr/bin/mysql

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

В основном две пакеты, которые вы удалили, являются как мета-пакетами , которые указывают на другие пакеты. Итак, когда вы их удалили, вы только удалили фиктивную упаковку, а не все, что было установлено с ними. Чтобы удалить все, связанные с MySQL, запустите это:

sudo apt-get remove --purge mysql-*

1
18.04.2015, 18:51
1 ответ

Проблема:

Ваша проблема в том, что настолько банальна, что %F - это имя файла, а имя файла содержит пробелы, поэтому вы вызываете скрипт таким образом:

normalize.sh my fancy file

Итак, $1 становится моим , $2 становится причудливым и $3 становится файлом . Теперь $# становится 3.


Исправить 1 (рекомендуется):

Чтобы исправить это, не нужно проверять количество аргументов. Тогда можно использовать $@ вместо $1. Скрипт будет выглядеть следующим образом:

#!/usr/bin/bash

name=`echo "$@" | sed "s/\ /\_/g"`
mv "$@" "$name"

exit 0

Исправление 2:

Другое решение - поместить кавычки вокруг %F. Правильный код будет выглядеть так:

[Nemo Action]
Name=Normalize
Comment=replace all occurences of " " by "_"
Exec=<normalize.sh "%F">
Selection=Any
Extensions=Any

Улучшенный скрипт:

#!/usr/bin/env bash

mv "$@" "$(tr ' ' '_' <<< '$@')"
exit 0
  • Обычно bash находится на /bin/bash. Как и ваш, кажется, на /usr/bin/bash (в первый раз вижу это), я поставил universal обходной путь, чтобы запустить bash, где бы он ни был. Однако вы можете увидеть путь к bash, набрав , который bash на терминале.
  • Удалено условие для подсчета аргументов.
  • Зачем использовать sed для этого существующего tr?
  • Вместо echo файл на sed или tr, лучше использовать <<<.
  • Почему бы не поставить все в одну строку?
0
28.01.2020, 01:41

Теги

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