LINUX.ORG.RU
ФорумTalks

Код, который мы все пишем...

 ,


3

1

OpenSource многие пользуются и очень немногие пишут для OpenSource. Но многие из нас из нас пишут каждый день строк этак по 100, а то и больше, кода на Shell=~/(c|k|z|ba)sh/. И не делятся друг с другом, и огромный сегмент OpenSource попросту пропадает втуне. Почему? Я думаю, в первую очередь всё-таки из-за того, что shell очень медленный и мало кто решается на нём писать что-то серьёзное и юзабельное для неограниченного множества людей.
Так, может, стоить пнуть посильнее разработчиков того же BASH'а, чтобы они его оптимизировали, интенсифицировав таким образом возможности скритпообмена через github и sourceforge в разы?

★★★★★
Ответ на: комментарий от vurdalak

Я скрипт из 3 строк «пофиксить кодировку музыки, перегнать в свободные форматы, разбить flac+cue на tracks» не вижу смысла кому-то давать, он пишется за 5 минут.

Нет в тебе духа опенсорса.

https://github.com/ftrvxmtrx/split2flac

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

Людям просто стыдно выкладывать быдлокод, написанный по принципу «как-то работает, ну да и фиг с ним», который превращается в непонятную магию через каких-то два месяца

Ну init-скрипты же не стыдно было выкладывать. А между тем, они очень подходят под описание.

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

csv_row+=$(sed -nr «s%^${lon},\s*${lat},\s*([^,]+),?\s*$%,\1%»'; T lbl; p; q; :lbl; $s%.*%,'$UNDEF'%p' «$csvSource»)

Попробовал прочитать вслух. Как теперь избавиться от запаха серы и трёхметрового чувака с рогами?

redgremlin ★★★★★
()

из-за того, что shell очень медленный

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

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

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

vurdalak ★★★★★
()

Я поддержку начинание делом

Результат работы:

anton@home:~/v/l/t/downloads $ pwd
/var/lib/transmission-daemon/downloads

Сабж: https://github.com/DiKeert/unix-utils/blob/master/.bashrc

Для Ъ:

function shorten_path {
        local current_path=`pwd`
        local last=`echo $current_path | sed -e 's/[^\/]*\///g'`
        local path="~"
        
        current_path=${current_path/"$HOME"/''}
        current_path=${current_path:1}
        
        IFS="/" read -ra current_path <<< "$current_path"
        for x in "${current_path[@]}"
        do
                if [ "$x" == "$last" ];
                then
                        path="${path}/${x}"
                else
                        path="${path}/${x:0:1}"
                fi
        done
        
        echo $path
}

Использование: В свой .bashrc делай так, как вариант:

export PS1='\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]$(shorten_path) \[\033[m\]\$ '
DiKeert ★★
()
#!/bin/bash
#true-get: make you system true
#1.2pre by ubuntuawp

_truedistro="Debian"
_aarch=$(uname -m|| (echo "util-linux is not installed. Fail";exit 1)
_getarch() { ( [ "${_aarch}" = "amd64" ] && _arch=amd64 ) || _arch=i386
_mirror="http://mirror.yandex.ru/debian"
_kernelpath="dists/stable/main/installer_${_arch}/current/images/netboot/debian-installer/i386"
_getkexec() { (which kexec || (for _path in $PATH;do _workpath=$_path;test -e $_path/kexec && _kexec-bin="$_path/kexec") || (echo "No kexec found! Install kexec app";exit 1) }
_getdownloader() { (which curl && _getbin=curl) || (which wget && _getbin=wget) }

echo "Prepared. Now downloading...";sleep 3
cd /tmp[br]mkdir debian-installer[br]cd debian-installer
${_getbin} "${_mirror}/${_kernelpath}"
( (kexec -l linux --initrd=initrd.gz || kexec -l -f linux --initrd=initrd.gz) && (echo "Loading debian installer!";sleep 5;kexec -e) || (echo "Kexec stage failed. Error";exit 1)
ubuntuawp ★★
()
Последнее исправление: ubuntuawp (всего исправлений: 2)
Ответ на: комментарий от DRVTiny

зато стандартный /bin/sh во всех *nix есть
Но вроде бы в OS X есть дефолтный bash

ubuntuawp ★★
()
Ответ на: Я поддержку начинание делом от DiKeert

Зачем каждый путь начинать с тильды? Тильда — это сокращённая запись домашнего каталога.

И если уж всё равно sed используется, зачем такой огород разводить? Почему не сделать как-нибудь так:

shorten_path {
  pwd | sed "s|^$HOME|~|;s|\([^/]\)[^/]\+/|\1/|g"
}

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

Тильда это походу бага. Надо бы поправить.

Линух:

anton@home:~/v/l/t/downloads $ pwd | sed "s|^$HOME|~|;s|\([^/]\)[^/]\+/|\1/|g"
/v/l/t/downloads

Макось:

antone@antons-mbp:~/P/J/B/manager $ pwd | sed "s|^$HOME|~|;s|\([^/]\)[^/]\+/|\1/|g"
~/Projects/Java/BMS/manager

То есть на макоси не пашет. Мой вариант - универсальный. Хоть и написал я его потому что обламался правильный регэксп для sed-а составить. А видимо обломался я потому, что на макоси его и составлял.

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

Ну не знаю, я ж его не видел, так что он запросто может оказаться женщиной, дельфином или ИИ.

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

Как теперь избавиться от запаха серы и трёхметрового чувака с рогами?

Снести его вместе с рогами и поставить православный Debian!

DRVTiny ★★★★★
() автор топика

Не потому что медленное, а потому что слишком специфичное. Оформить в более-менее общий вид занимает больше времени, чем написать с нуля под себя.

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

Скачал все твои скрипты, мне показались интересными некоторые моменты. Например, об утилите column к стыду своему ничего не знал.

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

путь до домашней директории в «~» не сворачивается

Первую команду никто не запрещал, я её удалил пока экспериментировал и забыл вернуть. Увидел уже только, когда запостил. Если угодно:

pwd | sed "s|^$HOME|~|;s|\([^/]\)[^/]\{1,\}/|\1/|g"

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

Крутотень, спасибо! /me ушел штудировать ман sed-а

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