Команды SFK


    1        2        3        4        5        6        7        8        9        10    

Раздел 8. Development - Разработка
bin-to-src | fuzz | inst | make-random-file | patch | sample |


Help:   Рус   |   Eng        Refer:   Рус   |   Eng  

Команда: sample

Примеры скриптов и пакетных файлов

Для оболочки Windows CMD.EXE, Linux bash, HTML-кода или простой программы Java/C++/PHP в качестве отправной точки для собственного редактирования с помощью команды sfk samp для Windows, Mac OS X и Linux.

sfk sample java|cpp|... [outfile.java|.cpp|...]
Выведет короткий пример кода на указанном языке программирования.

Параметры

sfk создать простой скрипт sfk

sfkbat - sfk-скрипт, встроенный в файл .bat или .cmd

sfkbash - sfk-скрипт, встроенный в bash-скрипт

http - пример сценария автоматического http-доступа

http -bat ... как файл Windows .bat

http -bash ... как файл .sh Linux

httpdata создать ZIP-файл с файлами веб-демо для локального использования с помощью sfk httpserv

cmd создать общий файл Windows .cmd или .bat

bash создать универсальный скрипт bash для Linux

html простая html-страница с CSS и JavaScript

java создать класс Java, выполняющий ввод-вывод текстового файла

javaimg создать класс Java, выполняющий ввод-вывод файла изображения

javahex создать шестнадцатеричный дамп двоичных данных в Java

javagui создать простое приложение Java gui

cpp создать пример ввода-вывода текстового файла C++

cppnetlog как отправить сетевой текст UDP на C++

javanetlog как отправить сетевой текст UDP на Java

php создать PHP-код командной строки для текстового ввода-вывода

phpimg создать пример PHP для обработки изображений

Флаг -force - если выходной файл уже существует, перезаписать его

sfk batch myscript.bat делает то же самое, что и "sfk samp sfkbat myscript.bat"

ПРИМЕРЫ

sfk samp sfkbat foo.bat Создает командный файл foo.bat со встроенным SFK-скриптом.
Введите "foo.bat" для запуска созданного скрипта. Обратите внимание, что foo.bat должен быть создан в каталоге вашего PATH, или в текущем каталоге

sfk batch foo.bat -force то же, что и выше, и перезаписывает существующий файл.

sfk batch foo.sh Создайте файл сценария bash с окончаниями строк только lf.
Также может использоваться в средах Windows for MingW

sfk samp java foo.java Создайте Java-класс foo. если доступен java JDK
Введите "javac foo.java", а затем "java foo", чтобы запустить его

sfk samp phpimg doimg.php Создайте сценарий обработки изображений, который можно запустить: с помощью php doimg.php, если php.exe находится в вашем PATH (прочтите примечания в скрипте)

sfk samp javahex +toclip Скопируйте пример создания шестнадцатеричного дампа Java в буфер обмена

sfk samp http tmp.bat Создайте пример сценария для автоматизированного доступа к веб-сайту и HTTP

sfk samp http -bash tmp.sh то же самое, но с использованием bash в среде Windows Cygwin.

