If you’re trying to delete a very large number of files at one time (I deleted a directory with 485,000+ today), you will probably run into this error:
/bin/rm: Argument list too long.
The problem is that when you type something like rm -rf *, the * is replaced with a list of every matching file, like “rm -rf file1 file2 file3 file4” and so on. There is a relatively small buffer of memory allocated to storing this list of arguments and if it is filled up, the shell will not execute the program.
To get around this problem, a lot of people will use the find command to find every file and pass them one-by-one to the “rm” command like this:
find . -type f -exec rm -v {} ;
My problem is that I needed to delete 500,000 files and it was taking way too long.
I stumbled upon a much faster way of deleting files – the “find” command has a “-delete” flag built right in! Here’s what I ended up using:
find . -type f -delete
Using this method, I was deleting files at a rate of about 2000 files/second – much faster!
You can also show the filenames as you’re deleting them:
find . -type f -print -delete
…or even show how many files will be deleted, then time how long it takes to delete them:
root@devel# ls -1 | wc -l && time find . -type f -delete
100000
real 0m3.660s
user 0m0.036s
sys 0m0.552s
If you’re trying to delete a very large number of files at one time (I deleted a directory with 485,000+ today), you will probably run into this error:
/bin/rm: Argument list too long.
The problem is that when you type something like rm -rf *, the * is replaced with a list of every matching file, like “rm -rf file1 file2 file3 file4” and so on. There is a relatively small buffer of memory allocated to storing this list of arguments and if it is filled up, the shell will not execute the program.
To get around this problem, a lot of people will use the find command to find every file and pass them one-by-one to the “rm” command like this:
find . -type f -exec rm -v {} ;
My problem is that I needed to delete 500,000 files and it was taking way too long.
I stumbled upon a much faster way of deleting files – the “find” command has a “-delete” flag built right in! Here’s what I ended up using:
find . -type f -delete
Using this method, I was deleting files at a rate of about 2000 files/second – much faster!
You can also show the filenames as you’re deleting them:
find . -type f -print -delete
…or even show how many files will be deleted, then time how long it takes to delete them:
root@devel# ls -1 | wc -l && time find . -type f -delete
100000
real 0m3.660s
user 0m0.036s
sys 0m0.552s
Со временем объем хранилища, используемый в управляемой системе Linux, также увеличивается. В результате мы пытаемся манипулировать файлами, перемещать, искать, удалять файлы и т.д. С помощью таких команд, как mv, is, cp, rm и т.д. Давайте рассмотрим проблему «слишком длинный список аргументов» и найдем способ ее решения. с легкостью.
Общий синтаксис этой ошибки примерно такой.
bash: /usr/bin/rm: Argument list too long
Содержание
- Что такое «слишком длинный список аргументов»?
- Почему возникает эта ошибка?
- РЕШЕНИЕ: / bin / rm: слишком длинный список аргументов
- Восстановите папку после ее удаления
- Используя команду find, удалите массовые файлы
- By using loop
- Manual Split
- Заключение
Что такое «слишком длинный список аргументов»?
Внутри командной строки, когда пользователь превышает максимально допустимую длину командной строки после ограничения для аргументов в вашей команде, возникает ошибка «Список аргументов слишком длинный».
Почему возникает эта ошибка?
Он достигает предела ARG_MAX, когда пользователь вводит слишком много аргументов в одной команде. Аргументы для функции exec могут быть до максимальной длины ARG_MAX. Если список аргументов слишком длинный, пользователь получил уведомление с помощью «Список аргументов слишком длинный». ошибка.
Аргумент также можно назвать аргументом командной строки. Для управления процессом командной строки команда определяется посредством ввода, предоставленного пользователем. Укажите аргументы в командной строке, а затем введите аргументы в консоли или терминале.
РЕШЕНИЕ: / bin / rm: слишком длинный список аргументов
Ошибка «Список аргументов слишком длинный» не возникает, для этого пользователь может узнать, какой длины должна быть команда. Операционная система определяет длину команды. Мы можем проверить максимальное количество аргументов в системах Linux с помощью следующей команды.
Помимо этого, существует множество решений для устранения указанной выше ошибки.
Восстановите папку после ее удаления
Предположим, есть каталог, в котором нет файлов, которые пользователи хотят сохранить. В этом случае самое быстрое и лучшее решение — удалить и воссоздать этот каталог. Но при этом пользователь должен сначала убедиться, что в удаляемом им каталоге нет такого файла, который он хочет сохранить.
Пользователь должен удалить все файлы и папки из каталога. В этом случае пользователь может сделать это с помощью команды rm, т. Е. Подстановочного знака «*.» В этом состоянии длина нашей команды становится очень большой. Чтобы решить эту проблему, мы можем применить только один аргумент для одновременного удаления всего каталога, используя следующую команду.
rm -r /path/to/directory/
Если нам все еще нужно сохранить каталог, мы можем воссоздать его с помощью следующей команды.
Используя команду find, удалите массовые файлы
Этот процесс относительно простой, быстрый и точный. Пользователи могут искать любой файл, используя команду find и удаляя его.
С помощью команды, написанной выше, мы можем найти любой файл из каталога.
Или для некоторых конкретных файлов мы используем следующую команду.
find . -name ‘.txt’ -type f -delete
By using loop
Пользователи могут использовать цикл для удаления файлов внутри папки с помощью команды rm. Этот метод очень медленный, из-за чего пользователи его делают меньше.
for i in * ; do rm ${i} ; done
Вышеупомянутая команда удалит все файлы, присутствующие в каталоге.
Manual Split
Пользователи могут многократно выполнять команду, разбивая файл на более мелкие группы, каждая с разными строками в качестве аргументов через ls, wc, mv, cp, rm и т. Д.
ls -lrt events1*.log | wc -l
31154
ls -lrt events2*.log | wc -l15941
В приведенном выше примере мы разделяем файлы из каталога, чтобы уменьшить команду и игнорировать ошибку.
Заключение
В этой статье мы узнали о многих методах решения «слишком длинный список аргументов *. Здесь мы обсудили все связанные вопросы или темы, связанные с этим. Пожалуйста, не забудьте прочитать всю информацию, которую мы дали вам в этой статье.
У меня есть несколько сотен PDF-файлов в каталоге в UNIX. Имена PDF-файлов очень длинные (около 60 символов).
Когда я пытаюсь удалить все PDF-файлы вместе с помощью следующей команды:
rm -f *.pdf
я получаю такую ошибку:
/bin/rm: cannot execute [Argument list too long].
Каково решение этой проблемы? Возникает ли эта ошибка для команд mv и cp? Если да, то как решить эту проблему для этих команд?
Ответ 1
Это происходит потому, что bash фактически расширяет звездочку до каждого подходящего файла, создавая очень длинную командную строку.
Попробуйте это:
find . -name «*.pdf» -print0 | xargs -0 rm
Внимание: это рекурсивный поиск, и он найдет (и удалит) файлы и в подкаталогах. Добавляйте -f к команде rm, только если вы уверены, что вам не нужно подтверждение.Чтобы сделать команду нерекурсивной, можно сделать следующее:
find . -maxdepth 1 -name «*.pdf» -print0 | xargs -0 rm
Другой вариант — использовать флаг find -delete:
find . -name «*.pdf» -delete
Ответ 2
Это ограничение ядра на размер аргумента командной строки. Вместо этого используйте цикл for.
Происхождение проблемы
Это системная проблема, связанная с execve и константой ARG_MAX. Об этом есть много документации (см. man execve, debian’s wiki). По сути, расширение выдает команду (с ее параметрами), которая превышает предел ARG_MAX. В ядре 2.6.23 этот предел был установлен на уровне 128 кБ. Эта константа была увеличена, и вы можете получить ее значение, выполнив:
getconf ARG_MAX
# 2097152 # on 3.5.0-40-generic
Решение: Использование цикла for
Используйте цикл for, так как он рекомендован в BashFAQ/095 и нет никаких ограничений, кроме пространства оперативной/памяти. Проведите пробный запуск, чтобы убедиться, что он удалит то, что вы ожидаете:
for f in *.pdf; do echo rm «$f»; done
И выполните его:
for f in *.pdf; do rm «$f»; done
Также это переносимый подход, так как glob имеет сильное и устойчивое поведение среди оболочек (часть спецификации POSIX).
Замечание: Этот способ действительно медленнее, но он более удобен в обслуживании, поскольку может адаптировать более сложные сценарии, например, когда нужно выполнить более одного действия.
Решение: Использование find
Если вы настаиваете, вы можете использовать find, но, на самом деле, не используйте xargs, поскольку он «опасен при чтении не NUL-разделенного ввода»:
find . -maxdepth 1 -name ‘*.pdf’ -delete
Использование -maxdepth 1 … -delete вместо -exec rm {} + позволяет find просто выполнить необходимые системные вызовы самостоятельно, не используя внешний процесс, следовательно, быстрее.
Ответ 3
Если вы пытаетесь удалить очень большое количество файлов за один раз, вы, вероятно, столкнетесь с этой ошибкой:
/bin/rm: Argument list too long.
Проблема в том, что, когда вы набираете что-то вроде rm -rf *, «*» заменяется списком всех подходящих файлов, например, «rm -rf file1 file2 file3 file4» и так далее. Для хранения этого списка аргументов отводится относительно небольшой буфер памяти, и если он заполнится, оболочка не выполнит программу. Чтобы обойти эту проблему, многие люди используют команду find для поиска каждого файла и передают их по одному команде «rm» следующим образом:
find . -type f -exec rm -v {} ;
Моя проблема в том, что мне нужно было удалить 500 000 файлов, и это занимало слишком много времени. Я наткнулся на гораздо более быстрый способ удаления файлов — команда «find» имеет встроенный флаг «-delete»! Вот что я в итоге использовал:
find . -type f –delete
Используя этот метод, я удалял файлы со скоростью около 2000 файлов в секунду — намного быстрее! Вы также можете показывать имена файлов в процессе их удаления:
find . -type f -print -delete
…или даже показать, сколько файлов будет удалено, а затем засечь время, необходимое для их удаления:
root@devel# ls -1 | wc -l && time find . -type f -delete
100000
real 0m3.660s
user 0m0.036s
sys 0m0.552s
|
0 / 0 / 0 Регистрация: 29.07.2018 Сообщений: 3 |
|
|
1 |
|
Ошибка «Слишком много аргументов в командной строке»29.07.2018, 17:39. Показов 5251. Ответов 5
Всем привет. Где-то каждый час выскакивает эта ошибка, к тому сворачивая игры. Как ее можно отключить?
__________________
0 |
|
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
29.07.2018, 17:39 |
|
Ответы с готовыми решениями:
Ошибка «Слишком много аргументов в вызове функции» Ошибка «Слишком много аргументов в вызове функции» 5 |
|
Нарушитель 8300 / 4373 / 1003 Регистрация: 12.03.2015 Сообщений: 20,457 |
|
|
29.07.2018, 17:46 |
2 |
|
покаж скриншот.
0 |
|
0 / 0 / 0 Регистрация: 29.07.2018 Сообщений: 3 |
|
|
29.07.2018, 18:10 [ТС] |
3 |
|
Вроде смог прикрепить Миниатюры
0 |
|
Нарушитель 8300 / 4373 / 1003 Регистрация: 12.03.2015 Сообщений: 20,457 |
|
|
29.07.2018, 19:23 |
4 |
|
Судя по скриншоту какая-то сволочь по таймеру или через шедулер пытается изменить файлы настроек updater2.xml, которых, видимо, не находит. А ошибка «слишком много аргументов» чаще возникает, когда параметры с пробелами внутри подставляют в командную строку без кавычек. Ищи, кто вызывает findstr. Начни с шедулера, там фильтр есть.
0 |
|
0 / 0 / 0 Регистрация: 29.07.2018 Сообщений: 3 |
|
|
31.07.2018, 15:03 [ТС] |
5 |
|
Апдейтер наверное ищет система потому что я отключал автообновление винды через gpedit.msc» или возможно, что-то другое, а на предыдущей версии винды такого не было. «Шедулер» я нигде в системе не нашел. Но более-менее решил проблему — я просто держу открытой консоль (после ее первого появления при запуске системы) и не закрываю — больше она не открывается, когда открыто первое окно.
0 |
|
Нарушитель 8300 / 4373 / 1003 Регистрация: 12.03.2015 Сообщений: 20,457 |
|
|
31.07.2018, 15:10 |
6 |
|
«Шедулер» я нигде в системе не нашел.
Но более-менее решил проблему — я просто держу открытой консоль (после ее первого появления при запуске системы) и не закрываю — больше она не открывается, когда открыто первое окно. Ахахаха! Ну и правильно, чо. Чем больше костылей, тем лучше. А то, что какая-то левая хрень у тебя в компе хозяйничает — пофигу! Лишь бы играть не мешала.
0 |
Содержание
- «Слишком много аргументов» при попытке изменить каталог
- Не работает скрипт: слишком много аргументов
- bin / rm: слишком длинный список аргументов
- Что такое «слишком длинный список аргументов»?
- Почему возникает эта ошибка?
- РЕШЕНИЕ: / bin / rm: слишком длинный список аргументов
- Восстановите папку после ее удаления
- Ubuntu 17.04 — bash: cd: слишком много аргументов
- 4 ответа
- Краткий ответ / Обходной путь
- Что изменилось?
- Ubuntu 17.04 — bash: cd: слишком много аргументов
- 4 ответа
- Краткий ответ / обходной путь
- Что изменилось?
«Слишком много аргументов» при попытке изменить каталог
Я относительно новичок в командной строке. Я установил терминал hyoer, и смена каталога на компакт-диске работала нормально. сегодня всякий раз, когда я пытаюсь сменить каталог с помощью cd, он дает мне bash: cd: слишком много аргументов. Я не могу перейти ниже каталога по умолчанию, который является пользователями.
какой результат type cd ?
Пожалуйста, редактировать ваш вопрос и добавьте полную команду, которую вы используете.
У ваших папок было пространство между ними?!
Попробуйте поставить имя папки в кавычки.





