bash cd too many arguments

Я новичок в Ubuntu Я попытался открыть файл с именем, в котором есть место в нем Я использовал команду cd он показывает bash: cd: слишком много аргументов

всякий раз, когда в имени файла есть пробел. Он показывает эту ошибку Что мне делать? Спасибо заранее

или уберите пробел:

(При этом cd не открывает файл, но изменяет рабочий каталог.)

Я только что обновил Ubuntu 16.04 до 17.04 и нашел небольшую проблему с командой cd .

Предположим, что у меня есть две папки: album-01 & amp; album-02

В Ubuntu 16.04, если я делаю cd album* , он перейдет в первую найденную папку album-01

Но в новом Ubuntu 17.04, если я сделаю cd album* , это приведет меня -bash: cd: too many arguments

Как сделать cd в Ubuntu 17.04 как cd в Ubuntu 16.04?

4 ответа

Я не мог проверить это на реальной системе 17.04 (только проверено, что оно работает с 16.04), но вы можете переопределить встроенную команду cd Bash с вашей собственной пользовательской функцией, которая отбрасывает любые дополнительные аргументы, кроме первого:

Обновление: Как указано в комментарий @ muru , эта версия ниже может работать лучше и поддерживать вызов cd без аргументов:

После того, как вы ввели эту строку выше в своем терминале, убедитесь, что теперь cd ведет себя так, как вы хотите. Если это так, вы можете сделать это определение функции постоянным, добавив эту строку в конец вашего файла

/.bashrc . В противном случае он исчезнет, как только вы закончите текущий сеанс оболочки.

Обратите внимание: если по какой-либо причине вам временно необходимо использовать настоящую команду cd Bash вместо этой настраиваемой функции, вы можете просто вызвать ее с помощью command cd вместо простого cd .

Краткий ответ / Временное решение

Чтобы ответить на ваш вопрос в этом конкретном случае, это работает

Но это, вероятно, не функциональность, которую вы действительно хотите.

Что изменилось?

Похоже, что config-top.h в Bash- 4.4 была обновлена, чтобы добавить следующий параметр

И builtins/cd.def относится к вашей ошибке здесь

Что я могу сделать в долгосрочной перспективе?

Вы можете скомпилировать свой собственный bash без нового CD_COMPLAINS , но это утомительно. Вы можете переопределить функциональность cd , как предлагается здесь, или вы могли бы использовать функцию типа

Доказательство

Bash 4.4 Beta, где он все еще работает

Bash 4.4 Стабильный релиз, где он не работает

Я никогда не сталкивался с этой проблемой, поскольку я всегда использую Завершение вкладки.

Итак, в вашем случае вместо того, чтобы иметь неточное предположение относительно того, какой каталог я хочу, я бы набрал cd al Tab , который, если есть только одно совпадение, завершает его, и если есть 2 или больше завершается до конца совпадения, а вкладка Tab перечисляет варианты.

Вот пример из моей системы:

, а затем вкладка вкладка создает

Это выглядит как ошибка в Bash: per man builtins старое поведение является правильным.

Вы можете сообщить об ошибке в списке рассылки bug-bash ; подробнее здесь .

Собственно, ошибка была сообщена (давно). Если вы хотите установить фиксированный Bash сейчас, теперь now , вот как это сделать правильно (тестирование на 17.10, также должно работать и на других).

Сначала создайте каталог для работы, например:

Получить исходный пакет и зависимости сборки:

Измените config-top.h , чтобы изменить это (должна быть строка 32)

Измените debian/changelog и добавьте запись вверху (вы также можете использовать команду dch -i ):

Наиболее важными моментом является добавление +foo к текущему номер версии ( foo может быть любой строкой строчных букв и быть осторожным, если вы используете dch -i , он будет увеличивать последнее число, поэтому вам нужно вернуть его на текущий) и использовать правильное имя выпуска ( artful здесь). Наконец, запустите dpkg-source —commit .

Затем вы можете запустить команду debuild , и если все будет хорошо (ошибки в debsign могут быть проигнорированы), у вас должно быть некоторое количество .deb s в родительском каталоге, которое вы можете установить как обычно (есть нет необходимости устанавливать их все, только те, которые у вас есть сейчас, используйте dpkg -l | grep bash , чтобы узнать).

Обратите внимание, что номер версии нового пакета установлен так, что вы автоматически получите какое-либо будущее обновление bash ; если обновление не устраняет проблему, вам необходимо повторить описанный выше процесс.

(Этот ответ был впервые отправлен на этот дублированный вопрос .)

I’m new to Ubuntu. I tried to open a file with name which has space in it. I used cd command. it shows bash : cd : too many arguments

Whenever a file name has a space in it. It is showing this error. What should I do?

closed as off-topic by Cody Gray ♦ Mar 31 at 15:43

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • «Questions about general computing hardware and software are off-topic for Stack Overflow unless they directly involve tools used primarily for programming. You may be able to get help on Super User.» – Cody Gray

If this question can be reworded to fit the rules in the help center, please edit the question.

Оцените статью