`ls` Попытки перечислить несуществующие символические ссылки на WSL

Лучший способ выучить unix - это иметь реальную работу с ним. Я бы сказал, что стоит столкнуться с различиями между примерами для Linux в вашей книге и версиями стандартных инструментов для Mac, просто чтобы иметь возможность работать с собственными файлами и данными в вашей обычной рабочей среде (OS X).

Знакомство с различиями также будет ценным опытом обучения, даже если иногда это будет разочаровывать.

Наличие виртуальной машины Linux также полезно для практики (особенно для потенциально опасных команд), но ничто не сравнится с реальным использованием для обучения.

4
25.05.2018, 11:50
2 ответа

Я заметил, что если использовать:

ls --color=tty

в каталоге /mnt/c вы получите эти сообщения об ошибках:

ls: cannot read symbolic link 'Documents and Settings': Permission denied                                               
ls: cannot access 'hiberfil.sys': Permission denied                                                                     
ls: cannot access 'pagefile.sys': Permission denied                                                                     
ls: cannot access 'swapfile.sys': Permission denied

, но если вы используете просто /bin/lsбез каких-либо аргументов, вы получите чистый список каталогов. Так что есть что-то в попытке этой команды раскрасить типы файлов в каталоге, что вызывает эти сообщения об ошибках.

Если вы перенаправляете stderr в /dev/null, это также блокирует сообщения об ошибках:

alias ls='ls --color=tty 2>/dev/null'

Не всегда целесообразно, но устраняет шум.

3
27.01.2020, 20:57

Я опаздываю на вечеринку, но все равно хотел прокомментировать.Похоже, проблема здесь в том, что ls --color=ttyпытается получить доступ к символической ссылке, чтобы решить, какой цвет использовать, но ссылка недоступна в Windows. Я согласен игнорировать такие ошибки, но я хочу видеть другие ошибки, сгенерированные ls, поэтому простое выполнение alias ls='ls --color=tty 2>/dev/null'не поможет. Вместо этого я предлагаю этот псевдоним :alias ls="ls --color=tty 2> >(grep -v 'ls: cannot read symbolic link.*Permission denied')". Он ищет в stderr рассматриваемую ошибку и отфильтровывает ее.

Надеюсь, это избавит людей от разочарования.

0
15.06.2020, 20:04

Теги

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