Почему вы так уверены, что вам это не нужно? Возможно, другие пакеты зависят от него, он не используется исключительно для настройки 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-*
Проблема:
Ваша проблема в том, что настолько банальна, что %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
(в первый раз вижу это), я поставил , который bash
на терминале. sed
для этого существующего tr
? echo
файл на sed
или tr
, лучше использовать <<<
.