LINUX.ORG.RU
ФорумTalks

[быдлофлеш][authorisation required][конец света]приплыли...

 


0

0

прислали в IRC:

вопрос из теста на сертификат "Основы Linux" на http://tests.specialist.ru/:

Какой конвейер программ позволяет посчитать количество файлов в текущей директории?

1 ls | wc -l

2 ls -l | wc -l

3 ls | fmt

4 ls | wc -w

приплыли...

★★★

сынко, вылезай на берег ... хватит в этой холодной воде плескаться, яйца простудишь.

phasma ★☆
()

Дожили...

anonymous
()
Ответ на: комментарий от anonymous

Я понимаю, что просто ls передаёт список "видимых" файлов, но почему автор даёт этот вариат как правильный?!

GFORGX ★★★
() автор топика
Ответ на: комментарий от GFORGX

ну, я по ссылкам не ходил, что дает автор не видел. =)

наверное он забыл, что возвращает ls, все мы люди...

anonymous
()
Ответ на: комментарий от ip1981

Это правильно. Хотя каталог тоже файл, конечно, думаю автор теста имел в виду именно файлы (а есть же сслыки ещё, ага)

octy ★★
()

плыви обратно, раз такой умный

anonymous
()
Ответ на: комментарий от GFORGX

> файлы с . в начале - уже не файлы?

