Вышла (http://fishshell.com/release_notes.html) новая версия интерактивной командной оболочки fish 2.1.0 (http://fishshell.com) (friendly interactive shell), развивающейся как более дружественная пользователю альтернатива bash и zsh. Fish поддерживает такие возможности как подсветка синтаксиса с автоматическим выявлением ошибок ввода, предложение возможных вариантов ввода на основе истории прошлых операций, автодополнение ввода опций и команд с использованием их описания в man-руководствах, комфортная работа из коробки без необходимости дополнительной настройки, упрощённый язык написания сценариев, поддержка буфера обмена X11, удобные средства поиска в истории выполненных операций.
В новой версии:
- Реализована продвинутая логика автодополнения имён файлов по нажатию клавиши Tab: вначале осуществляется сопоставление по совпадению в начале имени (foo подходит для foobar), если файлов не найдено осуществляется оценка вхождения подстроки (ooba подходит для foobar), при неудаче осуществляется поиск на уровне отдельных символов (fbr подходит для foobar).
- Обеспечена возможность перенаправления вывода внутри операций с неименованными каналами. Например, можно направить в канал одновременно stderr и stdout: "cmd 2>&1 | tee log.txt".- Обособленное использование спецсимвола "%" теперь приводит к подстановке PID последней фоновой работы, а не всех фоновых работ как раньше. Например, командой "fg %" можно активировать последний фоновый процесс.
URL: http://fishshell.com/release_notes.html
Новость: http://www.opennet.me/opennews/art.shtml?num=38280
>автодополнение ввода опций и команд с использованием их описания в man-руководствахРазумеется я не побегу компилировать эту рыбу, но... это круто.
Очень хорошая вещь, из минусов напрягает отсутствие && , а точнее замена его на ;
> Очень хорошая вещь, из минусов напрягает отсутствие && , а точнее замена
> его на ;а на что там тогда заменён сам ';'?
Не совсем замена && на ; - там надо использовать конструкции `; and` и `; or`:$ true; and echo true; or echo false
true$ false; and echo true; or echo false
false
а что, прикольно.. и выглядит логично
> а что, прикольно.. и выглядит логично
#!/bin/bashand() { [ $? == 0 ] && $*; }
or() { [ $? == 0 ] || $*; }
Ох щит. Спасибо за новость, даже не знал что такое есть, смарт-консоль, надо потестить!
> ooba подходит для foobar ... fbr подходит для foobarЧто-то мне это не нравится...
Тебя заставляют таб нажимать?
... ls подходит для rm
С этими супервозможностями легко перемудрить. А вот простой системы, где лог был бы разделён от поля с командами я так и не нашёл в unix подобных системах.
Э.. т.е.?
Он хочет stdout и stderr отдельно от ввода команд.
ЧЁ-Ё-Ё-?!
К сожалению большинство разработчиков реагируют приблизительно так. И вместо того, чтобы реализовать идею, доказавшую своё удобство ещё 30 лет назад, в очередной раз делают в конечном итоге эмулятор телеграфа.
Видимо, "доказательство удобства" с точки зрения большинства разработчиков (да и пользователей) оказалось неубедительным.
> Видимо, "доказательство удобства" с точки зрения большинства разработчиков (да и пользователей)
> оказалось неубедительным.Достаточно воинственного незнания вкупе с ощущением собственной важности от приобщения к действительно полезному инструменту за счёт мощности и гибкости, но не самым простым и удобным способом взаимодействия, отпугивающим "простых" пользователей.
> Достаточно воинственного незнания вкупе с ощущением собственной важностиВы забыли написать, что ваша фамилия Д'Артаньян.
Эту идею давно оценили многие люди, включая близких к истокам UNIX, например небезызвестный Роб Пайк. Они понимают, что нельзя только подслащивать старые идеи, но и необходимо развивать новые. Современный терминал - это выверенный, хорошо смазанный паровой двигатель, мне нужен электромотор. Но мой интерес как разработчика сейчас лежит в в другой области, так что я пока и с паровым движителем покатаюсь, корона не упадёт - у меня её нет.
Аналогия с паровым двигателем не уместна.
> С этими супервозможностями легко перемудрить. А вот простой системы, где лог был
> бы разделён от поля с командами я так и не нашёл
> в unix подобных системах.То есть вы хотите получать вывод команд асинхронно с их вводом? Я не критикую, я хочу понять.
Хочется видеть минимум две области. Область для ввода команд является нормальным редактором, куда можно вводить что угодно. Выбор команды определяется: вызовом горячей клавиши на текущей строке, кликом правой/средней клавиши мышки, либо CTRL + левой. Вывод команды осуществляется во второе окно - лог, в котором как минимум доступен нормальный поиск, возможен опять таки нормальный редактор. Во время работы команды возможна блокировка возможности вызова других команд из той же области, но не редактирования. Область ввода доступна для сохранения и загрузки в файл, лог доступен для сохранения. Остальные вещи нужно обдумывать подробней.
> Хочется видеть минимум две области. Область для ввода команд является нормальным редактором,
> куда можно вводить что угодно. Выбор команды определяется: вызовом горячей клавиши
> на текущей строке, кликом правой/средней клавиши мышки, либо CTRL + левой.
> Вывод команды осуществляется во второе окно - лог, в котором как
> минимум доступен нормальный поиск, возможен опять таки нормальный редактор. Во время
> работы команды возможна блокировка возможности вызова других команд из той же
> области, но не редактирования. Область ввода доступна для сохранения и загрузки
> в файл, лог доступен для сохранения. Остальные вещи нужно обдумывать подробней.А ведь по сути получается классическое окно чата. :)
> А ведь по сути получается классическое окно чата. :)Не совсем, после вызова команды, содержимое окна с командами сохраняется. Уже не классическое :)
>> А ведь по сути получается классическое окно чата. :)
> Не совсем, после вызова команды, содержимое окна с командами сохраняется. Уже не
> классическое :)В Kopete введённые сообщения сохраняются, например. :) Но не суть. Главное, это уже есть готовое. Берём jabber-бота... ;)
Подумав немного, пришёл к выводу, что как раз наоборот- обычный терминал и есть что- то вроде чатика, только поле ввода визуально не отделено от диалога.
> Хочется видеть минимум две области. Область для ввода команд является нормальным редактором,
> куда можно вводить что угодно. Выбор команды определяется: вызовом горячей клавиши
> на текущей строке, кликом правой/средней клавиши мышки, либо CTRL + левой.
> Вывод команды осуществляется во второе окно - лог, в котором как
> минимум доступен нормальный поиск, возможен опять таки нормальный редактор. Во время
> работы команды возможна блокировка возможности вызова других команд из той же
> области, но не редактирования. Область ввода доступна для сохранения и загрузки
> в файл, лог доступен для сохранения. Остальные вещи нужно обдумывать подробней.В матлабе (и его аналогах) сделано интереснее - ввод и вывод в общей консоли, а вот история - в отдельном окошке сбоку. Также в таких окошках можно вывести просмотрщик/редактор списка переменных окружения и содержимое текущего каталога.
Описанная возможность является ортогональной для обоих подходов, и точно не заменяет новый способ взаимодействия.
Там много чего надо бы. Например - держать выхлоп отдельных команд как разные сущности, причем, разумеется, уметь ими оперировать, вплоть до сохранения всего этого безобразия между сессиями.
Умные ОСи, умные броузеры, умный bash (т.е. fish). Интересно, а когда разработают умного пользователя, именно пользователя? Уже совсем отупели, надеюсь при использовании умного шелл, мы не отупеем окончательно.
Ну, отупеть можно с использованием и тупой ОС, просто человек может знать только ОС и ничего вокруг, так как это займет у него много времени.
Умный пользователь появится, когда интерфейс будет адекватен его задачам. Когда имеем две парадигмы "учи, собака, маны" и "нажми на кнопку - всё сделают за тебя", во-первых, порог вхождения получается запредельным относительно любого результата "здесь и сейчас" (то есть кривая обучения неудачная), во-вторых, рутине уделяется больше сил, чем собственно формулировке задачи. Ну да, можно авком с грепом гонять выхлоп find чтобы получить что-то нужное - но для этого нужно знать гору всего про find, организацию fs, awk и тому подобное - причем зачем-то пользователю придётся думать о том, каким символом раззделяются аргументы и тому подобной низкоуровневой для него мути.fish - шаг в принципе в верном направлении, осталось научить его быть терминалом либо взаимодействовать с ним, и понять, что ман - это хреновый источник информации для подсказок, надо формировать свои.
пригодится на будущее делают