1 (05.10.2014 14:46:54 отредактировано chelovekot)

Я тут как-то читал в инете интервью с Р.Столлмэном, по-моему (могу ошибиться). Подметил такой интересный ответ на свой вопрос: что, якобы, не хватает хороших, доступных для понимания даже человеку, не особо сведущему в IT, руководств по использованию пакетов, возможностей приложений, утилит. Мне, правда, тогда этот ответ показался несколько абсурдным, т.к. в гугле, когда что-то ищешь, куча ссылок на man-страницы, руководства разной степени давности, многочисленные википедии различных дистрибутивов и т.д. Но прошло время и я убедился, что ответ не абсурден, а меток. В этом плане, есть значительные успехи у Ubuntu-сообщества: много руководств по тем или иным задачам, написанных доступным, даже для начинающих пользователей, языком, исповедуя старый дедовский принцип "даже дураку должно быть понятно". Мне, лично, нравится, когда пишут именно таким образом, без различного рода умничаний и недосказанностей. Чтобы не быть голословным, приведу небольшой пример: например, мне нужно узнать, что же можно полезного сделать командой ls? Я иду в поисковик и вбиваю ls в строку поиска — сразу выходит множество ссылок. В большинстве случае, выходят те же самые man'ы, в той или иной интерпретации. Конечно, около 60-70 % информации там написано вполне доступно, но отсутствуют примеры применения программ. Давайте для примера возьмём ту же Википедию. Что мы там видим по поводу ls? В разделе "Ключи POSIX" написано, что ключ -С печатает список файлов в колонках с вертикальной сортировкой. Однако не указано, сколько будет колонок, как это будет выглядеть и т.д. Это самое безобидное. Остановимся ещё на паре примеров. Идём дальше, ключ -R включает рекурсивную выдачу списка каталогов. Честно признаюсь, этой опцией я, по-моему, ни разу не пользовался, так что всё будет честно и наглядно. Я не буду никуда подглядывать и скажу, как я понял эту фразу сам. Ну, понятное дело, что никакой наглядной картинки (скриншота) не приложено и к этому ключу, поэтому я эмпирическим путём должен себе представить то, что имелось в виду. Я это понял так, что я этим ключом включаю (кстати, а как выключить?) некий режим, который будет постоянно со мной (ибо, включив свет, он не выключится до тех пор, пока вы его не выключите, извиняюсь за клинчкизм), и который рекурсивно выдаст список каталогов, т.е. выдаст мне список в котором будет указан текущий каталог и все другие каталоги, которые содержатся в нём, и которые содержатся в них (других каталогах, помимо текущего). Окей, давайте я посмотрю, правильно я понял, что имелось в виду. Запустил терминал, ввёл ls -R и....вывелась огромная простыня со списком — внимание! — не только каталогов, но и всех файлов  bu .... не хочу писать длинного поста, закончу на этом примере. Вы понимаете, что если пройдёмся дальше, то... Таким образом, я соглашаюсь с точкой зрения Столлмэна по поводу того, что ощущается некий дефицит по-настоящему доступных, аргументированных, иллюстрированных (я разовью его мысль) руководств с наглядными примерами того, что получит пользователь на выходе при применении той или иной программы, с тем или иным ключом. Я уж молчу про некие комментарии, сноски в духе "эта опция/ключ будет полезна для того-то или того-то" и т.п. В итоге, пользователю порой проще зайти на форум и спросить у сообщества как делается примитивное действие или как решается довольно тривиальная задача, что в итоге засоряет форумы повторяющимися из месяца в месяц темами — и масса эта растёт и растёт. Я считаю, что лучше сделать понятное и доступное даже дураку наглядное руководство, чем сотни раз отсылать пользователей читать man'ы, которые понятны зачастую только тем, у кого есть значительный опыт в их применении. Может кто-то знает адрес википедии, которая разжёвывает man'ы в том духе, о котором я писал выше? Поделитесь ссылкой. Перейду к вопросу, наконец....

Вопросы: действительно ли не хватает руководств, которые понятны даже домохозяйкам (если наберутся терпения прочитать) для Linux-систем? Какие ресурсы с доступными для понимания даже для новичка руководствами вы знаете (ссылки приветствую!)?

Кажется, ничего не забыл...  bm  bc

2 (05.10.2014 15:07:23 отредактировано kostik87)

chelovekot пишет:

Я это понял так, что я этим ключом включаю (кстати, а как выключить?) некий режим, который будет постоянно со мной (ибо, включив свет, он не выключится до тех пор, пока вы его не выключите, извиняюсь за клинчкизм), и который рекурсивно выдаст список каталогов, т.е. выдаст мне список в котором будет указан текущий каталог и все другие каталоги, которые содержатся в нём, и которые содержатся в них (других каталогах, помимо текущего).

Открываем man и читаем расшифровку имени команды:

 Консоль:

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List information about the FILEs (the current directory by default).  Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.


Отсюда вывод: ls - выводит информацию по файлам в текущей директории по умолчанию. Вопрос закрыт. Теперь по поводу ключа '-R', он модифицирует поведение команды ls, если вы вызываете команду без этого ключа, то поведение стандартное, т.е. выводится информация о файлах только в текущей директории, если ключ активирован - в поддиректориях тоже.

