LINUX.ORG.RU
ФорумTalks

командная строка


0

0

Почему в linux нет нормальной командной строки? Неужели это никому не надо. Да, она намного лучше чем cmd.exe, но кривизна bash иногда просто поражает.

Конструкции вида for i in `seq 1 15` ; do (с обязательной ";" после do) или if [ -d ... ] еще не самое страшное.

Когда же в linux-е появится нормальная командная строка, в которой без гемороя можно будет, например, переименовать файлы вида

<строка><число><другая строка>

в <cтрока><тоже число, но дополненное нулями до 4 знаков><другая строка>

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

anonymous

нифига не смешно

надо было сказать, что cmd.exe значительно лучше bash

theserg
()

Просто командная строка - это не для тебя. Юзай krename, он для твоих мощных задач как раз подойдёт.

Teak
()

> Когда же в linux-е появится нормальная командная строка, в которой без гемороя можно будет, например, переименовать файлы вида

> <строка><число><другая строка>

> в <cтрока><тоже число, но дополненное нулями до 4 знаков><другая строка>

rename 's/(\d+)/sprintf("%04d", $1)/e' *

Учи perl (и албанский).

anonymous
()

я ооочень плохо знаю ш /aka sh :)/, но и то после полу часа проб и ошибок кое как справился бы

Pi
()

>с обязательной ";" после do

Это как? Вообще-то:

for i in `seq 15`;do command1;command2&command3;command4&done

mikhail
()

>Конструкции вида for i in `seq 1 15` ; do (с обязательной ";" после do) >или if [ -d ... ]

и что?
можно писать так

for i in `seq 1 15`
do
...

и можно писать так

if test something;
then
fi

anonymous
()

да шел вообще нахрен не нужен, ты чего

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

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

>Просто командная строка - это не для тебя. Юзай krename, он для твоих мощных задач как раз подойдёт.

Командная строка как раз для меня. Причем я ее юзаю не из-за дешевых понтов, а потому что для многих задач она лучше. krename не ставил, но ни krename, ни gnome, ни kde мне точно не нужно.

В тоже время мне кажется что командная строчка могла быть намного лучше чем сейчас.

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

>Запарили виндузятники :( Строка есь? Есь! Камандуит? Камандуит! Чё щё нада то?

Нормальный надор команд. Командная строчка с asm-ом юзеру совсем не нужна

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

>можно писать так

Можно. На мой взкляд \n в качестве особого разделителя (то есть разделителя, который без потери смысла нельзя заменить на пробел или \t) есть изврат. а `seq 1 15` это вообще для гурманов-извращенцев

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

>можно писать так

В догонку

Вводить многострочные команды прямо в командной строчке тот еще геморрой.

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

>psh

Perl конечно мощнее bash, но кривости у него тоже хватает

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

>Например што должно входить в этот набор?

Ну хотябы pattern-matching, элементарные арефмитические операции, форматирование ala html. Масивы или списки.

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

патернмачинг вроде есь в седе? Арифметика - в бц. Нащёт форматирования непонял, ково форматировать? ИМХО баш-скрептом без проблем можно хтмлину сгенерить, только непошто. Масивы можно в временные файлы пихать, токмо опять-таки, непошто. Или покажеш задачю в которой без их нуникак прямо? Списки чз пайпы делаюца.

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

>Например што должно входить в этот набор?

Ну уш поиск в глубину/ширину должен осуществлятся средствами командной строки, а не find/wget.

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

>патернмачинг вроде есь в седе? Арифметика - в бц. Нащёт форматирования непонял, ково форматировать? ИМХО баш-скрептом без проблем можно хтмлину сгенерить, только непошто. Масивы можно в временные файлы пихать, токмо опять-таки, непошто. Или покажеш задачю в которой без их нуникак прямо? Списки чз пайпы делаюца.

Если список из строк с пробелами...

Вот и дело то в том, что все вроде-бы есть, а чего нет можно найти какую нибудь прогу вроде sed/bc/krename, или самому написать если очень припрет, но все настолько криво

На счет форматирования, запускаешь скрипт, а он тебе результат в виде таблицы, которую отображает терминал. Мячты....

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

Форматирование дленах? Умя под рт11 утилита бысть, форматировала всякое, особенно перед как начяпятать. Переносы умела, может даже рамочьки в таблицах - про рамочьки непомню достоверно. Ворда под рт11 небыло, приходилось ея юзать. Наверное несложная и нежоркая до ресурсов, наверное можно сырцов найти или такое же зделать. Просто не очень представляю ситуацию, когда могет такое потребно бысть.

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

>А ты юзай find/wget изнутри командной строки

Я юзаю, а как например загнать в playlist mp3шники заданного исполнителя find-ом.

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

> Просто не очень представляю ситуацию, когда могет такое потребно бысть.

Например ps/du/df. Например du <измененные за сегодня файлы>

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

Если филенамы в порядке, то ничё стложново. Напремер формат имяни:

Изполнитель#Названя пестни.mp3

делаеш чёто типа

find -iname "*.mp3" | while read i ; do if [ $1 == `echo $i | cut -d # -f 1` ] ; then mpg321 $i ; fi ; done

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

>find -iname "*.mp3" | while read i ; do if [ $1 == `echo $i | cut -d # -f 1` ] ; then mpg321 $i ; fi ; done

Здорово, а если исполнитель в ID-таге, в названии файла только названии композиции.

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

Ну, наверное есь утелита, которая могет тегу извлехчь? Если, то вместо echo $i | cut -d # -f 1 вызываеш таковую, или зарания переминовываеш, што ИМХО удобнея с другой стороны. Если нету, тада низнаю :( но причём тута строка в таком разе, непонятно, чем она провинилась если ей командовать некем?

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

>Ну, наверное есь утелита, которая могет тегу извлехчь?

Знаю что есть, например mp3info

Но от командной строчки в которой можно было бы написать что-то типа

forall f in subtree(<директория>) do if mp3info(f).artist == "<заданный чувак>" then xmms.add(f)

или даже xmms.playlist := (select file from subtree(<директория>) where mp3info(f).artist == "<заданный чувак>" ) `union` xmms.playlist

я бы не отказался

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

find -изменёныя за сёдня -exec щитаеш розмер | while read i ; do суммируеш ; done; выводиш результат зачем мосив непонятно?

Конкретно здесь не нужно, а вот распознать правильное скобочное выражение используя O(1) памяти (стек вызовов считается) невозможно.

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

Ты смогеш зделать непротиворечивую и удобныя сестему команд? Которыя бысть бы луче всех существующих? Это главное и самыя трудное. Ести можеш - зделай, а заимплементить несложно.

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

>Чёто недогоняю я, боярин, какое скобочное выражение хотиш распознавать

1) пустая строка - это правильное скобочное выражение

