Автоматическое заполнение Bash с командой энергии

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

такой как

#  mkdir /myarchivedir
#  
#  mkdir /tmp/mytempdir
#  cd /tmp/mytempdir
#  
#  i=1
#  while [ $i -le 900 ] 
#  do
#  wget http://mysite.com/somefile
#  file=$(ls)
#  mv $file /myarchivedir/${i}.${file}
#  (( i=$i+1 ))
#  done

как Вы видите, даже если переменная $file совпадет с другим прежде, так как я изменяет значение каждый раз при перемещении файла в/myarchivedir это не перезапишет дубликат, названный изображением.

13
29.07.2014, 12:23
3 ответа

Я провел для вас еще несколько исследований, и вот что я нашел - ключ к автозавершению - команда bash complete. Вы можете распечатать правила для vim, используя:

complete -p vim

Аналогично вы можете удалить эти специфические правила с помощью:

complete -r vim

Эта команда сбрасывает их до значений по умолчанию - обычное заполнение путей и имен файлов без лишней логики. Скорее всего, это то, что вам нужно.

Для получения дополнительной информации обратитесь к help complete или man bash и ищите раздел о команде complete (она встроена в bash, следовательно, документирована в manpage bash).

Последний пункт - вышеуказанные изменения влияют только на текущую сессию bash, если вы хотите удалить правила vim после каждого входа, поместите complete -r vim в вашу ~/.bashrc.

Надеюсь, это поможет :)

.
10
27.01.2020, 19:53

Бэшировать по умолчанию только имена путей и файлов автокомплектов по умолчанию. Однако механизм расширяемый и bash можно научить выполнять разные автозавершения для разных программ. Например, для git может автозаполнять имена подкоманд (клонировать, коммитировать) и редактировать их, а не только патнамы. Иногда это удобно, иногда довольно раздражает - например, когда gzip -d отказывается от автозаполнения имён файлов, не имеющих расширения .gz.

Заполнение бэша обычно настраивается в /etc/bash_completion.d - там, скорее всего, находится файл с расширением vim. Это файл, содержащий правила автозавершения для командной строки vim.

Теперь у вас есть два варианта:

  1. Или исправить файл на пути автозавершения, как пользователи, вероятно, ожидают в любом случае.
  2. Удалить файл, чтобы отключить специальные правила vim и выполнить только автозавершение путей по умолчанию.

И, конечно же, создать сообщение об ошибке, в котором будет описана проблема, чтобы она была исправлена в будущих версиях :)

.
3
27.01.2020, 19:53
[

] Возможно, вы могли бы переустановить bash-завершение : []apt-get install --reinstall bash-completion[][

] [

]И посмотрите на файл /etc/bash.bashrc: []nano /etc/bash.bashrc[][

] [

]И убедитесь, что следующая строка не закомментирована:[

] [
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
] [

]Затем перезапустите вашу терминальную сессию[

].
2
27.01.2020, 19:53

Теги

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