Это стандартное поведение всех команд в Linux, ключ работает только если указан, об этом нет смысла повторять. Есть ещё нюанс в виду alias, т.е. если вы к примеру создадите alias

alias ls='ls -R'

то ключ -R будет всегда активирован, ибо при наборе в командной оболочке 'ls' всегда будет подразумеваться, что вы вызываете 'ls -R', убрать это можно только удалив alias или вызвав ls по полному пути, т.е. /bin/ls .

Теперь по поводу доступности документации, все дистрибутивы linux поставляются вместе с man страницами,

man ls

в них содержится краткое описание программы, особенностей её работы и ключей, модифицирующих её поведение. Помимо этого есть ещё info страницы,

info ls

в них уже развёрнуто описывается программа, со всеми ключами, способы работы с ней и примерами.

Ну и никто вам не запрещает вызвать команду с теми ключами, которые вас интересуют и проверить как она работает.

Прежде чем что-то представлять почитайте man и info страницы по интересующей вас программе. Это официальная документация и в Linux её много, только читай и разбирайся, ну а по поводу кем-то написанных руководств, так там зачастую содержится больше ошибок, чем полезной информации.

3 (05.10.2014 15:26:18 отредактировано kirillov3798)

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

Fedora 21 Workstation KDE 4.14.4
Gigabyte GA-Z77-D3H, Intel Core i5-3470, nVidia GeForce GTX 660 2GB, 8GB RAM, 1TB HDD

4 (05.10.2014 15:34:50 отредактировано chelovekot)

kostik87 пишет:

Отсюда вывод: ls - выводит информацию по файлам в текущей директории по умолчанию. Вопрос закрыт.

Ну, хорошо, я вижу, что вы не поняли суть моего вопроса. Давайте начну с другой стороны. Вот, к примеру, что вызовет ключ -d (--directory)? Я вам кратко опишу, как я это понял, что подразумевается в man'e в описании. Я так понял, что это ключ, который показывает папки, вместо содержимого. То есть, если его употребить, тогда ls вызовет только папки (без файлов). Да? Или нет?

5 (05.10.2014 16:34:04 отредактировано kostik87)

chelovekot пишет:

Да? Или нет?

Ни нет и не да. Этот ключ нужен для совместного использования с другими ключами для обработки только текущей директории, сравните:

ls -d -ls /etc
ls -ls /etc

Ну и ключевой момент во всём вашем высказывании это " Я так понял," и "Как понял Я", вы не задумывались, что здесь дело в вас? Вообще, если вам нужно получить вывод, к примеру только директорий или только файлов, или директорий рекурсивно, то для этого есть утилита find:
- вывод только директорий первого уровня в указанной директории;

find /usr -maxdepth 1 -type d

- вывод только файлов рекурсивно;

find /usr -type f

- вывод директорий рекурсивно;

find /usr -type d

В общем, вся ваша проблема лишь в том, что вы неправильно выбираете инструменты и имеете какое-то уж определённое "как понял я", вы даже не стараетесь понять сути написанного и анализиваровать всё описание в сумме, выдираете куски описания и интерпретируйте их как попало.

6 (05.10.2014 17:00:10 отредактировано algri14)

chelovekot пишет:

Вопросы:
действительно ли не хватает руководств, которые понятны даже домохозяйкам (если наберутся терпения прочитать) для Linux-систем?
Какие ресурсы с доступными для понимания даже для новичка руководствами вы знаете (ссылки приветствую!)?

chelovekot, во-первых - руководств действительно катострофически не хватает, это я Вам говорю как чайник(без году недяля в линуксе - 1 год и 6 мес), ведь для обучения нужны элементарные знания и мелкие секретики линукса, а их очень трудно найти в инете для каждого конкретного дистра;
во-вторых - самый эффективный ресурс, это форум, потому как быстро и с поправкой на действительность. Ещё можно добавить ВИКИ, конкретного дистра, там тоже есть наработки форума, но для новичков и там очень мало. Я уже писал, что по этой причине на форуме MRC Mageia взялся вести рубрику ЧАВО (FAQ) для новичков. Так как мне как новичку более известно, что требуется новичкам, но с поправкой, по мере возникновения проНблемы. Нет проблемы - нет и понятия, что надо, такова планида всех самоучек.
Но писать статью не каждый возьмётся - это отнимает много времени, а потом не каждому хочется элементарщину опять по N-ному разу объяснять. На Linux Forum'е вообще нет такой рубрики(может я не нашёл?), зато заносчивого флуда и грызни МОРЕ(тоже уже писал), такое ощущение, что некотырые это делают от своей собственной скуки, а не спора и истины ради
PS: очень многие дают дельные и толковые ответы, даже на туповатые вопросы новичков.

