Справочник по консольным командам Toybox для Android 12


  Ver.0.8.4     Ver.0.8.9     Pending  

Путь: Toys/POSIX, команды версии: Ver.4     Ver.9


head

Комментарии в файле head.c :

usage: head [-n NUM] [FILE...]

Скопируйте первые строки из файлов в stdout. Если файлов нет в списке, скопируйте из стандартный Имя файла "-" является синонимом стандартного ввода.
  • -n Количество копируемых строк
  • -c Количество копируемых байтов
  • -q Никогда не печатать заголовки
  • -v Всегда печатать заголовки

  • usage: head [-n NUM] [FILE...]

    Copy first lines from files to stdout. If no files listed, copy from stdin. Filename "-" is a synonym for stdin.
  • -n Number of lines to copy
  • -c Number of bytes to copy
  • -q Never print headers
  • -v Always print headers

  • Исходный текст в файле head.c

    #define FOR_head
    #include "toys.h"
    
    GLOBALS(
      long c, n;
    
      int file_no;
    )
    
    static void do_head(int fd, char *name)
    {
      long i, len, lines=TT.n, bytes=TT.c;
    
      if ((toys.optc > 1 && !FLAG(q)) || FLAG(v)) {
        // Print an extra newline for all but the first file
        if (TT.file_no) xprintf("\n");
        xprintf("==> %s <==\n", name);
      }
    
      while (FLAG(c) ? bytes : lines) {
        len = read(fd, toybuf, sizeof(toybuf));
        if (len<0) perror_msg_raw(name);
        if (len<1) break;
    
        if (bytes) {
          i = bytes >= len ? len : bytes;
          bytes -= i;
        } else for(i=0; i<len;) if (toybuf[i++] == '\n' && !--lines) break;
    
        xwrite(1, toybuf, i);
      }
    
      TT.file_no++;
    }
    
    void head_main(void)
    {
      char *arg = *toys.optargs;
    
      // handle old "-42" style arguments
      if (arg && *arg == '-' && arg[1]) {
        TT.n = atolx(arg+1);
        toys.optc--;
      } else arg = 0;
      loopfiles(toys.optargs+!!arg, do_head);
    }