Если P,Q правильные скобочные выражения, то

2) PQ правильное скобочное выражение

3) (P) - тоже правильное скобочное выражение.

4)Других правильных скобочных выражений нет.

Язык всех правильных скобочных выражение не является регулярным языком по лемме о разрастании.

Программа, использующая только O(1) памяти - по существу конечный автомат => не может распознать правильное скобочное выражение.

Это так, к слову

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

>Блин, запарил меня этот anonymous. Не нравится? Возьми и напиши то, что тебе надо.

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

bash как пускалка для guiшных прог не намного лучше Пуск->выполнить, а для менее тревиальных команд его кривизна очевидна. Мне просто интересно, неужели это никому не надо? Может быть кто-то уже что-то реализовал?

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

>так это ж unix-way

Unix-way это когда все криво, или когда для каждой задачи (вроде shella) есть одна прога, которая решает эту задачу хорошо.

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

>Ты смогеш зделать непротиворечивую и удобныя сестему команд? Которыя бысть бы луче всех существующих? Это главное и самыя трудное. Ести можеш - зделай, а заимплементить несложно.

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

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

to bugmaker

Мне кажется или в твоих постах действительно чувствуется некоторая легкая обида. Я задел твои религиозные чувства? Или ты принимал участие в разработке bash?

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

Про буквари все слыхали, што бывают. Я недогоняю, каким боком это к к командной строке?

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

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

bugmaker
()

Автор, тебе же сразу сказали, что можно юзать в качестве шела python, scheme, perl и поди ещё что-то. Тебе что не хватает???

А в качестве интерактивного шела, попробуй zsh, мощнее bash на много.

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

>Ну хотябы pattern-matching элементарные арефмитические операции... Масивы или списки.

А это что:

case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac

a=(1 2 3 4)

echo $((a[1]+a[3]))

Чем тебе не "pattern-matching,Масивы или списки,арефмитические операции"?

Вот чего в нем нет - так это нормального синтаксиса. Возможно нужно в сторону rc смотреть. Или ipython, возможно.

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

Не, ниаттуда, далше намнозе. Ачё, пишу как умею. Тёмно тута, я русских буквинок невыучил щё где на кнопках есь, лехко токмо могу впотьмах буквинки находить которые в С/С++. Сюды пощю када устал и недосужно щё буквинок искать и за всякеми арфаграфеями следить, да тут ИМХО мало хто слидит - ретко видиш предложения болше чем стрёх словов без ашыпки. Правилов конешно норушать ацтойно и никрута. Токмо естли ужо мадиратары правела нарушают нарошно, причём аткрыто гаварят што будут вредь потомушто им неплотют затоштобы оне правила ненарушали, то астальным пасититилям темболее на се поклась можно.

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