cd требуется ровно 1 аргумент: имя каталога, в который вы переходите. Вы привели более одного аргумента.
Есть несколько причин, по которым cd может иметь более 1 аргумента. Например, я ленивый печатаю, поэтому часто использую * , например:
Это работает, пока я не создам каталог very_important_files .
Наиболее очевидным, однако, является наличие пробела в имени каталога. Например, если у вас есть каталог с именем directory with space и вы делаете cd directory with space , bash интерпретирует это как команду cd с тремя аргументами:
Это не то, что вы хотите. Вы можете заставить bash рассматривать его как один единственный аргумент, процитировав его: cd «directory wth space»
Источник
Не работает скрипт: слишком много аргументов
День/Вечер добрый. Тут решил засесть за книжку «Сценарии командной оболочки» и на втором скрипте получил ошибку. далее привожу код скрипта и ошибки.
Еще простой (наверное) вопрос, если пошлете учить матчасть — укажите направление 🙂


Все, что в двойных скобкаъ считается одним словом, разбивки не происходит, это эквивалентно directory=$ourpath
А здесь двойных скобок нет, поэтому разбивка слов происходит и команда разбивается на if [ -x /bin /usr/bin … и что там ещё в $PATH

google://advanced bash scripting guide

Благодарю, после того, как убрал двойные кавычки в $ourpath, все заработало! А что за двойные скобки?



Тему можно считать решенной, если знаете, помогите с последним вопросом (он выше, в конце темы), и закроем ее :3

Так потому что разбор $ourpath на слова уже произошёл.

$0 — имя файла вызываемого скрипта

почитаем про это, благодарю))

