Как заставить ls перечислить каталоги с косой чертой?

12

Моя оболочка есть bash. Как я могу получить выходные данные lsдля отображения каталогов с косой чертой? Когда я lsв tcshэто дает желаемый результат. Как я могу получить это bashбез каких-либо аргументов?

например.

bin/
lib/
src/
file1.txt
file2.txt
CJ7
источник
7
Ваша оболочка здесь не актуальна ... man lsзатем прокрутите вниз до-p
don_crissti
это -Fфлаг? Я никогда им не пользуюсь, поэтому не могу вспомнить ...
Джефф Шаллер
1
С обратной косой чертой в соответствии с вашим названием или с обратной косой чертой (что имеет больше смысла) в соответствии с вашим примером?
Жиль "ТАК ... перестать быть злым"
@don_crissti Смотрите мои изменения в вопросе.
CJ7
@ CJ7 - что type lsвыводится? Может быть, псевдоним?
don_crissti

Ответы:

12

Самое простое решение (как уже сказано @don_crissti в комментариях):

ls -p

Вы можете получить аналогичный эффект с:

ls -F

Но это также добавит некоторые другие показатели:

Добавьте к каждому имени файла символ, указывающий тип файла. Также для обычных исполняемых файлов добавьте *. Индикаторы типов файлов предназначены /для каталогов, @для символических ссылок, |для FIFO, =для сокетов, >для дверей и ничего для обычных файлов.


Конечно, вы можете заставить строку lsвыполняться ls -pв командной строке с псевдонимом:

alias ls='ls -p'

Это временно и может быть стерто с unalias ls.
Возможно, у вас tcshесть активный псевдоним.

Что вы можете сделать, поместив команду в ~/.bashrcили ~/.bash_aliases.


источник
Это последнее место привлекло мое внимание. Я никогда не видел и не слышал о ~/.bash_aliasesраньше; только ~/.bash_profileи / или ~.bashrc. Это правильно?
голоса
1
@ tjt263 Обычная практика - помещать все псевдонимы в специальный файл, полученный из bashrc . Содержание может варьироваться в зависимости от ваших потребностей .
Чтобы сохранить цвета:alias ls='ls --color=auto -p'
mkczyk
2

Вы можете использовать -F, например,

$ /bin/ls -F
-/                                 diesel_folks                 grub                     presidents             user_mailer/
0/                                 dmStaffing/                  HJJJH/                   prime_scenarios   
...
# I'm using /bin/ls to make sure I run my system ls 
# (I actually have it aliased to add options automatically normally)
#
# Just read about your no argument requirement
# So you too could alias it, i.e.

alias ls='ls -F'

# Put it in your `.bashrc` or `.bash_aliases` file
Майкл Даррант
источник
Вы знаете, почему tcshдает мне желаемый результат, а bashнет?
CJ7
1
@ CJ7 Потому что tcsh и bash используют разные файлы конфигурации (с разным синтаксисом). Вероятно, у вас уже есть подобный псевдоним в вашем .cshrc.
Жиль "ТАК ... перестать быть злым"
Я попытался сделать .bashrcфайл в моем домашнем каталоге, но он не работал
CJ7
@ CJ7, ты перезапустил свою оболочку после внесения этого изменения?
Йохем Шуленклоппер
0

Или

   ls --classify

Или:

   ls --indicator-style=slash

объяснение

   -F, --classify
          append indicator (one of */=>@|) to entries

   -p, --indicator-style=slash
          append / indicator to directories

Другие ответы более или менее охватывают это, но я предпочитаю длинные опции в стиле GNU по сравнению с короткими опциями в стиле BSD в ответах переполнения стека, так как они более понятны и доступны для изучения / «запоминаются» / «усваиваются».

Шридхар Сарнобат
источник