LINUX.ORG.RU

Нужна помощь по C-SHELL

 csh shell


0

2

Добрый вечер, господа. Нужна очень-очень помощь по csh. Не успеваю за лабораторными, пока что еще не начал осваивать эту оболочку, а задание делать надо, рассчитываю на помощь знакотов! Задание «Командный файл, в котором просматриваются все подкаталоги текущего каталога и создаются два списка каталогов. Если в просматриваемом подкаталоге число файлов меньше 10, то список этих файлов со строкой- заголовком - полным именем подкаталога, дописывают в файл „Littlelist“ иначе - в „Biglist“.»

Буду очень признателен!



Последнее исправление: kyka276 (всего исправлений: 1)
Ответ на: комментарий от Begemoth

Странно. Я не прошу написать мне сверхприложение с сотнями строчек кода, а всего лишь скрипт на сишелле... В любом случае, если вы не хотите или не можете помочь - просто пройдите мимо трэда.

kyka276
() автор топика

ls */*

дальше разберёшься

qulinxao ★★☆
()

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

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

А давай ТЫ тыкать будешь своим родителям? Можно аналогичным образом - на видео и с табличкой. С любой табличкой, которую захочешь. Публикуешь на ютуб, даёшь ссылку сюда.

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

а давай ты перестанешь выпендриваться и засунешь табличку в любое удобное место. Гифку с записью в /b пость.

Dark_SavanT ★★★★★
()

Версия для tcsh:

#!/bin/tcsh
if ($#argv == 0) then
        echo "usage: ls22lsts /path/to/dir"
else
        set tlnz=`ls "$1" | wc -l`
        set drttl="`realpath "$1"`:"
        if ($tlnz < 10) then
                echo "$drttl" >> Littlelist
                foreach dlmnt (`ls "$1"`)
                        echo "$dlmnt" >> Littlelist
                end
        else
                echo "$drttl" >> Biglist
                foreach dlmnt (`ls "$1"`)
                        echo "$dlmnt" >> Biglist
                end
        endif
endif

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

Я, конечно, понимаю, что ЛОР - это заповедник троллей всех мастей, но всё же, я прекрасно понимаю и знаю, что на ЛОРе есть люди, готовые помочь, а не выпендриваться и я очень рад, что нашелся добрый человек, который мне помог! Благодаря ему я сам худо-бедно разобрался в этой теме, появился толчок и, скажем так, священный пинок в спину, который заставляет не лениться, а заняться делом и это воистину круто! А лично вам, как и всем остальным троллям, отметившимся в этом треде, хотелось бы посоветовать не тратить время на пустую писанину и проходить мимо подобных тредов. Ваше нежелание помочь имеет место быть, но тогда зачем вы тут отписываетесь? Тоже самое отностся и к юзерам Dark_SavanT kep Begemoth - у вас ЧСВ лопнуло от моей просьбы ПОМОЧЬ?

kyka276
() автор топика
Ответ на: комментарий от kyka276
cat -n `which which`

воот - а теперь сделай маскерователь путей по шаблону для временнего ограничения окружения испольнения на подобии

PATH=filterpath(shab) work()

qulinxao ★★☆
()
Ответ на: комментарий от kyka276

Ваше нежелание помочь имеет место быть, но тогда зачем вы тут отписываетесь?

такой маленький и моралефаг. :(

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

Человек летит на воздушном шаре и вдруг обнаруживает, что он заблудился.
Он начинает высматривать кого-нибудь внизу , чтщ бы спрсить и снижается
к замеченному им мущине.
Подлетев, он спрашивает:
- Извините, не подскажете где я?
Человек внизу говорит:
-Конечно, Вы в воздушном шаре метрах в десяти надомной.
-Вы очевидно работаете в информационных технологиях? - спрашивает
воздухоплаватель.
-Да. Как Вы догадались!?
-Все что Вы сказали технически верно, но толку с этого никакого.
-А Вы очевидно работаете на высокой руководящей должности - говорит
человек внизу.
-Да! Но как Вы догадались!?
-Видите ли, Вы не знаете где Вы есть и куда Вы двигаетесь, но ожидаете
что я смогу Вам
в этом помочь. Сейчас Вы в том же самом положении, что и до нашей
встречи, но теперь
в этом уже виноват я!
qulinxao ★★☆
()
Ответ на: комментарий от kyka276

Летит Мужик на воздушном шаре, сбился с пути и неможет определить где
он. Вдруг видет внизу женщину, опускается ниже и кричит ей
"Вы можете мне помочь? Я обещал своему другу с нем встретиться и немогу
понять где я."
Женщина отвечает:"Вы в воздушном шаре примерно 10 метров над
поверхностью земли. Вы находитесь между 40 и 41 градусом северной широты
и 59 и 60 градусом восточной долготы."
"Вы наверно инженер" - отвечает он.
"Да"- отвечает женщина - " а как вы догодались?"
Мужик:"Все что вы мне сказали технически совершенно правильно, но я не
имею понятия, что мне с этой информацией делать. Факт в том, что я до
сих пор не могу понять где я. Честно говоря вы мне ничем не помогли, а
тольок задержали меня."
Женщина отвечает: "По всей видимости вы менеджер."
"Да"- отвечает мужик - "а откуда вы это знаете?"
Женщина:"Вы не знаете где вы и куда летите. На вашу высоту вы попали
только благодоря горячему воздуху. Вы дали обещание которое незнаете как
выполнить и надеетесь, что другие люди решат вашу проблему. А на самом
деле вы в тойже самой ситуации как до нашей встречи, но почемуто сейчас
во всем виновата я" :))
qulinxao ★★☆
()
Ответ на: комментарий от kyka276

Меня просто возмущают люди, которых возмущает обращение на «ты», тем более, в случае если это школота какая.

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

В данном случае как школьник ведете себя именно вы. Ещё и пытаетесь себя оправдать. Хотя, с кем не бывает.

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

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

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

ЧСВ у меня не лопнуло. Вопрос был сформулирован в виде «сделайте за меня домашку», если бы ты пытался разбираться в задании, то вопросы были ли бы другие - конкретные. Помощь же людям просящим сделать что-либо за них этически неоднозначна, в частности, помощь человеку просящего сделать за него задание может восприниматься как соучастие в разрушении системы образования (как-бы кто к этому ни относился). В то же время такая помощь на деле помощью не является - она не поможет человеку в образовании, так просто формально сдать лабораторку.

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

Тем что покоцаются имена с пробелами, в первом случае.

Begemoth ★★★★★
()
Последнее исправление: Begemoth (всего исправлений: 1)

Офигеть. Мало того, что ленивый, да ещё и дерзкий какой.

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

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

foreach dlmnt (`ls "$1"`)
      realpath "$dlmnt" >> Littlelist
end
Сначала понял задачу так, но потом понял что это лишнее и заменил «realpath» на «echo». Код вообще сильно неоптимизирован и написан на коленке за пару минут. Тут люди просто мимо проходят, и я в т.ч. А не так, что сидят и полируют код до высоких стандартов Ынтерпрайза. После повторного взгляда на код его вообще можно причесать до такого:
#!/bin/tcsh
if ($#argv == 0) then
        echo "usage: ls22lsts /path/to/dir"
else
        if (`ls "$1" | wc -l` < 10) then
                set outlist="Littlelist"
        else
                set outlist="Biglist"
        endif
        echo "`realpath "$1"`:" >> $outlist
        ls "$1" >> $outlist
endif

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

Я бы этому ТС не стал бы ничего готового писать, хоть мне и не сложно, я на c-shell написал десятки тысяч строк кода в свое время. Одно дело когда человек уперся в непонимание какой-то мелочи и совсем другое когда нагло требуется «напишите все за меня, молчать! и быстро!»

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

Странно. Я не прошу написать мне сверхприложение с сотнями строчек кода, а всего лишь скрипт на сишелле...

а какая разница? сумму ведь тебе тоже не озвучили пока

ananas ★★★★★
()

Так то всем спасибо за отклики,в том числе м троллям.

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

Вопрос - как правильно запустить скрипт на выполнение? usage: ls22lsts /path/to/dir не понимаю, что значит ls22lsts

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

Здесь «ls22lsts» - имя скрипта, «/path/to/dir» - аргумент, указывающий путь к директории, которую нужно обработать.

Из локальной директории скрипт запускается как "./ls22lsts /path/to/dir", из директории, которая в т.ч. перечислена в переменной PATH, как и написано: «ls22lsts /path/to/dir».

У скрипта должны быть права на выполнение: «chmod +x ls22lsts».

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

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

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

Каких файлов, записанных куда и каким образом? Одно дело подсчитать кол-во файлов и директорий вперемешку, а совсем другое выбирать отдельно файлы. Чтобы выбирать файлы отдельно нужно использовать уже не просто «ls», а нечто наподобие «find /path/to/dir -type f». А дальше всё аналогично. Но, по дефолту оно просканит все вложенные директории. Если так и нужно, то можно ничего не менять. А вот если во вложенные директории смотреть не надо, то надо добавить опцию "-maxdepth 1". Однако, если в директории есть ещё и другие файлы, то надо применять дополнительные фильтры по обстоятельствам, которые не указаны.

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

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

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

Как-то так:

#!/bin/tcsh
if ($#argv == 0) then
        echo "usage: ls22lsts /path/to/dir"
else
        set ttlfds=`ls "$1" | wc -l`
        if ($ttlfds < 10) then
                set outlist="Littlelist"
        else
                set outlist="Biglist"
        endif
        echo "`realpath "$1"`:" >> $outlist
        ls "$1" >> $outlist
        echo "total: $ttlfds" >> $outlist
endif

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

Спасибо! Кажется, понял, что к чему. Вы можете посоветовать хорошее руководство по программированию на си шелл? Возможно, по которому сами учились...

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