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 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.