Чтобы перечислить только скрытых файлов :
ls -ap | grep -v / | egrep "^\."
Обратите внимание, что файлы здесь все, что не является каталогом . Это не файл в «все в Linux - это файл» ;)
Чтобы перечислить только скрытые каталоги :
ls -ap | egrep "^\..*/$"
Комментарии:
ls -ap
lists все в текущем каталоге, включая скрытые
, и помещает /
в конец каталогов. grep -v /
инвертирует результаты grep /
, так что каталог не включается. «^ \ .. * / $»
соответствует всему, что начинается с .
и оканчиваются на /
. .
и ..
из результатов второй части, вы можете использовать параметр -A
вместо -a
для ls
, или если вам нравится работать с регулярным выражением, вы можете использовать "^ \. [^.] + / $"
вместо "^ \ .. * / $"
. Удачи!
Вы полностью развенчали представление оболочки Bourne Again о том, что было напечатано и что нужно стереть / перезаписать, поскольку она отображает историю команд и позволяет редактировать командную строку.
Разбивка приглашения на разделы:
\ [\ e] 0; \ u @ \ h: \ w \ a \]
- непечатаемые символы, правильно заключенные $ {debian_chroot: + ($ debian_chroot)}
- печатаются только символы, предположительно \ [\ 033 [01; 36m \]
- непечатаемые символы, правильно заключенные \ u @ \ h
- печатаются только символы \ [\ 033 [00m \]
- непечатаемые символы, правильно заключены \ 033 [01; 34m \]
- непечатаемые символы, неправильно заключены, поэтому Оболочка Bourne Again не знает, что это \ w \ 033 [00m \]
- ошибочная смесь печатных и непечатаемых символов [$ (введите __git_ps1> / dev / null 2> & 1 && __git_ps1 "(% s)")]
- печать только символов, предположительно Я давал этот совет раньше , но это общий совет, что применимо и здесь:
\ e
, либо \ 033
, для вашего собственного здравомыслия. \ [
и \]
строго совпадающими невложенными парами. \ [
и \]
(и что, наоборот, все последовательности печати - нет). (Вот почему я лично предпочитаю Z Shell и ее альтернативный механизм расширения подсказок, когда мне нужны дурацкие цветные подсказки.Он знает , что такие вещи, как % F {зеленый}
, не печатают последовательности, без необходимости сообщать; и он также вырабатывает правильные escape-последовательности из terminfo
без их аппаратного подключения.)
Хотя ответ JdeBP превосходен, я решил добавить тот, который сработал для меня, так как моя PS1 уже была подходящей. Первоначально я разместил это в связанном выпуске(#2713)в репозитории WSL на GitHub :
.Я хотел бы добавить не здесь для потомков, потому что эта проблема сводила меня с ума. Я думаю, что наконец-то нашел причину, по крайней мере, для себя, так что, надеюсь, это поможет другим. Я видел эту проблему в различных системах (сборок 18362 -18975 )с различными дистрибутивами. Я на 100% убедился, что синтаксис моей PS1 в моем.bashrc был правильным, и все непечатаемые символы -были правильно экранированы и т. д.
У меня возникла проблема со свойствами консоли. Я установил дистрибутивы WSL (Ubuntu, Debian и Kali )через Microsoft Store и запускал приложения из меню «Пуск». Насколько я понимаю, это запускает WSL в классической консоли командной строки Windows под брендом Linux. (Кстати, запуск из папки с помощью Shift+Right -клик / «Открыть оболочку linux здесь» открывает то же окно консоли ).
В любом случае, суть в том, что когда вы -щелкаете правой кнопкой мыши по получившейся строке заголовка консоли, нажимаете «Свойства», затем выбираете параметр «Переносить вывод текста при изменении размера», это то, что решило проблему для меня.
Теперь я могу правильно вводить команды, которые переходят на следующую строку, и могу соответствующим образом перемещать курсор. Это определенно где-то ошибка, но я не знаю, где ошибка.