файлы, но ls -a выводит еще `.' и `..', поэтому правильным будет `ls -1A | wc -l', где `-1' можно опустить.
-1 - (The numeric digit ``one''.) Force output to be one entry per line. This is the default when output is not to a terminal.
-A - Include directory entries whose names begin with a dot (`.') except for `.' and `..'. Automatically set for the super-user unless -I is specified.

Кстати, пример с find(1), я думаю, тоже правильный.

anonymous
()
Ответ на: комментарий от xtron

>верный номер 4

хотя если в имени файла есть пробел то не один вариант не верен

xtron
()
Ответ на: комментарий от octy

> а есть же сслыки ещё, ага

А есть еще опция `-L':
If argument is a symbolic link, list the file or directory the link references rather than the link itself. This option cancels the `-P' option.

Мне вот интересно как этот недотест обозначает hardlink'и? Ведь отличить хардлинк от простого файла нереально, разве что только по совпадению inode'а.

anonymous
()

хы:

mkdir dir
touch dir/.file
ls dir | wc -l
0
ls -l dir | wc -l
1
ls dir | fmt

ls dir | wc -w
0

gnomino
()
Ответ на: комментарий от anonymous

>Путь не забыл указать? ,)

Поумолчанию find будет искать файлы рекурсивно, начиная с текущего каталога, так что ошибки нет

gnomino
()
Ответ на: комментарий от gnomino

> Поумолчанию find будет искать файлы рекурсивно, начиная с текущего каталога, так что ошибки нет

(~). find -type f -maxdepth 1 | wc -l
find: illegal option -- t
find: illegal option -- y
find: illegal option -- p
find: illegal option -- e
find: f: No such file or directory
0
Exit 1

Видимо не каждая версия. У меня bsd'шная.

anonymous
()

сайт на asp. спасибо, закапывайте. кака платформа - такие и тесты

AiFiLTr0 ★★★★★
()

Не понимаю веселья...

Абсолютно корректный тест: автор не указывает, что именно он понимает под словами "количество файлов в текущей директории", но из всех _приведенных_ вариантов только вариант 4 непротиворечиво считает именно файлы в текущей директории, а не что-либо другое (ls -l | wc -l посчитает еще информационную строку).

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

>только вариант 4 непротиворечиво считает именно файлы в текущей
директории:

mkdir dir
cd dir
touch .file
touch file
ls | wc -w
1

облом однако ;)

gnomino
()
Ответ на: комментарий от gnomino

хотя я тож не прав:

ls -l
итого 0
-rw-r--r-- 1 user users 0 Апр 3 20:31 file

по этому и двойка, тут только find все варианты не верны.

gnomino
()
Ответ на: комментарий от gnomino

> ЧЯДНТ?

:-)

Убери конвейер и посмотри, что именно ты посчитал. Или так:

mkdir dir

cd dir

touch .file1

touch .file2

touch .file3

touch file

И теперь ls -l | wc -l в студию!

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Только 2-й а не 4-й вариант, конечно, a?

Ибо

[octy@octylt x]$ ls
Воля Вселенной.avi
[octy@octylt x]$ ls | wc -l
1
[octy@octylt x]$ ls | wc -w
2
[octy@octylt x]$

octy ★★
()
Ответ на: комментарий от Die-Hard

>ты этот тест не прошел даже после подробных пояснений

ls | wc -w

1

да и ты тоже, говорю, правильных вариантов среди представленных _нет_

gnomino
()
Ответ на: комментарий от octy

он не покажет файлы с точкой, файлы с точкой покажет ls -a, но она покажет и псевдофайлы "." "..". ls + wс не годятся для подщета файлов. Сам всегда считаю файндом, но это нужно крайне редко.

gnomino
()
Ответ на: комментарий от octy

> Тьфу, первый в смысле.

:-) Да, ты прав -- я этот тоже не прошел!

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

Но тест, тем не менее, абсолютно корректный и далеко не тривиальный, согласись!

Die-Hard ★★★★★
()
Ответ на: комментарий от anonymous

>Ведь отличить хардлинк от простого файла нереально,

Сам-то понял, что сказал?

madcore ★★★★★
()
Ответ на: комментарий от gnomino

> Сам всегда считаю файндом, но это нужно крайне редко.

Да, ладно, приведи мне хоть одну real-world ситуацию, когда важно знать кол-во файлов? Обычно, если и нужно знать, то только наличие или пути к этим файлам. Всякие find /usr/src -type f -exec fgrep -li fuck {} + | wc -l за real-world ситуацию не годятся.

anonymous
()
Ответ на: комментарий от anonymous

>real-world ситуацию

из жизни:

Импорт 12568 пользователей в дерево NDS утилитой uimport, для каждого пользователя должен быть создан файл опций импорта, пишу скрипт который генерирует эти файлы, как проверить что скрипт отработал правильно? Сосчитать количетсво файлов и просмотрь внутрь трех из них на выбор. :)

gnomino
()
Ответ на: комментарий от gnomino

> говорю, правильных вариантов среди представленных _нет_

(Терпеливо) тебя не спрашивают, ЧТО такое файл, не так ли? И среди предлагаемых ответов нету варианта "все не так!", не правда ли? Тебе задают неоднозначный вопрос и предлагают несколько вариантов ответов, из которых только один является верным. На основе этой информации ты должен не только продемонстрировать формальное знание предмета, но и понять, что именно имел в виду составитель теста -- часто это тоже входит в тест.

Тест был бы некорректным, если существовало бы 0 или >1 пары (интепретация вопроса, вариант ответа). В данном случае это не так, такая пара только одна.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Это тест на телепатию или психологию что-ли? Сосчитать количестово денег, это значит сосчитать и мелочь тоже. "Скрытый" фал уже не файл, его считать не надо? Говорю же в тесте ошибка и не надо придумывать "что имел ввиду составитель теста" такой тест никто не пройдет.

gnomino
()
Ответ на: комментарий от anonymous

> т.е. на самом деле в тесте определяется владение телепатией?

Нет, это тест на знание предмета И логическое мышление. Если ты считаешь, что для прохождения этого теста нeжна телепатия, значит, логическим мышлением ты не обладаешь ;).

Die-Hard ★★★★★
()
Ответ на: комментарий от gnomino

Вот вопрос на засыпку: считаются ли файлами . и ..?
Если нет, почему? Ведь они тоже каталоги, которые ls (в отличите от правильно примененного find) тоже покажет?

octy ★★
()
Ответ на: комментарий от gnomino

> Это тест на телепатию или психологию что-ли? "Скрытый" фал уже не файл, его считать не надо?

Последняя попытка.

Вот тебе тест:

Какой конвейер программ считает количество файлов в текущей директории?

1 ls | grep '^[0-9]' |wc -l

2 ls -l | wc -l

3 ls | fmt

4 ls | wc -w

Верный ответ: 1.

Потому что автор не уточнил, _каких_ фалов! Там нет слова "всех"! Тебя спрашивают, какой из перечисленных конвейеров считает именно файлы, а не что-то другое; про тип этих файлов тебе известно только то, что они находятся в текущей директории.

ls -l | wc -l помимо файлов сосчитает еще и информационную строку.

ls | fmt вообще ничего не считает

ls | wc -w неправильно сосчитает файлы с разделителями в имени

ls | grep '^[0-9]' | wc -l сосчитает файлы в текущей директории, начинающиеся с цифры -- единственный конвейер, который считает именно какие-то файлы в текущей директории, а не что-другое !

Die-Hard ★★★★★
()
Ответ на: комментарий от octy

:-)

На некоторых старых Юнихах команда rm -r понимала файл ".." как совершенно нормальную директорию!

Die-Hard ★★★★★
()
Ответ на: комментарий от gnomino

Когда мне горворят: "Посчитай количество людей в комнате" я считаю всех людей включая женщин, стариков, детей, негров, гомосексуалистов и тп, а не пытаюсь понять того кто задал вопрос, кто он: расист, шовинист, гомофоб и тд. Но твою мысль я понял, в топку такие тесты.

gnomino
()
Ответ на: комментарий от gnomino

> женская однако ;)

Характерными чертами женской логики обычно считаются "домысливание" высказываний за автора на основании личного опыта / предпочтений и игнорирование очевидных фактов. Ты как раз упрямо домысливаешь за автора теста, что он имел в виду под словом "файлы" и игнорируешь тот факт, что ответа "среди вариантов нет правильного" в тесте нет ;)

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Справедливости ради отмечу, что он считает ещё и каталоги.
И всё же.. Взлетит?
И давайте не придумать всякой экзотики: а то хи.. Все варианты и всегда окажутся неправильными.


[octy@octylt cf]$ ls | wc -l[octy@octylt cf]$ ls -1
Воля Вселенной.avi
Лиловый шар.avi
2
[octy@octylt cf]$ chmod a-r .
[octy@octylt cf]$ ls | wc -l
ls: Öffnen von Verzeichnis . nicht möglich: Keine Berechtigung
0

:) Неправильно считает же, а..!

octy ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.