LINUX.ORG.RU

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

anonymous
()

существует, и имя ему: человеческий моск вот так открываешь и транслируешь, строчка за строчкой

Михаил // Ха-ха, продолжу-ка я традицию поехавших анонимасов ЛОРчика

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

Ну так на Си я видел, и на Питон тоже, вот и подумал, что и для Паскаля такое есть.

Если в 2 захода через Си, синтаксисы прокатят, или придется руками допиливать?

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

любопытство

Встречный вопрос можно?

Зачем?

# В обратном направлении (из Pascal|C|... в Bash) я ещё могу представить цель трансляции, но
# из Bash в ЯП ... не, не получается

anymouze ★★
()
Ответ на: любопытство от anymouze

смысл примерно тот же что с переписыванием с cmd на bash и с ps на python, только наоборот

anonymous
()
Ответ на: любопытство от anymouze

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

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

Встречный вопрос был Вам. Спасибо, Вас понял...

Пожалуй, поясню «ход мысли»

Скажем, есть какой-то алгоритм сортировки или поиска на Pascal (или другом ЯП) и я могу представить, что он бы пригодился в каком-либо скрипте на Bash.

Но вот обратное я придумать не смог...

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

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

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

seiken ★★★★★
()

Ну и, кстати, слегка модифицированный пример оттуда:

uses BaseUnix, Unix;

var f : text;

begin
  popen (f,'/bin/sh','W');
  if fpgeterrno<>0 then
     writeln ('error from POpen : errno : ', fpgeterrno);
  writeln(f, '#!/bin/sh');
  writeln(f, 'for i in {1..10}; do');
  writeln(f, 'echo $i');
  writeln(f, 'done');
  pclose(f);
end.
anonymous
()
Ответ на: комментарий от Red7

Возможно, я и сам чего-то не понял.
Я имел в виду перевод кода bash в код паскаля. Как в конвертерах c2pas, PtoC, например. Такой конвертер не нужен, если можно вызывать команды bash непосредственно в коде паскаля.

Ну, например, так:

...
var str: String;
     Exit_status: integer;
...
str:='find /media/sda'+inttostr(i)+'/series/ -type d | sort | uniq >> '
  +ExtractFilePath(Application.ExeName)+'series.dirs';
Exit_status:=fpsystem(str);
if Exit_status<>0
then 
 begin
    Showmessage('Error '+inttostr(Exit_status)+' with find');
 end;

Exit_status:=fpsystem('file "'+Form1.Memo1.Lines[0]+'"'+
 ' > ' + ExtractFilePath(Application.ExeName)+'file.output.data');
if Exit_status<>0
then begin
       Showmessage('Error '+inttostr(Exit_status)+' with file with the line '+
       Form1.Memo1.Lines[0]);
      end;

str:='LANG=en_US.utf8 gio info -a "metadata::*" "' + Form1.Memo1.Lines.Strings[0] + '" | sed "/metadata/d" | sed "
/uri:/d" | sed 1d ' +
' >> ' + ExtractFilePath(Application.ExeName)+'old.annotations.list ';
  Exit_status:=fpsystem(str);
  if Exit_status<>0
  then begin
         Showmessage('Error '+inttostr(Exit_status)+' with gio info about a memo. Exiting.');
         exit
       end;

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

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

Вы ведь не собираетесь потом вносить изменения в сконвертированный код, надеюсь? Вы ж потом будете баш редактировать и автоматически конвертировать? Если да, то какая вам разница, Си там или Паскаль? Если нет, то ой.

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

Не, не собираюсь. И тогда вы правы - принципиальной разницы между Си и Паскаль не будет.
Но дело в том, что ... см. выше :)

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

Только руками переписывать, увы и ах

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

избавиться от него.

Зачем? Тот же, например, поиск файлов в bash посредством find или locate - моментальный и простой, нежели писать рекуррентную функцию на паскале с findfirst, findnext. Подал команду как строковый параметр для fpsystem с перенаправлением в файл - и всё.

Под windows писать, разве что.

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

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

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

бешевский скрипт превратить в нечитаемый бинарник

При компиляции и получится бинарник. Читать его могут разве что hex-редактором.

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

А разве с этим кто-то спорит?

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

Неужели так много кода на баше, что вручную переписать настолько сложно? ТС готов доверять качеству хз пойми какого транслятора? ТС школьник, иначе с трудом представляю такое безобразие для продакшена

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