Изучайте нюансы и мелочи - порой в них заключена вся суть проблемы!
Mageia 5.1х86_64 KDE; Mageia 6х86_64 Xfce [ highlight=#000][ console=inline] [ b][ color=#4f4]текст[ /color][ /b] [ /console][ /highlight]

7

algri14 пишет:

зато заносчивого флуда и грызни МОРЕ

На самом деле здесь довольно спокойно, вы сходите на http://linux.org.ru и посмотрите как там.

По поводу проблем новичков я с вами отчасти согласен, но ТС либо неправильно для примера выбрал утилиту, если даже он обобщал, в любом случае слишком это всё "мелко", мне всё же кажется он не старается понять. Если говорить о проблемах новичков более детально, то все они "разжёваны" на форумах выбранных ими дистрибутивов, а все основные моменты расписаны в документации по установки дистрибутива или на wiki страницах дистрибутива и что бы не столкнуться с проблемой достаточно точно следовать рекомендациям в этой документации, но как правило не просто бездумно копировать и выполнять команды, а стараться понять почему именно так. Любая такая инструкция это уже готовый пример, в ней команды вызываются с множеством ключей, сама команда пояснена, если смысл ключей не ясен уже из пояснения, так почитай 'man команда' и всё станет ясно. Прочие проблемы новичков, с которыми они сталкиваются легко решаются простым поиском в поисковой системе.

Так же, что бы новичок перестал быть новичком, без разницы сколько он уже использует Linux, он должен обзавестись некоторыми навыками:
- уметь анализировать свои действия и описанные команды;
- уметь работать с документацией, справочными материалами;
- уметь правильно составить запрос в поисковую систему и вопрос на форуме;

Как только новичок обзаведётся этими навыками он сможет решить любую возникшую у него задачу даже без использования кем-то написанного руководства.

Ну а так можно привести ссылки на wiki страницы дистрибутивов:
http://wiki.gentoo.org/wiki/Main_Page
https://wiki.archlinux.org/
https://wiki.debian.org/

8

kostik87 пишет:

На самом деле здесь довольно спокойно, вы сходите на http://linux.org.ru и посмотрите как там.

Не будем всех под одну гребёнку, я ведь сказал - некоторые.
А вообще, мой предыдущий пост о том, что для новичков, где-то самим новичкам надо писать образовательные статьи для популяризации линукса и помощи начинающим, дабы новички могли найти элементарную информацию и не захломлять вопросами форум темами раскрытыми в ВИКИ.

Изучайте нюансы и мелочи - порой в них заключена вся суть проблемы!
Mageia 5.1х86_64 KDE; Mageia 6х86_64 Xfce [ highlight=#000][ console=inline] [ b][ color=#4f4]текст[ /color][ /b] [ /console][ /highlight]

9 (05.10.2014 18:27:43 отредактировано chelovekot)

kostik87 пишет:
+ открыть спойлер
chelovekot пишет:

Да? Или нет?

Ни нет и не да. Этот ключ нужен для совместного использования с другими ключами для обработки только текущей директории, сравните:

ls -d -ls /etc
ls -ls /etc

Ну и ключевой момент во всём вашем высказывании это " Я так понял," и "Как понял Я", вы не задумывались, что здесь дело в вас? Вообще, если вам нужно получить вывод, к примеру только директорий или только файлов, или директорий рекурсивно, то для этого есть утилита find:
- вывод только директорий первого уровня в указанной директории;

find /usr -maxdepth 1 -type d

- вывод только файлов рекурсивно;

find /usr -type f

- вывод директорий рекурсивно;

find /usr -type d

В общем, вся ваша проблема лишь в том, что вы неправильно выбираете инструменты и имеете какое-то уж определённое "как понял я", вы даже не стараетесь понять сути написанного и анализиваровать всё описание в сумме, выдираете куски описания и интерпретируйте их как попало.

Между прочим, команду ls -d -ls /etc можно записать проще - ls -dls /etc.
Открываем man ls. Там написано:

...-d, --directory
              list directory entries instead of contents, and do not dereference symbolic links...

Давайте попробуем перевести?
list directory entries instead of contents = список записей каталога вместо содержимого (т.е., вместо записей содержимого будет возвращён список неких загадочных записей каталога)
and do not dereference symbolic links = и не разыменовывать символические ссылки (да-да, вот тут-то у новичка начнётся перезагруз мозга  ag )
В итоге, что мы имеем? Мы имеем новичка, который имеет примерно такой вид  be  bm  bg , несмотря на то, что прилежно прочитал man.
Более того, даже метод научного тыка ему не помог, ибо понять, что выдаёт ему команда ls -d — новичок просто не в состоянии, т.к. она не выдаёт ровным образом ничего, кроме загадочной точки

 Консоль:
[pushistiq@pushistiq ~]$ ls -d
.
[pushistiq@pushistiq ~]$

10

algri14,

algri14 пишет:

На Linux Forum'е вообще нет такой рубрики(может я не нашёл?)

Рассматривайте данный форум во всех смыслах, как форум для новичков и не только. Не надо искать никаких дополнительных рубрик.

А вики это очень хорошая вещь, на статьи из которой можно сослаться в темах, так как обычно вики никтоновички не читают.

11 (05.10.2014 21:04:22 отредактировано chelovekot)

Ладно, не буду больше ждать ответа. Но у меня хорошие новости, парни — правда, только для тех, кто знает английский язык (хотя бы на уровне "читаю со словарём"). Сейчас я подскажу, в каком русле двигаться. У нас возникли непонятки с загадочным ключом -d для команды ls. Что ж, обратимся к старому доброму Google, ибо англоязычный (и не только) поисковик с правильными алгоритмом поиска, в отличие от ангажированного Яндекса. Я ввёл следующий запрос "about ls command in unix" и — о чудо! — второй результат нашёл долгожданный ответ, как же всё-таки правильно использовать этот ключ (о чём, кстати, ни в man, ни в info, ни слова!)

ls -d */

Display a list of directories in the current directory.


Всего лишь надо было написать одно маленькое предложеньице и маленький примерчик, чтобы пользователь понял и синтаксис и предназначение данного ключа. Почему данной, существенной, информации нет ни в man, ни в info? (риторический вопрос)
Я честно скажу, я не придумывал этот пример неделями или месяцами, я почти наугад взял команду ls и ключ -d. Представляете, даже если такое непредвзятый пример был показательным, что будет, если действительно всерьёз взяться за данный вопрос — ляп будет на ляпе... я на 100% согласен со Столлмэном, что существует дефицит хорошей документации по Linux.

P.S. Забираю камень, кинутый в огород Яндекса, обратно, т.к. у него выдача на данный запрос почти идентичная, и вторая ссылка ведёт к искомому ответу.  az   bv

12

chelovekot пишет:

Между прочим, команду ls -d -ls /etc можно записать проще - ls -dls /etc.

Я в курсе, '-d' выделил отдельно специально для вас, вы же говорите, что новичок в Linux.

chelovekot пишет:

...-d, --directory
              list directory entries instead of contents, and do not dereference symbolic links...

А вот выдержка из info ls:

`-d'
`--directory'
     List just the names of directories, as with other types of files,
     rather than listing their contents.  Do not follow symbolic links
     listed on the command line unless the `--dereference-command-line'
     (`-H'), `--dereference' (`-L'), or
     `--dereference-command-line-symlink-to-dir' options are specified.

`-H'
`--dereference-command-line'
     If a command line argument specifies a symbolic link, show
     information for the file the link references rather than for the
     link itself.

И переводится это как:

`-d'
`--directory'
      Выведет только имена директорий, по аналогии с выводом информации по другим типам файлов
      , а не отобразит содержимое директорий. Не следует по символьным ссылкам 
      перечисленным в командной строке, если только не указан ключ  `--dereference-command-line'
      (`-H '),` --dereference' ('-L'), или `--dereference-command-line-symlink-to-dir'

`-H '
`--dereference-command-line'
      Указывает вывести информацию по файлу, на который указывает символьная ссылка, а не 
      информацию по ссылке.

Вот смотрите:

+ открыть спойлер
$ ls -d /usr/src/linux
/usr/src/linux

Выведено только имя директории.

Если не указывать ключ '-d' то будет выдано содержимое директории:

$ ls /usr/src/linux
arch   COPYING  crypto  Documentation  firmware  include  ipc     Kconfig  lib          Makefile  modules.builtin  Module.symvers  README          samples  security  System.map  usr   vmlinux   block  CREDITS  distro  drivers        fs        init     Kbuild  kernel   MAINTAINERS  mm        modules.order    net             REPORTING-BUGS  scripts  sound     tools       virt  vmlinux.o 
ls -d -ls /usr/src/linux
0 lrwxrwxrwx 1 root root 23 июн 25 04:43 /usr/src/linux -> linux-3.12.21-gentoo-r1

Если указать так же ключ '-H' то будет выведена информация по директории на которую ссылается ссылка /usr/src/linux а не по ссылке:

$ ls -dH -ls /usr/src/linux
1 drwxr-xr-x 25 root root 1456 сен 14 13:30 /usr/src/linux

$ ls -d -ls /usr/src/linux 
0 lrwxrwxrwx 1 root root 23 июн 25 04:43 /usr/src/linux -> linux-3.12.21-gentoo-r1

# ls -d -ls /usr/src/linux-3.12.21-gentoo-r1
1 drwxr-xr-x 25 root root 1456 сен 14 13:30 /usr/src/linux-3.12.21-gentoo-r1

И в то же время если убрать ключ d, то будет показано содержимое директории и содержимое директории на которую указывает ссылка:

$ ls -ls /usr/src/linux-3.12.21-gentoo-r1
итого 25557
    1 drwxr-xr-x  33 root root      864 июн 25 04:48 arch
    3 drwxr-xr-x   3 root root     2760 июн 25 04:48 block
   20 -rw-r--r--   1 root root    18693 ноя  4  2013 COPYING
   96 -rw-r--r--   1 root root    95274 ноя  4  2013 CREDITS
   12 drwxr-xr-x   4 root root    12688 июн 25 04:54 crypto
    0 drwxr-xr-x   2 root root       72 июн 25 01:48 distro
    7 drwxr-xr-x 102 root root     7336 июн 25 01:47 Documentation
    3 drwxr-xr-x 112 root root     2944 июн 25 04:53 drivers
    2 drwxr-xr-x  36 root root     1600 июн 25 04:54 firmware
    8 drwxr-xr-x  73 root root     7904 июн 25 04:54 fs
    1 drwxr-xr-x  29 root root      752 июн 25 04:44 include
    1 drwxr-xr-x   2 root root     1232 июн 25 04:48 init
    1 drwxr-xr-x   2 root root     1392 июн 25 04:48 ipc
    4 -rw-r--r--   1 root root     2536 ноя  4  2013 Kbuild
    4 -rw-r--r--   1 root root      277 июн 25 01:45 Kconfig
    9 drwxr-xr-x  12 root root     9440 июн 25 04:48 kernel
   13 drwxr-xr-x  11 root root    13240 июн 25 04:54 lib
  260 -rw-r--r--   1 root root   264527 ноя  4  2013 MAINTAINERS
   48 -rw-r--r--   1 root root    48582 июн 25 01:45 Makefile
    6 drwxr-xr-x   2 root root     6088 июн 25 04:48 mm
    4 -rw-r--r--   1 root root     3505 июн 25 04:48 modules.builtin
   28 -rw-r--r--   1 root root    25282 июн 25 04:53 modules.order
  521 -rw-r--r--   1 root root   531509 июн 25 04:53 Module.symvers
    2 drwxr-xr-x  56 root root     1880 июн 25 04:52 net
   20 -rw-r--r--   1 root root    18736 ноя  4  2013 README
    8 -rw-r--r--   1 root root     7485 ноя  4  2013 REPORTING-BUGS
    0 drwxr-xr-x  12 root root      352 июн 25 01:48 samples
    3 drwxr-xr-x  13 root root     3096 июн 25 04:48 scripts
    1 drwxr-xr-x   9 root root      808 июн 25 04:48 security
    1 drwxr-xr-x  22 root root      960 июн 25 04:50 sound
 1870 -rw-r--r--   1 root root  1912579 июн 25 04:47 System.map
    0 drwxr-xr-x  17 root root      432 июн 25 01:48 tools
    1 drwxr-xr-x   2 root root      584 июн 25 04:48 usr
    0 drwxr-xr-x   3 root root       72 июн 25 01:48 virt
 8540 -rwxr-xr-x   1 root root 12922358 июн 25 04:47 vmlinux
14066 -rw-r--r--   1 root root 14388733 июн 25 04:47 vmlinux.o

$ ls /usr/src/linux
arch   COPYING  crypto  Documentation  firmware  include  ipc     Kconfig  lib          Makefile  modules.builtin  Module.symvers  README          samples  security  System.map  usr   vmlinux
block  CREDITS  distro  drivers        fs        init     Kbuild  kernel   MAINTAINERS  mm        modules.order    net             REPORTING-BUGS  scripts  sound     tools       virt  vmlinux.o

13 (05.10.2014 21:27:23 отредактировано chelovekot)

Помимо этого, не поленился, взял книгу, давно забытую и зарытую в шкафу)) — "Введение в UNIX System V Release 4 2-е издание"(UNIX System V Release 4: An Introduction 2nd Edition) аж 1996 года!  bm — посмотрел там про ls и нашёл ещё один полезный момент, который не раскрыт ни в существующих man'ax, ни в info'x, ни даже в интернете. Оказывается, с помощью этого ключа и ключа l можно просмотреть аттрибуты одной единственной папки в текущем каталоге. Например, нужно мне узнать аттрибуты о каталоге в Videos в текущем каталоге, тогда:

 Консоль:
[pushistiq@pushistiq ~]$ pwd
/home/pushistiq
[pushistiq@pushistiq ~]$ ls -dl Videos
drwxr-xr-x. 3 pushistiq pushistiq 4096 Sep 14 19:26 Videos
[pushistiq@pushistiq ~]$

Всё-таки, UNIX — родоначальник, папа). Видимо, придётся обращаться к нему, если что-то непонятно в man'ax сына Linux  ag

14 (05.10.2014 21:32:35 отредактировано chelovekot)

kostik87 пишет:

`-d' `--directory'       Выведет только имена директорий, по аналогии с выводом информации по другим типам файлов       , а не отобразит содержимое директорий. Не следует по символьным ссылкам       перечисленным в командной строке, если только не указан ключ `--dereference-command-line'       (`-H '),` --dereference' ('-L'), или `--dereference-command-line-symlink-to-dir'

Чёрным по белому, или наоборот  ag , написано "выведет...имена директорий..., а не отобразит содержимое директорий". Ок! Смотрите:

 Консоль:
[pushistiq@pushistiq ~]$ pwd
/home/pushistiq
[pushistiq@pushistiq ~]$ ls
Audiobooks   Documents  i2p         MyTask.tsk.delta  Podcasts   tor-browser_en-US  Библиотека Calibre
dead.letter  Downloads  Music       Notebooks         Public     Videos
Desktop      dwhelper   MyTask.tsk  Pictures          Templates  workspace
[pushistiq@pushistiq ~]$ ls -d
.
[pushistiq@pushistiq ~]$ hehe...where are these names of directories?)))

15 (05.10.2014 21:38:54 отредактировано chelovekot)

kostik87 пишет:

$ ls -d /usr/src/linux
/usr/src/linux

Выведено только имя директории.

Вы понимаете разницу между директориями и директорией? Множественное и единственное число. В оригинальном мане написано directorIES.
А вот ещё один прикольный финт ушами:

 Консоль:
[pushistiq@pushistiq ~]$ ls -d *
Audiobooks   Documents  i2p         MyTask.tsk.delta  Podcasts   tor-browser_en-US  Библиотека Calibre
dead.letter  Downloads  Music       Notebooks         Public     Videos
Desktop      dwhelper   MyTask.tsk  Pictures          Templates  workspace
[pushistiq@pushistiq ~]$ ls -d */
Audiobooks/  Documents/  dwhelper/  Music/      Pictures/  Public/     tor-browser_en-US/  workspace/
Desktop/     Downloads/  i2p/       Notebooks/  Podcasts/  Templates/  Videos/             Библиотека Calibre/
[pushistiq@pushistiq ~]$ ls -d N*/
Notebooks/
[pushistiq@pushistiq ~]$ ls -d P*/
Pictures/  Podcasts/  Public/
[pushistiq@pushistiq ~]$

16

chelovekot пишет:

Чёрным по белому, или наоборот   , написано "выведет...имена директорий..., а не отобразит содержимое директорий". Ок! Смотрите:

Т.е. вы не в курсе, что ".." - директория на уровень выше, а "." - текущая директория. Вы же не задали маску для ls вида "*/*/*/", что же он по вашему должен вывести?

17 (05.10.2014 21:50:54 отредактировано chelovekot)

kostik87 пишет:

Т.е. вы не в курсе, что ".." - директория на уровень выше, а "." - текущая директория. Вы же не задали маску для ls вида "*/*/*/", что же он по вашему должен вывести?

По-моему, он должен вывести список имён каталогов в текущем каталоге, как и обещал в мане  ag , а на деле получаем ответ "да, хозяин, я - текущий каталог, а список каталогов вы не получите"  bj  bg

18

chelovekot пишет:

Вы понимаете разницу между директориями и директорией?

Вы понимаете разницу между [файл...] и [файл]?
Как думаете, сколько в вашем примере параметров получает ls -d *

19 (05.10.2014 21:57:02 отредактировано chelovekot)

bormant пишет:

Вы понимаете разницу между [файл...] и [файл]?

Честно говоря, не очень...было бы интересно узнать.

bormant пишет:

Как думаете, сколько в вашем примере параметров получает ls -d *

Очевидно, что параметр всего лишь один, а именно -d (я про запрос "ls -d *")

20 (05.10.2014 22:08:31 отредактировано bormant)

chelovekot пишет:

Очевидно, что параметр всего лишь один

Отлично! Отлично от правильного.
В вашем примере "ls -d *" команда ls получит на вход:
- одну опцию (необязательный параметр) "-d"
- 19 параметров содержимого каталога, вот этих "echo *"
- ls параметра "*" не увидит, его раскроет в список подходящих элементов сам bash (globbing)

Если не указать "-d", то ls выведет также и содержимое 16 каталогов, полученных в командной строке.

[файл] -- имеется в виду 0 или один файл
[файл...] -- имеется в виду 0 или больше файлов

21 (05.10.2014 22:09:34 отредактировано chelovekot)

bormant пишет:

В вашем примере "ls -d *" команда ls получит на вход:
- одну опцию (необязательный параметр) "-d"
- 19 параметров содержимого каталога, вот этих "echo *"
- ls параметра "*" не увидит, его раскроет в список подходящих элементов сам bash (globbing)

То есть, знак "-" к параметрам как бы не относится и можно заменить его на "*"? Вы мне открыли Америку...  bw
То есть, допустим, что есть некая команда

 Консоль:
укусить
и у неё всего лишь 3 параметра -l , -m, -n, то если я наберу
 Консоль:
укусить *
, то вывод будет эквивалентом
 Консоль:
укусить -lmn
?

bormant пишет:

[файл] -- имеется в виду 0 или один файл
[файл...] -- имеется в виду 0 или больше файлов

Я даже не понял, к чему это было, но было познавательно. Это традиция описания инструкций в манах, я так понимаю?

22 (05.10.2014 22:10:23 отредактировано kostik87)

chelovekot пишет:

То есть, знак "-" к параметрам как бы не относится и можно заменить его на "*"? Вы мне открыли Америку... 

Имеется ввиду, что вместо * на вход ls будут подставлены все файлы и директории, находящиеся в текущей директории.

23

kostik87 пишет:

Имеется ввиду, что вместо * на вход ls будут подставлены все файлы и директории, находящиеся в текущей директории.

Спасибо, перевели. Мне иногда кажется, что я иностранец   ab

24 (05.10.2014 22:29:09 отредактировано bormant)

chelovekot пишет:

То есть, знак "-" к параметрам как бы не относится и можно заменить его на "*"?

Не надо читать между строк того, чего не было написано.

Повторю пример.

Пусть в текущем каталоге есть каталоги doc/ bin/ и файлы file1, file2.
Когда вы командуете
ls *
то бинарник ls в командной строке получает вот это:
ls doc bin file1 file2
и выводит, как просили, содержимое каталогов doc/, bin/, и сведения о файлах file1 и file2.

Когда вы командуете
ls -d *
то бинарник ls в командной строке получает вот это:
ls -d doc bin file1 file2
и выводит, как просили, сведения о самих каталогах (не их содержимом) doc/ bin/и файлах file1 и file2.

Когда вы командуете
ls -d */
то бинарник ls в командной строке получает вот это:
ls -d doc/ bin/
и действует, как описано выше.

Про разницу [файл] и [файл...] было сказано в ответ на вопрос о множественном числе в описании опции "-d". В общем случае ls в командной строке получает больше одного параметра, -d инструктирует выводить сведения о самих каталогах, полученных в командной строке, а не об их содержимом.

chelovekot пишет:

list directory entries instead of contents = список записей каталога вместо содержимого

Учите язык. Тут написано несколько иное: "перечисляет каталоги вместо [их] содержимого".

Каталог -- это специальный файл, записями (entries) которого являются сведения о файлах (file entries) и других каталогах (directory entries). Вот об этих "directory entries" идёт речь в описании опции "-d".

Теперь-то понятно?

25 (05.10.2014 22:46:59 отредактировано chelovekot)

bormant пишет:

Пусть в текущем каталоге есть каталоги doc/ bin/ и файлы file1, file2.
Когда вы командуете
ls *
то бинарник ls в командной строке получает вот это:
ls doc bin file1 file2
и выводит, как просили, содержимое каталогов doc/, bin/, и сведения о файлах file1 и file2.

Полагаю, что содержимое каталогов doc/ и bin/ он выведет тогда, и только тогда, когда будет произведена смена текущего каталога, либо будет чётко указано ls ./bin (или ls ./doc, если хочется узнать, что в каталоге doc).

bormant пишет:

Когда вы командуете
ls -d *
то бинарник ls в командной строке получает вот это:
ls -d doc bin file1 file2
и выводит, как просили, сведения о самих каталогах (не их содержимом) doc/ bin/и файлах file1 и file2.

Когда вы командуете
ls -d */
то бинарник ls в командной строке получает вот это:
ls -d doc/ bin/
и действует, как описано выше.

Понятно. Я не знал, что именно папка/, а не /папка означает каталог для шела.

bormant пишет:

Учите язык. Тут написано несколько иное: "перечисляет каталоги вместо [их] содержимого".

Учу язык, и знаю, что list - это список (либо выводить список, если в значении глагола), а directory entries - именно каталожные записи (грубо говоря), ибо первое идёт прилагательное, а потом уже существительное, но не наоборот: например, школьные полицейские - school policemen, но никак не policmen school.

26

bormant пишет:

Каталог -- это специальный файл, записями (entries) которого являются сведения о файлах (file entries) и других каталогах (directory entries). Вот об этих "directory entries" идёт речь в описании опции "-d".

Если каталог это файл, то почему же тогда вывод ls -d */ выдаёт нам только папки? Какая-то прям рекурсия получается...
Если вы переводите file entries как "сведения о файлах", тогда и directory entries надо переводить как "сведения о каталогах" - логично?  ab  Я сейчас только про логику, но не про правильность перевода (тут я бы не согласился).

27 (05.10.2014 23:22:43 отредактировано algri14)

chelovekot пишет:

Понятно. Я не знал...

мне, пока ещё, не было необходимости во всём этом разбираться, но вот когда она придёт, хотелось бы ВСЮ эту инфу почитать в удобочитаемом варианте, а не по кусочку как пазл складывать, попробуй потом эту тему найти - "вот где собака порыта" (как говорил наш бывший генсек)

Изучайте нюансы и мелочи - порой в них заключена вся суть проблемы!
Mageia 5.1х86_64 KDE; Mageia 6х86_64 Xfce [ highlight=#000][ console=inline] [ b][ color=#4f4]текст[ /color][ /b] [ /console][ /highlight]

28

chelovekot пишет:

Однако не указано, сколько будет колонок, как это будет выглядеть и т.д.

дык это от версии ФС/ls зависит.

chelovekot пишет:

Я это понял так, что я этим ключом включаю (кстати, а как выключить?)

без ключа он выключен, с ключом включен. ИМХО глупый вопрос.

chelovekot пишет:

я эмпирическим путём должен себе представить то, что имелось в виду.

в школе информатику не проходили? Рекурсию  не изучали? Тоже вопрос неумный ИМХО.

chelovekot пишет:

ибо, включив свет, он не выключится до тех пор, пока вы его не выключите, извиняюсь за клинчкизм

опции действуют только на ту команду, с которой применяются. Если вы  написали tar -cJvv,  то ваш  тарболл будет пожат xz.  А следующая команда tar -cvv вообще сжимать не будет. Только опции set действуют постоянно. (см.man bash и help set).

chelovekot пишет:

Запустил терминал, ввёл ls -R и....вывелась огромная простыня со списком — внимание! — не только каталогов, но и всех файлов

в Linux всё файлы. И каталоги  и файлы выводятся ls. Т.ч. это не баг, а фича.

chelovekot пишет:

по поводу того, что ощущается некий дефицит по-настоящему доступных, аргументированных, иллюстрированных (я разовью его мысль) руководств с наглядными примерами того, что получит пользователь на выходе при применении той или иной программы, с тем или иным ключом.

а всё потому, что вы НЕ  ДОЧИТАЛИ ДО КОНЦА man ls.

Вот что там  в  конце написано:

SEE ALSO
       The  full documentation for ls is maintained as a Texinfo manual.  If the info and ls programs
       are properly installed at your site, the command

             

 Консоль:
info coreutils 'ls invocation'

       should give you access to the complete manual.

Ну ССЗБ,  что ещё сказать?

chelovekot пишет:

Поделитесь ссылкой.

Откройте для себя info!!!

chelovekot пишет:

Какие ресурсы с доступными для понимания даже для новичка

делить на ноль нельзя. Вам нужен подробный мануал с  погружение во все  тонкости? Тогда info. Но эти(все) тонкости начинающему не нужны.

kostik87 пишет:

то ключ -R будет всегда активирован

не всегда, а только в интерактивном  режиме. В режиме исполнения скриптов алиасы не работают(если это конечно не изменить). Ну и изнутри mc/vim/etc тоже алиасы могут и  не работать,  т.к. это вообще говоря не интерактивный  режим тоже. Но тоже можно настроить конечно.

chelovekot пишет:

Вот, к примеру, что вызовет ключ -d (--directory)?

       -d, --directory
              list directory entries instead of contents, and do not dereference symbolic links

а что непонятно?

покажет каталог "точку". И всё. Это без параметров. Обычно используют с параметром "звёздочка"(и с другими шаблонами), тогда bash раскрывает звёздочку в список всех файлов,  а ls -ld показывает их  не лазая внутрь каталогов. Просто ls лазает.

Например:

 Консоль:
$ ls  -ld /b*
drwxr-xr-x 2 root root 4096 сен 26 03:37 /bin/
drwxr-xr-x 5 root root 1024 авг 29 15:09 /boot/

kostik87 пишет:

Вообще, если вам нужно получить вывод, к примеру только директорий или только файлов, или директорий рекурсивно, то для этого есть утилита find:

find не сортирует. И да, у find есть опция -ls для таких случаев.

chelovekot пишет:

(т.е., вместо записей содержимого будет возвращён список неких загадочных записей каталога)

facepalm
Каталог == обычный файл, в котором лежит таблица ИМЁН файлов. Каждое ИМЯ -- одна запись (entries).
Просто новички почему-то считают, что имя приколочено к файлу. Это не так. На самом деле, у файла нет имени, только номер inode. А имена хранятся в каталогах. Точнее в записях внутри каталогов. Там пара имя—номер_инода. Ну иногда ещё что-нить(в  некоторых FS/OS). Вот  ls она перебирает эти записи в указанных каталогах.(если не указано, то в точке aka $PWD). А если с -d,  то НЕ перебирает.

chelovekot пишет:

and do not dereference symbolic links = и не разыменовывать символические ссылки (да-да, вот тут-то у новичка начнётся перезагруз мозга

ну обычно  оно разименовывает, и  по  ним  куда-то уходит (т.е. показывает содержимое каталога, на который указывает симлинк). С -d оно просто покажет этот симлинк(даже если он  ведёт в каталог).

chelovekot пишет:

Более того, даже метод научного тыка ему не помог, ибо понять, что выдаёт ему команда ls -d — новичок просто не в состоянии, т.к. она не выдаёт ровным образом ничего, кроме загадочной точки

написано жеж:
List  information about the FILEs (the current directory by default).
точка == текущая директория. Вот она и  показывается. Что  ls,  что ls -d.
Просто ls точку не показывает, т.к. это т.н. "скрытый файл". А вот ls -a показывает.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

29

chelovekot пишет:

Почему данной, существенной, информации нет ни в man, ни в info?

потому что к самой ls это НЕ относится.
в данном случае ls выводит всё подряд, а каталоги фильтрует bash под параметр

 */

Это фича bash'а, и она не будет (или будет по  другому)  работать в других шеллах. В вашем руководстве разве об этом не сказано? Тогда закачайте его обратно.

chelovekot пишет:

ляп будет на ляпе... я на 100% согласен со Столлмэном, что существует дефицит хорошей документации по Linux.

проблема в вас исключительно. Вы не знаете азов. И хотите, что-бы документация была понятной.

Вторая ваша ошибка: man pages это именно _справочник_, а вовсе не руководство(user guide). Как в любом справочнике,  в man pages вообще не говорится ЗАЧЕМ это всё нужно. Предполагается, что вы знаете ЗАЧЕМ. Просто  точно не помните(не знаете) КАК. Ну например "как узнать точное время модификации файла?" ls -l показывает приближённое, с точностью до минуты, а если файл прошлого года и старше — с точностью до суток. (на месте времени показывается год).

chelovekot пишет:

а directory entries - именно каталожные записи

именно так. Вот она и показывает без параметров каталожную запись "точка". А с параметром dir1/ dir2/ dir3/ показывает ЗАПИСИ. Именно эти. Это вам намёк на то, что надо ls -d кормить ЗАПИСЯМИ, а  не одной записью. Например для этих записей так сделать нужно:

 Консоль:
ls -dl dir{1..3}/

chelovekot пишет:

Если каталог это файл, то почему же тогда вывод ls -d */ выдаёт нам только папки?

это фича баша. Простые файлы не подходят  под шаблон */.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

30

chelovekot пишет:

Полагаю, что содержимое каталогов doc/ и bin/ он выведет тогда, и только тогда, когда будет произведена смена текущего каталога, либо будет чётко указано ls ./bin (или ls ./doc, если хочется узнать, что в каталоге doc).

Рано вам пока полагать, пока только читать и запоминать.
Еще раз, возвращаясь к примеру, "ls *" в описанной выше ситуации, получив на вход параметры "ls bin doc file1 file2", ls, видя, что bin и doc -- каталоги, выведет их содержимое. Ключ -d отменяет именно это поведение.

Теперь понятно?