Когда СКРИП не работает, тут надо к физикам, умвр, если поелозить — скрипитъ.

fuck, thank you :3

вместо всего вашего велосипеда, ну да ладно.

Благодарю) Эт не велосипед, это, простите за плохие слова, код авторов книги.

Ну, во-первых, это не полный аналог, так как сообщения «в PATH есть/нет» type и не печатает. Во-вторых, написанный скрипт всегда гибче, можно расширить ещё на какое спец. действие, в конце концов можно и починить, чтобы на исполняемые файлы по абсолютному пути не писало, что они в PATH, а потом навернуть логику, проверяющую, что этот абсолютный путь и сам есть в PATH.
Источник
bin / rm: слишком длинный список аргументов
Со временем объем хранилища, используемый в управляемой системе Linux, также увеличивается. В результате мы пытаемся манипулировать файлами, перемещать, искать, удалять файлы и т.д. С помощью таких команд, как mv, is, cp, rm и т.д. Давайте рассмотрим проблему «слишком длинный список аргументов» и найдем способ ее решения. с легкостью.
Общий синтаксис этой ошибки примерно такой.
Что такое «слишком длинный список аргументов»?
Внутри командной строки, когда пользователь превышает максимально допустимую длину командной строки после ограничения для аргументов в вашей команде, возникает ошибка «Список аргументов слишком длинный».
Почему возникает эта ошибка?
Он достигает предела ARG_MAX, когда пользователь вводит слишком много аргументов в одной команде. Аргументы для функции exec могут быть до максимальной длины ARG_MAX. Если список аргументов слишком длинный, пользователь получил уведомление с помощью «Список аргументов слишком длинный». ошибка.
Аргумент также можно назвать аргументом командной строки. Для управления процессом командной строки команда определяется посредством ввода, предоставленного пользователем. Укажите аргументы в командной строке, а затем введите аргументы в консоли или терминале.
РЕШЕНИЕ: / bin / rm: слишком длинный список аргументов
Ошибка «Список аргументов слишком длинный» не возникает, для этого пользователь может узнать, какой длины должна быть команда. Операционная система определяет длину команды. Мы можем проверить максимальное количество аргументов в системах Linux с помощью следующей команды.
Помимо этого, существует множество решений для устранения указанной выше ошибки.
Восстановите папку после ее удаления
Предположим, есть каталог, в котором нет файлов, которые пользователи хотят сохранить. В этом случае самое быстрое и лучшее решение — удалить и воссоздать этот каталог. Но при этом пользователь должен сначала убедиться, что в удаляемом им каталоге нет такого файла, который он хочет сохранить.
Пользователь должен удалить все файлы и папки из каталога. В этом случае пользователь может сделать это с помощью команды rm, т. Е. Подстановочного знака «*.» В этом состоянии длина нашей команды становится очень большой. Чтобы решить эту проблему, мы можем применить только один аргумент для одновременного удаления всего каталога, используя следующую команду.
Если нам все еще нужно сохранить каталог, мы можем воссоздать его с помощью следующей команды.
Источник
Ubuntu 17.04 — bash: cd: слишком много аргументов
Я только что обновил свой Ubuntu 16.04 до 17.04 и обнаружил небольшую проблему с cd команда.
Допустим, у меня есть две папки: album-01 & 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 Stable Release там, где он не работает
Я никогда не сталкивался с этой проблемой, так как я всегда использую Tab Completion.
Так что в вашем случае, вместо того, чтобы иметь неточное предположение о том, какой каталог я хочу, я бы набрал cd al Вкладка, которая, если есть только одно совпадение, завершает его, и если есть 2 или более, завершается до того места, где заканчивается сопоставление, и Tab Tab перечисляет варианты
Вот пример из моей системы:
cd Un табуляция
с последующим Tab Tab производит
Это похоже на ошибку в Bash: per man builtins старое поведение правильное.
Вы можете сообщить об ошибке на bug-bash список рассылки; подробнее здесь.
Собственно, об ошибке сообщалось (давно). Если вам нужен исправленный Bash сейчас, сейчас, сейчас, вот как это сделать правильно (протестировано 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 ; Если обновление не устраняет проблему, вам необходимо повторить вышеуказанный процесс.
(Этот ответ был впервые опубликован на этот дубликат вопроса.)
Источник
Ubuntu 17.04 — bash: cd: слишком много аргументов
Я только что обновил свой Ubuntu 16.04 до 17.04 и обнаружил небольшую проблему с командой cd .
Допустим, у меня есть две папки: album-01 & amp; album-02
В Ubuntu 16.04, если я сделаю cd album* , он перейдет к первой найденной папке album-01
Но в новой Ubuntu 17.04, если я сделаю cd album* , это приведет me -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 вместо этой настраиваемой функции, вы можете просто вызовите его с помощью команды cd вместо обычного cd .
Краткий ответ / обходной путь
Чтобы ответить на ваш вопрос в этом конкретном случае, это работает
Но, вероятно, это не та функциональность, которую вы действительно хотите.
Что изменилось?
Похоже, что config-top.h в Bash-4.4 был обновлен, чтобы добавить следующий параметр
И builtins / cd.def ссылается к вашей ошибке здесь:
Что я могу сделать в долгосрочной перспективе?:
Вы можете скомпилировать свой собственный bash без новых CD_COMPLAINS , но это будет утомительно. Вы можете переопределить функциональность cd , как предлагается здесь, или использовать псевдоним функции, например
Proving it
Bash 4.4 Beta, где она все еще работает
Bash 4.4 Stable Release, где она не работает
Я никогда не сталкивался с этой проблемой, так как всегда использую Завершение вкладки.
Поэтому в вашем случае, вместо того, чтобы иметь неточное предположение относительно того, какой каталог мне нужен, я бы набрал cd al Вкладка , которая, если есть только одно совпадение, завершает его, а если есть 2 или более, завершает до того места, где совпадение заканчивается, а Вкладка Вкладка перечисляет варианты.
Вот пример из моей системы:
, за которым следует Tab Tab производит
Это похоже на ошибку в Bash: для man builtins старое поведение является правильным.
Вы можете сообщить об ошибке в ошибке- список рассылки bash ; подробнее здесь .
Собственно, об ошибке сообщалось (давно). Если вам нужен фиксированный Bash сейчас, сейчас, сейчас , вот как это сделать правильно (протестировано 17.10, должно работать и на других).
Сначала создайте каталог для работы, например :
Получите пакет с исходным кодом и зависимости сборки:
Отредактируйте config-top.h , чтобы изменить это (должна быть строка 32)
Изменить debian / changelog и добавьте такую запись вверху (вы также можете использовать команду dch -i ):
Наиболее важные моменты — добавить + foo на текущий номер версии ( foo может быть любой строкой строчных букв; будьте осторожны, если вы используете dch -i , последнее число будет увеличиваться, поэтому вам нужно вернуть его к текущему) и использовать правильное название выпуска (здесь artful ). Наконец, запустите dpkg-source —commit .
Затем вы можете запустить команду debuild , и если все пойдет хорошо (ошибки о debsign могут быть игнорируется) у вас должно быть несколько .deb в родительском каталоге, которые вы можете установить как обычно (нет необходимости устанавливать их все, только те, которые у вас есть сейчас; используйте dpkg — l | grep bash , чтобы узнать).
Обратите внимание, что номер версии нового пакета установлен так, что вы автоматически получите любое будущее обновление для bash ; если обновление не устраняет проблему, повторите описанный выше процесс.
(Этот ответ был впервые опубликован на этот повторяющийся вопрос .)
Источник
Pascal N-IDE, оператор function, ошибка «слишком мало или слишком много аргументов передаются функции arccos»