ПОЛУЧЕННЫЕ ОБРАЗЦЫ:


  • sfk samp sfk

      sfk select testfiles .txt .hpp .cpp
    
         // find words supplied by user.
         // note that %1 is the same as $1.
         +find
            %1 %2 %3 $4 $5 $6
    
         // process files containing hits
         +run -quiet "sfk echo \"Found hit in: [green]$file[def]\"" -yes
    
         // run the script by:
         //    sfk script "thisfile" pattern1 [pattern2 ...]
      

  • sfk samp sfkbat

      @echo off
      sfk script "%~f0" -from begin %*
      rem %~f0 is the absolute batch file name.
      GOTO xend
    
      sfk label begin -var
    
         // default batch, with some variable support.
         // for a full file backup example use:
         //    sfk batch -full myfile.bat
    
         +if "%1 = " begin
            +tell "[green]usage:[def]"
            +tell "   #(sys.ownscript.name) copy [-yes]"
            +stop -all
            +endif
    
         +setvar cmd="%1"
         +setvar yes="%2"
    
         +if "#(cmd) = copy" begin
            +call docopy
            +stop
            +endif
    
         +tell "unknown command: #(cmd)"
    
         +end
    
      sfk label docopy
    
         +copy -checkdirs
    
            mydir mydir2
    
            -dir core doc db
    
               -subdir !\tmp !\save
               -file   !.tmp
    
               #(yes)
    
         +end
    
      :xend
      

  • sfk samp sfkbash

      #!/bin/bash
      sfk script "$0" -from begin $@
      exit
      function skip_block
      {
      sfk label begin -var -upat2
    
         // default batch, with unified windows/linux syntax (-upat2).
         // for a full file backup example use:
         //    sfk batch -full myfile.sh
    
         +if "%1 = " begin
            +tell "[green]usage:[def]"
            +tell "   #(sys.ownscript.name) copy [-yes]"
            +stop -all
            +endif
    
         +setvar cmd="%1"
         +setvar yes="%2"
    
         +if "#(cmd) = copy" begin
            +call docopy
            +stop
            +endif
    
         +tell "unknown command: #(cmd)"
    
         +end
    
      sfk label docopy
    
         +copy -checkdirs
    
            mydir mydir2
    
            -dir core doc db
    
               -subdir :\tmp :\save
               -file   :.tmp
    
               #(yes)
    
         +end
      }
      

  • sfk samp http

    
      @echo off
      sfk script "%~f0" -from begin %*
      rem "%~f0" is the absolute batch file name.
      GOTO xend
    
      sfk label begin -var
         // the -var above enables variables everywhere.
         +setvar "baseurl=http://stahlworks.com/webdemo"
         +web "#(baseurl)/contents.xml"
         +xex "_******<
               _[part4] [part8]\n_"
         +perline "call listCategory #text" -yes
         +end
    
      sfk label listCategory
         +echo "[green]=== List of %2: ===[def]"
         +echo -spat "[yellow]Name         Price[def]"
         +then web "#(baseurl)/product_list_%1.xml"
         // +xmlform +stop -all
         +xex "=***<***<
               =[part4]\t[part8] \x24\n="
         +filter -upat -stabform "#(-12col1) #col2"
         +end
    
      rem a longer example with input, output and detail
      rem explanations is available in the SFK Book.
    
      :xend
      

  • sfk samp java

    
      import java.io.*;
    
      public class fileio
      {
          static void log(String s) { System.out.println("main: "+s); }
    
          public static void main(String args[]) throws Throwable
          {
              if (args.length < 2)
                  { log("supply in- and output filename."); return; }
    
              // copy or convert text file
              BufferedReader rin = new BufferedReader(
                  new InputStreamReader(
                      new FileInputStream(args[0]), "ISO-8859-1"
                      // or US-ASCII,UTF-8,UTF-16BE,UTF-16LE,UTF-16
                      ));
    
              PrintWriter pout = new PrintWriter(
                  new OutputStreamWriter(
                      new FileOutputStream(args[1]), "ISO-8859-1"
                      ));
    
              while (true) {
                  String sline = rin.readLine();
                  if (sline == null) break; // EOD
                  log("copying line: "+sline);
                  pout.println(sline);
              }
    
              pout.close();
              rin.close();
          }
      };
      

  • sfk samp cpp

      #include 
      #include 
      #include 
      #include 
      #include 
      #include 
    
      // print error message with variable parameters.
      int perr(const char *pszFormat, ...) {
         va_list argList;
         va_start(argList, pszFormat);
         char szBuf[1024];
         ::vsprintf(szBuf, pszFormat, argList);
         fprintf(stderr, "error: %s", szBuf);
         return 0;
      }
    
      // copy text lines from one file into another.
      int main(int argc, char *argv[])
      {
         if (argc < 2)
           return 9+perr("specify input and output filename.\n");
    
         char *pszInFile  = argv[1];
         char *pszOutFile = argv[2];
    
         FILE *fin  = fopen(pszInFile , "rb");
        if (!fin )
           return 9+perr("cannot read %s\n" , pszInFile);
         FILE *fout = fopen(pszOutFile, "wb");
        if (!fout)
           return 9+perr("cannot write %s\n", pszOutFile);
    
         char szBuf[1024];
         memset(szBuf, 0, sizeof(szBuf));
         while (fgets(szBuf, sizeof(szBuf)-10, fin))
         {
            char *psz = strchr(szBuf, '\r');
        if (psz) *psz = '\0'; // strip cr
                  psz = strchr(szBuf, '\n');
        if (psz) *psz = '\0'; // strip lf
            printf("line: \"%s\"\n", szBuf);
            strcat(szBuf, "\n");
            int nlen = strlen(szBuf);
            if (fwrite(szBuf, 1, nlen, fout) != nlen)
    
           return 9+perr("failed to fully write %s\n", pszOutFile);
         }
    
         fclose(fout);
         fclose(fin);
    
         return 0;
      }
    
      

  • sfk samp cmd

    
      @rem windows command shell batch example
      @echo off
      IF "%1"=="" GOTO xerr01
      echo "parameter is %1"
      GOTO xdone
    
      :xerr01
      echo "please supply a parameter."
      echo "example: mybat parm123"
      GOTO xdone
    
      :xdone
      

  • sfk samp bash

      #!/bin/bash
    
      function pmsg {
         # uses a local variable mystr
         local mystr="info: $1"
         echo $mystr
      }
    
      myparm1="$1 and $2"       # no blanks around "="
    
      if [ "$2" = "" ]; then    # requires all blanks
         pmsg "please supply two parameters."
      else
         pmsg "you supplied \"$myparm1\"."
    
         #  < -lt   > -gt   <= -le   >= -ge   == -eq   != -ne
         i=1
         while [ $i -le 5 ]; do # not "$i < 5"
            echo counting: $i   # quotes are optional
            let i+=1            # not "i += 1" or "$i+=1"
         done
      fi