Можно ли объединить эхо для получения одного результата .*/ и */?

Если grub говорит, что не может разрешить канонический путь чего-либо, это означает, что он не существует или realpath()не удалось.

В этом случае попробуйте:

$ realpath /cow
$ ls -la /cow

Если обе команды говорят «не удается найти файл или каталог», вам необходимо создать его.

Если вторая команда работает, а первая нет, проверьте, почему realpath()не работает. Одной из причин может быть то, что /procне смонтирован. В некоторых реализациях libc /proc/self/fdиспользуется для получения канонического пути к файлу.

0
16.01.2020, 01:05
3 ответа

Это делает оболочка. Не эхо.

Возможно, это больше похоже на то, что вы пытаетесь сделать. ( shopt -s dotglob; echo * )В нем перечислены все файлы, кроме .и ...

Работает в bash.

1
28.01.2020, 02:14

Предположим, что вы знаете о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 */
5
28.01.2020, 02:14

The echo command outputs differing results based on the expression passed to it.

Это фундаментальное заблуждение. Команда echoне видит никакого выражения; он просто выводит набор строковых литералов, которые получает в качестве аргументов.

Оболочка отвечает за оценку командной строки и последующее выполнение первого слова как команды, а все последующие слова передаются в качестве аргументов.

0
28.01.2020, 02:14

Теги

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