Если grub говорит, что не может разрешить канонический путь чего-либо, это означает, что он не существует или realpath()
не удалось.
В этом случае попробуйте:
$ realpath /cow
$ ls -la /cow
Если обе команды говорят «не удается найти файл или каталог», вам необходимо создать его.
Если вторая команда работает, а первая нет, проверьте, почему realpath()
не работает. Одной из причин может быть то, что /proc
не смонтирован. В некоторых реализациях libc /proc/self/fd
используется для получения канонического пути к файлу.
Это делает оболочка. Не эхо.
Возможно, это больше похоже на то, что вы пытаетесь сделать. ( shopt -s dotglob; echo * )
В нем перечислены все файлы, кроме .
и ..
.
Работает в bash.
Предположим, что вы знаете оdot-files
(файлах, начинающихся с точки ), и о том, чтоfile-expansion
(список файлов, также известный как подстановка ), не соответствует этим файлам по умолчанию.
Вы можете получить один список, если выполните:
$ echo.*/./*.*/* */*/
Если это то, что вы хотели спросить.
Теперь вопрос изменился на
Can there be a single echo statement that combines the output of echo.*/ and echo./* other than echo.*/ */?
Предполагая, что вы хотите перечислить файлы *
и точки -файлы .*
в pwd:
(портативный )ответ — да:
find * -maxdepth 1 -type d
Ограничено bash:
shopt -s dotglob
echo */
The echo command outputs differing results based on the expression passed to it.
Это фундаментальное заблуждение. Команда echo
не видит никакого выражения; он просто выводит набор строковых литералов, которые получает в качестве аргументов.
Оболочка отвечает за оценку командной строки и последующее выполнение первого слова как команды, а все последующие слова передаются в качестве аргументов.