Я тут как-то читал в инете интервью с Р.Столлмэном, по-моему (могу ошибиться). Подметил такой интересный ответ на свой вопрос: что, якобы, не хватает хороших, доступных для понимания даже человеку, не особо сведущему в IT, руководств по использованию пакетов, возможностей приложений, утилит. Мне, правда, тогда этот ответ показался несколько абсурдным, т.к. в гугле, когда что-то ищешь, куча ссылок на man-страницы, руководства разной степени давности, многочисленные википедии различных дистрибутивов и т.д. Но прошло время и я убедился, что ответ не абсурден, а меток. В этом плане, есть значительные успехи у Ubuntu-сообщества: много руководств по тем или иным задачам, написанных доступным, даже для начинающих пользователей, языком, исповедуя старый дедовский принцип "даже дураку должно быть понятно". Мне, лично, нравится, когда пишут именно таким образом, без различного рода умничаний и недосказанностей. Чтобы не быть голословным, приведу небольшой пример: например, мне нужно узнать, что же можно полезного сделать командой ls? Я иду в поисковик и вбиваю ls в строку поиска — сразу выходит множество ссылок. В большинстве случае, выходят те же самые man'ы, в той или иной интерпретации. Конечно, около 60-70 % информации там написано вполне доступно, но отсутствуют примеры применения программ. Давайте для примера возьмём ту же Википедию. Что мы там видим по поводу ls? В разделе "Ключи POSIX" написано, что ключ -С печатает список файлов в колонках с вертикальной сортировкой. Однако не указано, сколько будет колонок, как это будет выглядеть и т.д. Это самое безобидное. Остановимся ещё на паре примеров. Идём дальше, ключ -R включает рекурсивную выдачу списка каталогов. Честно признаюсь, этой опцией я, по-моему, ни разу не пользовался, так что всё будет честно и наглядно. Я не буду никуда подглядывать и скажу, как я понял эту фразу сам. Ну, понятное дело, что никакой наглядной картинки (скриншота) не приложено и к этому ключу, поэтому я эмпирическим путём должен себе представить то, что имелось в виду. Я это понял так, что я этим ключом включаю (кстати, а как выключить?) некий режим, который будет постоянно со мной (ибо, включив свет, он не выключится до тех пор, пока вы его не выключите, извиняюсь за клинчкизм), и который рекурсивно выдаст список каталогов, т.е. выдаст мне список в котором будет указан текущий каталог и все другие каталоги, которые содержатся в нём, и которые содержатся в них (других каталогах, помимо текущего). Окей, давайте я посмотрю, правильно я понял, что имелось в виду. Запустил терминал, ввёл ls -R и....вывелась огромная простыня со списком — внимание! — не только каталогов, но и всех файлов *WALL* .... не хочу писать длинного поста, закончу на этом примере. Вы понимаете, что если пройдёмся дальше, то... Таким образом, я соглашаюсь с точкой зрения Столлмэна по поводу того, что ощущается некий дефицит по-настоящему доступных, аргументированных, иллюстрированных (я разовью его мысль) руководств с наглядными примерами того, что получит пользователь на выходе при применении той или иной программы, с тем или иным ключом. Я уж молчу про некие комментарии, сноски в духе "эта опция/ключ будет полезна для того-то или того-то" и т.п. В итоге, пользователю порой проще зайти на форум и спросить у сообщества как делается примитивное действие или как решается довольно тривиальная задача, что в итоге засоряет форумы повторяющимися из месяца в месяц темами — и масса эта растёт и растёт. Я считаю, что лучше сделать понятное и доступное даже дураку наглядное руководство, чем сотни раз отсылать пользователей читать man'ы, которые понятны зачастую только тем, у кого есть значительный опыт в их применении. Может кто-то знает адрес википедии, которая разжёвывает man'ы в том духе, о котором я писал выше? Поделитесь ссылкой. Перейду к вопросу, наконец....
Вопросы: действительно ли не хватает руководств, которые понятны даже домохозяйкам (если наберутся терпения прочитать) для Linux-систем? Какие ресурсы с доступными для понимания даже для новичка руководствами вы знаете (ссылки приветствую!)?
Я это понял так, что я этим ключом включаю (кстати, а как выключить?) некий режим, который будет постоянно со мной (ибо, включив свет, он не выключится до тех пор, пока вы его не выключите, извиняюсь за клинчкизм), и который рекурсивно выдаст список каталогов, т.е. выдаст мне список в котором будет указан текущий каталог и все другие каталоги, которые содержатся в нём, и которые содержатся в них (других каталогах, помимо текущего).
Открываем man и читаем расшифровку имени команды:
[console]
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.
[/console]
Отсюда вывод: ls - выводит информацию по файлам в текущей директории по умолчанию. Вопрос закрыт. Теперь по поводу ключа '-R', он модифицирует поведение команды ls, если вы вызываете команду без этого ключа, то поведение стандартное, т.е. выводится информация о файлах только в текущей директории, если ключ активирован - в поддиректориях тоже.
Это стандартное поведение всех команд в Linux, ключ работает только если указан, об этом нет смысла повторять. Есть ещё нюанс в виду alias, т.е. если вы к примеру создадите alias
text
alias ls='ls -R'
то ключ -R будет всегда активирован, ибо при наборе в командной оболочке 'ls' всегда будет подразумеваться, что вы вызываете 'ls -R', убрать это можно только удалив alias или вызвав ls по полному пути, т.е. /bin/ls .
Теперь по поводу доступности документации, все дистрибутивы linux поставляются вместе с man страницами,
text
man ls
в них содержится краткое описание программы, особенностей её работы и ключей, модифицирующих её поведение. Помимо этого есть ещё info страницы,
text
info ls
в них уже развёрнуто описывается программа, со всеми ключами, способы работы с ней и примерами.
Ну и никто вам не запрещает вызвать команду с теми ключами, которые вас интересуют и проверить как она работает.
Прежде чем что-то представлять почитайте man и info страницы по интересующей вас программе. Это официальная документация и в Linux её много, только читай и разбирайся, ну а по поводу кем-то написанных руководств, так там зачастую содержится больше ошибок, чем полезной информации.
Я бы сказал, что недостаток в отсутствии перевода документации. Конечно много переведено, например, на русский язык, но многое осталось не переведенным.
Отсюда вывод: ls - выводит информацию по файлам в текущей директории по умолчанию. Вопрос закрыт.
Ну, хорошо, я вижу, что вы не поняли суть моего вопроса. Давайте начну с другой стороны. Вот, к примеру, что вызовет ключ -d (--directory)? Я вам кратко опишу, как я это понял, что подразумевается в man'e в описании. Я так понял, что это ключ, который показывает папки, вместо содержимого. То есть, если его употребить, тогда ls вызовет только папки (без файлов). Да? Или нет?
Ни нет и не да. Этот ключ нужен для совместного использования с другими ключами для обработки только текущей директории, сравните:
text
ls -d -ls /etc
ls -ls /etc
Ну и ключевой момент во всём вашем высказывании это " Я так понял," и "Как понял Я", вы не задумывались, что здесь дело в вас? Вообще, если вам нужно получить вывод, к примеру только директорий или только файлов, или директорий рекурсивно, то для этого есть утилита find:
- вывод только директорий первого уровня в указанной директории;
text
find /usr -maxdepth 1 -type d
- вывод только файлов рекурсивно;
text
find /usr -type f
- вывод директорий рекурсивно;
text
find /usr -type d
В общем, вся ваша проблема лишь в том, что вы неправильно выбираете инструменты и имеете какое-то уж определённое "как понял я", вы даже не стараетесь понять сути написанного и анализиваровать всё описание в сумме, выдираете куски описания и интерпретируйте их как попало.
Вопросы:
действительно ли не хватает руководств, которые понятны даже домохозяйкам (если наберутся терпения прочитать) для Linux-систем?
Какие ресурсы с доступными для понимания даже для новичка руководствами вы знаете (ссылки приветствую!)?
chelovekot, во-первых - руководств действительно катострофически не хватает, это я Вам говорю как чайник(без году недяля в линуксе - 1 год и 6 мес), ведь для обучения нужны элементарные знания и мелкие секретики линукса, а их очень трудно найти в инете для каждого конкретного дистра;
во-вторых - самый эффективный ресурс, это форум, потому как быстро и с поправкой на действительность. Ещё можно добавить ВИКИ, конкретного дистра, там тоже есть наработки форума, но для новичков и там очень мало. Я уже писал, что по этой причине на форуме MRC Mageia взялся вести рубрику ЧАВО (FAQ) для новичков. Так как мне как новичку более известно, что требуется новичкам, но с поправкой, по мере возникновения проНблемы. Нет проблемы - нет и понятия, что надо, такова планида всех самоучек.
Но писать статью не каждый возьмётся - это отнимает много времени, а потом не каждому хочется элементарщину опять по N-ному разу объяснять. На Linux Forum'е вообще нет такой рубрики(может я не нашёл?), зато заносчивого флуда и грызни МОРЕ(тоже уже писал), такое ощущение, что некотырые это делают от своей собственной скуки, а не спора и истины ради
PS: очень многие дают дельные и толковые ответы, даже на туповатые вопросы новичков.
На самом деле здесь довольно спокойно, вы сходите на http://linux.org.ru и посмотрите как там.
По поводу проблем новичков я с вами отчасти согласен, но ТС либо неправильно для примера выбрал утилиту, если даже он обобщал, в любом случае слишком это всё "мелко", мне всё же кажется он не старается понять. Если говорить о проблемах новичков более детально, то все они "разжёваны" на форумах выбранных ими дистрибутивов, а все основные моменты расписаны в документации по установки дистрибутива или на wiki страницах дистрибутива и что бы не столкнуться с проблемой достаточно точно следовать рекомендациям в этой документации, но как правило не просто бездумно копировать и выполнять команды, а стараться понять почему именно так. Любая такая инструкция это уже готовый пример, в ней команды вызываются с множеством ключей, сама команда пояснена, если смысл ключей не ясен уже из пояснения, так почитай 'man команда' и всё станет ясно. Прочие проблемы новичков, с которыми они сталкиваются легко решаются простым поиском в поисковой системе.
Так же, что бы новичок перестал быть новичком, без разницы сколько он уже использует Linux, он должен обзавестись некоторыми навыками:
- уметь анализировать свои действия и описанные команды;
- уметь работать с документацией, справочными материалами;
- уметь правильно составить запрос в поисковую систему и вопрос на форуме;
Как только новичок обзаведётся этими навыками он сможет решить любую возникшую у него задачу даже без использования кем-то написанного руководства.
На самом деле здесь довольно спокойно, вы сходите на http://linux.org.ru и посмотрите как там.
Не будем всех под одну гребёнку, я ведь сказал - некоторые.
А вообще, мой предыдущий пост о том, что для новичков, где-то самим новичкам надо писать образовательные статьи для популяризации линукса и помощи начинающим, дабы новички могли найти элементарную информацию и не захломлять вопросами форум темами раскрытыми в ВИКИ.
Ни нет и не да. Этот ключ нужен для совместного использования с другими ключами для обработки только текущей директории, сравните:
text
ls -d -ls /etc
ls -ls /etc
Ну и ключевой момент во всём вашем высказывании это " Я так понял," и "Как понял Я", вы не задумывались, что здесь дело в вас? Вообще, если вам нужно получить вывод, к примеру только директорий или только файлов, или директорий рекурсивно, то для этого есть утилита find:
- вывод только директорий первого уровня в указанной директории;
text
find /usr -maxdepth 1 -type d
- вывод только файлов рекурсивно;
text
find /usr -type f
- вывод директорий рекурсивно;
text
find /usr -type d
В общем, вся ваша проблема лишь в том, что вы неправильно выбираете инструменты и имеете какое-то уж определённое "как понял я", вы даже не стараетесь понять сути написанного и анализиваровать всё описание в сумме, выдираете куски описания и интерпретируйте их как попало.
[/quote]
Между прочим, команду 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 = и не разыменовывать символические ссылки (да-да, вот тут-то у новичка начнётся перезагруз мозга :D )
В итоге, что мы имеем? Мы имеем новичка, который имеет примерно такой вид %) *CRAZY* *WASSUP* , несмотря на то, что прилежно прочитал man.
Более того, даже метод научного тыка ему не помог, ибо понять, что выдаёт ему команда ls -d — новичок просто не в состоянии, т.к. она не выдаёт ровным образом ничего, кроме загадочной точки
[console][pushistiq@pushistiq ~]$ ls -d
.
[pushistiq@pushistiq ~]$
[/console]
Ладно, не буду больше ждать ответа. Но у меня хорошие новости, парни — правда, только для тех, кто знает английский язык (хотя бы на уровне "читаю со словарём"). Сейчас я подскажу, в каком русле двигаться. У нас возникли непонятки с загадочным ключом -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. Забираю камень, кинутый в огород Яндекса, обратно, т.к. у него выдача на данный запрос почти идентичная, и вторая ссылка ведёт к искомому ответу. *DRINK* *WRITE*
Между прочим, команду 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:
text
`-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.
И переводится это как:
text
`-d'
`--directory'
Выведет только имена директорий, по аналогии с выводом информации по другим типам файлов
, а не отобразит содержимое директорий. Не следует по символьным ссылкам
перечисленным в командной строке, если только не указан ключ `--dereference-command-line'
(`-H '),` --dereference' ('-L'), или `--dereference-command-line-symlink-to-dir'
`-H '
`--dereference-command-line'
Указывает вывести информацию по файлу, на который указывает символьная ссылка, а не
информацию по ссылке.
Вот смотрите:
Показать
text
$ ls -d /usr/src/linux
/usr/src/linux
Выведено только имя директории.
Если не указывать ключ '-d' то будет выдано содержимое директории:
text
$ 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
Помимо этого, не поленился, взял книгу, давно забытую и зарытую в шкафу)) — "Введение в UNIX System V Release 4 2-е издание"(UNIX System V Release 4: An Introduction 2nd Edition) аж 1996 года! *CRAZY* — посмотрел там про ls и нашёл ещё один полезный момент, который не раскрыт ни в существующих man'ax, ни в info'x, ни даже в интернете. Оказывается, с помощью этого ключа и ключа l можно просмотреть аттрибуты одной единственной папки в текущем каталоге. Например, нужно мне узнать аттрибуты о каталоге в Videos в текущем каталоге, тогда:
[console][pushistiq@pushistiq ~]$ pwd
/home/pushistiq
[pushistiq@pushistiq ~]$ ls -dl Videos
drwxr-xr-x. 3 pushistiq pushistiq 4096 Sep 14 19:26 Videos
[pushistiq@pushistiq ~]$ [/console]
Всё-таки, UNIX — родоначальник, папа). Видимо, придётся обращаться к нему, если что-то непонятно в man'ax сына Linux :D
`-d' `--directory' Выведет только имена директорий, по аналогии с выводом информации по другим типам файлов , а не отобразит содержимое директорий. Не следует по символьным ссылкам перечисленным в командной строке, если только не указан ключ `--dereference-command-line' (`-H '),` --dereference' ('-L'), или `--dereference-command-line-symlink-to-dir'
Чёрным по белому, или наоборот :D , написано "выведет...имена директорий..., а не отобразит содержимое директорий". Ок! Смотрите:
[console][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?))) [/console]
Чёрным по белому, или наоборот , написано "выведет...имена директорий..., а не отобразит содержимое директорий". Ок! Смотрите:
Т.е. вы не в курсе, что ".." - директория на уровень выше, а "." - текущая директория. Вы же не задали маску для ls вида "*/*/*/", что же он по вашему должен вывести?
Т.е. вы не в курсе, что ".." - директория на уровень выше, а "." - текущая директория. Вы же не задали маску для ls вида "*/*/*/", что же он по вашему должен вывести?
По-моему, он должен вывести список имён каталогов в текущем каталоге, как и обещал в мане :D , а на деле получаем ответ "да, хозяин, я - текущий каталог, а список каталогов вы не получите" *ROFL* *WASSUP*
Отлично! Отлично от правильного.
В вашем примере "ls -d *" команда ls получит на вход:
- одну опцию (необязательный параметр) "-d"
- 19 параметров содержимого каталога, вот этих "echo *"
- ls параметра "*" не увидит, его раскроет в список подходящих элементов сам bash (globbing)
Если не указать "-d", то ls выведет также и содержимое 16 каталогов, полученных в командной строке.
[файл] -- имеется в виду 0 или один файл
[файл...] -- имеется в виду 0 или больше файлов