Кто силен в bash? помогите плз решить задачки...

Discussion in 'Безопасность и Анонимность' started by Dj Skeleton™, 19 Nov 2007.

  1. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    Кто силен в bash?

    1. Создайте новый файл second, в котором бы трижды повторялась строка текста из файла first.
    2. Приведите все возможные способы просмотра каталога /usr/bin/
    3. Найдите в системе файл, содержащий в имени три гласные буквы подряд.
    4. Найдите в системе файл, состоящий из 5 и более заглавных букв подряд.
    5. Составте конвейер, при помощи которого слово ABRAKADABRA, выведется на экран с заменой букв R на L (echo, tr)
    6. Прокомментируйте права доступа к файлу (команде) passwd
    7. Создайте сжатый архив файлов, измененных за последнюю неделю (tar, gzip, find, cpio)
    8. Сохраните в отдельном файле и прокомментируйте данные о процессе init
    9. Сохраните листинг самых ресурсоемких процессов и прокомментируйте его.
    10. Переведите часы на зимнее время (на 1 час назад)


    ОГРОМНОЕ СПАСИБО ВСЕМ, КТО ПЫТАЛСЯ ПОМОЧЬ!

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


    1.Создайте новый файл second, в котором бы трижды повторялась строка текста из файла first.

    # создание файла first
    [root@djskel ~/task01]
    $ touch first

    # запись слова text в файл first
    [root@djskel ~/task01]
    $ echo text>first

    # вывод содержимого файла first на экран
    [root@djskel ~/task01]
    $ cat first
    text

    # запуск цикла, который повторится 3 раза; вывод содержимого файла first в файл second; завершение цикла
    [root@djskel ~/task01]
    $ for i in i=1 to 3; do cat first>>second; done

    # вывод содердимого файла second на экран
    [root@djskel ~/task01]
    $ cat second
    text
    text
    text


    2. Приведите все возможные способы просмотра каталога /usr/bin/

    #сортировка по имени файла. параметр -l показывает подробную информацию о каждом файле. фильтр head показывает первые 10 строк результата листинга.
    djskel@djskel ~
    $ ls -l -U /usr/bin/ | head -n 10
    total 16439
    -rwxr-x---+ 1 djskel Пользователи 67072 Dec 17 2002 addftinfo.exe
    -rwxr-x---+ 1 djskel Пользователи 8544 Dec 17 2002 afmtodit
    -rwxr-x---+ 1 djskel Пользователи 1786 Apr 6 2007 apropos
    -rwxr-x---+ 1 djskel Пользователи 7168 Aug 24 16:40 ascii.exe
    -rwxr-x---+ 1 djskel Пользователи 74240 Jan 27 2004 ash.exe
    lrwxrwxrwx 1 djskel Пользователи 8 Nov 19 13:30 awk.exe -> gawk.exe
    -rwxr-x---+ 1 djskel Пользователи 9216 Aug 24 16:40 banner.exe
    -rwxr-x---+ 1 djskel Пользователи 24064 Aug 22 06:04 base64.exe
    -rwxr-x---+ 1 djskel Пользователи 18432 Aug 22 06:04 basename.exe

    #сортировка по расширению. параметр -l показывает подробную информацию о каждом файле. фильтр head показывает первые 10 строк результата листинга.
    djskel@djskel ~
    $ ls -l -X /usr/bin/ | head -n 10
    total 16439
    -rwxr-x---+ 1 djskel Пользователи 8544 Dec 17 2002 afmtodit
    -rwxr-x---+ 1 djskel Пользователи 1786 Apr 6 2007 apropos
    -rwxr-x---+ 1 djskel Пользователи 6935 Sep 27 11:22 bashbug
    lrwxrwxrwx 1 djskel Пользователи 6 Nov 19 13:28 bzcmp -> bzdiff
    -rwxr-x---+ 1 djskel Пользователи 2147 Nov 11 2006 bzdiff
    lrwxrwxrwx 1 djskel Пользователи 6 Nov 19 13:28 bzegrep -> bzgrep
    lrwxrwxrwx 1 djskel Пользователи 6 Nov 19 13:28 bzfgrep -> bzgrep
    -rwxr-x---+ 1 djskel Пользователи 3642 Nov 11 2006 bzgrep
    lrwxrwxrwx 1 djskel Пользователи 6 Nov 19 13:28 bzless -> bzmore

    #сортировка по размеру. параметр -l показывает подробную информацию о каждом файле. фильтр head показывает первые 10 строк результата листинга.
    djskel@djskel ~
    $ ls -l -S /usr/bin/ | head -n 10
    total 16439
    -rwxr-x---+ 1 djskel Пользователи 1873811 Jan 31 2007 cygwin1.dll
    -rwxr-x---+ 1 djskel Пользователи 999424 Oct 23 2006 cygiconv-2.dll
    -rwxr-x---+ 1 djskel Пользователи 470528 Sep 27 11:23 bash.exe
    -rwxr-x---+ 1 djskel Пользователи 470528 Sep 27 11:23 sh.exe
    -rwxr-x---+ 1 djskel Пользователи 470016 Jan 31 2007 dumper.exe
    -rwxr-x---+ 1 djskel Пользователи 393216 Dec 17 2002 troff.exe
    -rwxr-x---+ 1 djskel Пользователи 309760 Jun 27 12:54 cygpcrecpp-0.dll
    -rwxr-x---+ 1 djskel Пользователи 299008 Aug 24 16:40 lpr.exe
    -rwxr-x---+ 1 djskel Пользователи 293376 Oct 26 18:27 pgawk-3.1.6.exe

    #сортировка по дате. параметр -l показывает подробную информацию о каждом файле. фильтр head показывает первые 10 строк результата листинга.
    djskel@djskel ~
    $ ls -l -t /usr/bin/ | head -n 10
    total 16439
    -rw-r--r-- 1 djskel Отсутствует 2613 Nov 20 19:38 out
    lrwxrwxrwx 1 djskel Пользователи 7 Nov 19 13:30 manpath.exe -> man.e
    xe
    -rwxr-x---+ 1 djskel Пользователи 293376 Nov 19 13:30 pgawk.exe
    -rwxr-x---+ 1 djskel Пользователи 292864 Nov 19 13:30 gawk.exe
    lrwxrwxrwx 1 djskel Пользователи 8 Nov 19 13:30 awk.exe -> gawk.exe
    lrwxrwxrwx 1 djskel Пользователи 6 Nov 19 13:28 bzless -> bzmore
    lrwxrwxrwx 1 djskel Пользователи 6 Nov 19 13:28 bzfgrep -> bzgrep
    lrwxrwxrwx 1 djskel Пользователи 6 Nov 19 13:28 bzegrep -> bzgrep
    lrwxrwxrwx 1 djskel Пользователи 6 Nov 19 13:28 bzcmp -> bzdiff

    #сортировка по версии. параметр -l показывает подробную информацию о каждом файле. фильтр head показывает первые 10 строк результата листинга.
    djskel@djskel ~
    $ ls -l -v /usr/bin/ | head -n 10
    total 16439
    -rwxr-x---+ 1 djskel Пользователи 29696 Aug 22 06:04 [.exe
    -rwxr-x---+ 1 djskel Пользователи 67072 Dec 17 2002 addftinfo.exe
    -rwxr-x---+ 1 djskel Пользователи 8544 Dec 17 2002 afmtodit
    -rwxr-x---+ 1 djskel Пользователи 1786 Apr 6 2007 apropos
    -rwxr-x---+ 1 djskel Пользователи 7168 Aug 24 16:40 ascii.exe
    -rwxr-x---+ 1 djskel Пользователи 74240 Jan 27 2004 ash.exe
    lrwxrwxrwx 1 djskel Пользователи 8 Nov 19 13:30 awk.exe -> gawk.exe
    -rwxr-x---+ 1 djskel Пользователи 9216 Aug 24 16:40 banner.exe
    -rwxr-x---+ 1 djskel Пользователи 24064 Aug 22 06:04 base64.exe


    3. Найдите в системе файл, содержащий в имени три гласные буквы подряд.

    # поиск файлов начиная с корневой директории, в которых содержатся 3 гласные буквы подряд. сам поиск осуществлен с помощью параметра "-regex"(регулярные выражения). в данном случае в шаблоне пришлось три раза перечислить все гласные буквы латинского алфавита. параметр "-type f" заставляет искать только файлы. сообщения об ошибках перенаправляем в /dev/null. параметр head покажет количество строк, указанных в параметре -n (в данном случае 10) с начала вывода.
    root@djskel ~
    $ find / -type f -regex '.*[euioaEUIOA][euioaEUIOA][euioaEUIOA].*' 2>/dev/null |head -n 10
    /cygdrive/c/distr/winxp1/I386/AAAAMON.DL_
    /cygdrive/c/distr/winxp1/I386/ANGSAUI.TT_
    /cygdrive/c/distr/winxp1/I386/AQUEUE.DL_
    /cygdrive/c/distr/winxp1/I386/BROWAUI.TT_
    /cygdrive/c/distr/winxp1/I386/BROWSEUI.DL_
    /cygdrive/c/distr/winxp1/I386/COMPDATA/HPAIO1.HTM
    /cygdrive/c/distr/winxp1/I386/COMPDATA/HPAIO1.TXT
    /cygdrive/c/distr/winxp1/I386/COMPDATA/HPAIO2.HTM
    /cygdrive/c/distr/winxp1/I386/COMPDATA/HPAIO2.TXT
    /cygdrive/c/distr/winxp1/I386/CORDIAI.TT_


    4. Найдите в системе файл, состоящий из 5 и более заглавных букв подряд.
    # ищем файлы, в которых содержатся 5 заглавных букв подряд. для этого в шаблоне поиска пять раз повторена маска, соответствующая всем заглавным буквам латинского алфавита. поиск осуществляется начиная с корневой директории. ключ "-n" выводит номер строки, в которой встретилось данное совпадение, "-a" - заставляет обрабатывать бинарные файлы как текстовые и, таким образом, выводить совпадающие сторки из бинарных файлов, "-R" - рекурсия. сообщения об ошибках перенаправляем в /dev/null. фильтр head показывает первые 10 строк результата поиска.
    root@djskel ~
    $ egrep '.*[A-Z][A-Z][A-Z][A-Z][A-Z].*' / -naR 2>/dev/null | head -n 10
    /bin/afmtodit:13:# groff is distributed in the hope that it will be useful, but WITHOUT ANY
    /bin/afmtodit:14:# WARRANTY; without even the implied warranty of MERCHANTABILITY or
    /bin/afmtodit:15:# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
    /bin/afmtodit:19:# with groff; see the file COPYING. If not, write to the FreeSoftware
    /bin/afmtodit:146: open(ENCODING, $opt_e) || die "$prog: can't open \`$opt_e': $!\n";
    /bin/afmtodit:147: while (<ENCODING>) {
    /bin/afmtodit:158: close(ENCODING);
    /bin/apropos:10:# License as specified in the README file that comes with the man
    /bin/ascii.exe:17: but WITHOUT ANY WARRANTY; without even the implied warranty of
    /bin/ascii.exe:18: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the


    5. Составте конвейер, при помощи которого слово ABRAKADABRA, выведется на экран с заменой букв R на L (echo, tr)

    # выводим слово "ABRAKADABRA" и сразу же перенаправляем его путем создания конвейера с помощью оператора "|" на ввод фильтра tr. этот фильтр преобразует символ "R" в символ "L". в итоге на вывод получим слово "ABRAKADABRA" пропущенное через фильтр - "ABLAKADABLA".
    root@djskel ~
    $ echo "ABRAKADABRA"| tr R L
    ABLAKADABLA


    6. Прокомментируйте права доступа к файлу (команде) passwd
    # переходим в каталог /usr/bin и просматриваем файл passwd. первый символ "-" обозначает что passwd - это именно файл(а не, например, директория, каталог, сокет, ссылка и т.п.).
    # первая триада битов(права владельца) "rws" означает, что пользователь root имеет право читать/выполнять/изменять его, плюс на файл установлен SUID-бит(бит смены идентификатора пользователя). смысл этого бита состоит в следующем: обычно, когда пользователь запускает некоторую программу на выполнение, эта программа получает те же права доступа к файлам и каталогам, которые имеет пользователь, запустивший программу. если же установлен "бит смены идентификатора пользователя", то программа получит права доступа к файлам и каталогам, которые имеет владелец файла программы(таким образом, рассматриваемый атрибут лучше называть "битом смены идентификатора владельца"). это позволяет решать некоторые задачи, которые иначе было бы трудно выполнить. самый характерный пример - это как раз команда смены пароля passwd. все пароли пользователей хранятся в файле /etc/passwd, владельцем которого является суперпользователь root. поэтому программы, запущенные обычными пользователями, в том числе команда passwd, не могут производить запись в этот файл. а, значит, пользователь как бы не может менять свой собственный пароль. но для файла /usr/bin/passwd установлен "бит смены идентификатора владельца", каковым является пользователь root. следовательно, программа смены пароля passwd запускается с правами root и получает право записи в файл /etc/passwd (уже средствами самой программы обеспечивается то, что пользователь может изменить только одну строку в этом файле).
    # вторая триада(права группы) "r-x" означает, что все пользователи, входящие в группу root могут только читать/выполнять его, не имея права на модификацию этого файла.
    # третья триада(права для всех остальных) "r-x" означает, что остальные пользователи(не входящие в группу root) могут только читать/выполнять его, не имея права на модификацию этого файла(т.е. точно такие же права, как и у пользователей группы root.).
    # далее расположено поле со счетчиком ссылок на файл. в данном случае здесь стоит единица, значит /usr/bin/passwd - единственное имя, под которым известен данный файл.
    # cледующие два поля - владелец и группа файла. в данном случае владельцем файла является пользователь root, и файл принадлежит группе root.
    # затем следует поле, отображающее размер файла в байтах. рассматриваемый файл имеет размер 29060 байт, т.е. чуть больше 28 Кбайт.
    # далее указывается дата последнего изменения: 20 октября 2006 г. и время последнего изменения: 2 часа 52 минуты.
    # в последнем поле содержится имя файла - /usr/bin/passwd.

    root@djskel ~
    $ cd /usr/bin && ls -l passwd
    -rwsr-xr-x 1 root root 29060 2006-10-20 02:52 passwd

    # переходим в каталог /etc и просматриваем файл passwd. первый символ "-" обозначает что passwd - это именно файл.
    # первая триада битов(права владельца) "rw-" означает, что пользователь root имеет право производить чтение/запись этого файла, но не может выполнять его.
    # вторая триада(права группы) "r--" означает, что все пользователи, входящие в группу root могут только читать его, не имея права на модификацию/выполнение этого файла.
    # третья триада(права для всех остальных) "r--" означает, что остальные пользователи(не входящие в группу root) могут только читать его, не имея права на модификацию/выполнение этого файла(т.е. точно такие же права, как и у пользователей группы root.).
    # далее расположено поле со счетчиком ссылок на файл. в данном случае здесь стоит единица, значит /etc/passwd - единственное имя, под которым известен данный файл.
    # cледующие два поля - владелец и группа файла. в данном случае владельцем файла является пользователь root, и файл принадлежит группе root.
    # затем следует поле, отображающее размер файла в байтах. рассматриваемый файл имеет размер 1237 байт, т.е. чуть больше 1 Кбайта.
    # далее указывается дата последнего изменения: 24 ноября 2007 г. и время последнего изменения: 19 часов 59 минут.
    # в последнем поле содержится имя файла - /etc/passwd.
    root@djskel ~
    $ cd /etc && ls -l passwd
    -rw-r--r-- 1 root root 1237 2007-11-24 19:59 passwd


    7. Создайте сжатый архив файлов, измененных за последнюю неделю (tar, gzip, find, cpio)

    # ищем только файлы, начиная с корня, с датой модификации на старше 7 дней. результат поиска выводим в files.txt. сообщения об ошибках перенаправляем в /dev/null.
    root@djskel ~
    $ find / -type f -mtime -7 > files.txt 2>/dev/null

    # создаем несжатый архив файлов. "-с" создает новый архив, "-f" задает имя для архива(в данном случае arch.tar). "-T" берет список файлов для архива из files.txt. сообщения об ошибках перенаправляем в /dev/null.
    root@djskel ~
    $ tar -cf arch.tar -T files.txt 2>/dev/null

    # сжимаем архив программой gzip
    root@djskel ~
    $ gzip arch.tar

    # выводим на экран информацию о только что созданном архиве: имя файла, содержащегося в архиве, его сжатый и не сжатый размеры и степень сжатия.
    root@djskel ~
    $ gzip -l arch.tar.gz
    compressed uncompressed ratio uncompressed_name
    60560158 163093504 62.9% arch.tar


    8. Сохраните в отдельном файле и прокомментируйте данные о процессе init
    # программа "ps" используется для получения списка запущенных процессов. с помощью "aux" получаем подробную информацию о каждом запущенном процессе. ключем "-p" задаем конкретный PID процесса - в данном случае это единица, что соответствует процессу init(init - это первый действительный процесс, запускаемый ядром при загрузке, и его PID всегда равен 1). вывод перенаправляем в файл processes.txt

    root@djskel:~
    $ ps aux -p 1 > processes.txt

    # выводим содержимое файла processes.txt на экран. поле USER отображает имя пользователя, запустившего процесс, PID - идентификатор процесса, %CPU - уровень использования процессора, %MEM - уровень использования памяти, VSZ - объём используемой виртуальной памяти, RSS - объём используемой реальной памяти, TTY - терминал, с которым связан процесс("?" потому, что init это первый системный процесс и он не связан ни с одним терминалом), STAT - состояние выполнения("S" - означает, что процесс бездействует, "s" - то что процесс лидер сеанса), START - время старта, TIME - время исполнения (на процессоре), COMMAND - имя программы.

    root@djskel:~
    $ cat processes.txt
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.7 0.0 1628 536 ? Ss 13:53 0:01 /sbin/init splash


    9. Сохраните листинг самых ресурсоемких процессов и прокомментируйте его.

    # поле USER отображает имя пользователя, запустившего процесс, PID - идентификатор процесса, %CPU - уровень использования процессора, %MEM - уровень использования памяти, VSZ - объём используемой виртуальной памяти, RSS - объём используемой реальной памяти, TTY - терминал, с которым связан процесс, STAT - состояние выполнения, START - время старта, TIME - время исполнения (на процессоре), COMMAND - имя программы.
    # в выводе этого листинга видно, что процесс amarok с PID 4997, созданный пользователем root является самым ресурсоемким по использованию процессора. он использует процессор на 5.5, память на 3.8, его виртуальная память 127632, реальная память 40044, он не прикреплен ни к одному терминалу, его статус: "S" - означает, что процесс бездействует(ожидает выполнения), "L" - означает что это real-time процесс, имеются страницы заблокированные в памяти, время запуска процесса 11 часов 56 минут, время выполнения 16 секунд.
    root@djskel:~
    ps aux --sort -pcpu | head -n 3
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 4997 5.5 3.8 127632 40044 ? SLl 11:56 0:16 amarok
    root 5304 3.9 0.0 1852 776 ? RN 12:00 0:01 /usr/bin/updatedb

    # поле USER отображает имя пользователя, запустившего процесс, PID - идентификатор процесса, %CPU - уровень использования процессора, %MEM - уровень использования памяти, VSZ - объём используемой виртуальной памяти, RSS - объём используемой реальной памяти, TTY - терминал, с которым связан процесс, STAT - состояние выполнения, START - время старта, TIME - время исполнения (на процессоре), COMMAND - имя программы.
    # в выводе этого листинга видно, что процесс "/sbin/init splash" с PID 1, созданный пользователем root является самым ресурсоемким по использованию оперативной памяти. он использует процессор на 0.2, память на 0.1, его виртуальная память 1628, реальная память 536, он не прикреплен ни к одному терминалу, его статус: "S" - означает, что процесс бездействует, "s" - то что процесс лидер сеанса, время запуска процесса 11 часов 54 минуты, время выполнения 2 секунды.
    root@djskel:~
    ps aux --sort -pmem | head -n 3
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.2 0.1 1628 536 ? Ss 11:54 0:02 /sbin/init splash
    root 2 0.0 0.0 0 0 ? S 11:54 0:00 [migration/0]


    10. Переведите часы на зимнее время (на 1 час назад)
    #выводим на экран текущую дату
    root@djskel ~
    $ date
    Fri Nov 30 15:58:48 2007

    #переводим текущую дату на 1 час назад. (параметр "--s" расшифровывается как "set" - "установить")
    root@djskel ~
    $ date --s -1hour
    Fri Nov 30 14:58:54 2007
     
    #1 Dj Skeleton™, 19 Nov 2007
    Last edited: 24 Dec 2007
    1 person likes this.
  2. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    http://forum.antichat.ru/thread24516.html - тут почти всё, что тебе надо.

    Code:
    #!/bin/bash
    dir /usr/bin/
    ls /usr/bin/
    cd /usr/bin/  && echo *
    find /usr/bin/
    
     
    #2 Ky3bMu4, 19 Nov 2007
    Last edited: 20 Nov 2007
    1 person likes this.
  3. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    2Ky3bMu4, спасибо, +++

    ну вот смотри например как я пытаюсь решить третью задачу:

    find / -regex '.*[qeuioaQEUIOA][qeuioaQEUIOA][qeuioaQEUIOA].*'


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

    вот что получается:
    dj-skeleton@djskel ~
    $ echo /usr/bin/
    /usr/bin/


    т.е. он просто печатает то, что после echo. может как-то по-другому выполнить эту команду? или получается, что всего 3 возможных варианта просмотра? это точно, все возможные, или могут быть еще?
     
    #3 Dj Skeleton™, 20 Nov 2007
    Last edited: 20 Nov 2007
  4. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Сорри, чуть-чуть ошибся. Исправил.
     
  5. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    а насчет остальных задач что-нибудь можешь помочь? глянул линк, которых там дан... ничего полезного для этих задач не нашел.

    зы. неужели никто помочь не может?((
     
    1 person likes this.
  6. sedoy_xxx

    sedoy_xxx Elder - Старейшина

    Joined:
    5 Jul 2006
    Messages:
    244
    Likes Received:
    41
    Reputations:
    -1
    _http://ru.gentoo-wiki.com/Секреты_командной_строки
    должно помочь
     
    #6 sedoy_xxx, 20 Nov 2007
    Last edited: 20 Nov 2007
    1 person likes this.
  7. L0rd_Ha0S

    L0rd_Ha0S Elder - Старейшина

    Joined:
    25 Jan 2006
    Messages:
    148
    Likes Received:
    102
    Reputations:
    64
    Так наверное проще будет :):
    Code:
    $ echo /usr/bin/*
    чтобы показывал красиво, в одну колонку, тогда вот так:
    Code:
    $ echo /usr/bin/* |sed -e 's/ /\n/g'
    Code:
    find / -regex '.*[qeuioaQEUIOA][qeuioaQEUIOA][qeuioaQEUIOA].*'|head -n 1
    
    Покажет количество строк, указанных в параметре -n (в данном случае 1) с начала вывода
    Code:
    find / -regex '.*[qeuioaQEUIOA][qeuioaQEUIOA][qeuioaQEUIOA].*'|tail -n 1
    То же самое, только показывает указанное количество строк с конца.
     
    3 people like this.
  8. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    2L0rd_Ha0S, спасибо, выручил. нигде не мог найти этой инфы. +10.

    если возникнут проблемы, можно еще обратиться?))
     
  9. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    по поводу седьмой задачи... пытаюсь архивировать файлы за прошедшию неделю, вот кусок из шелла:

    dj-skeleton@djskel ~/task07
    $ find . -mtime -7 -exec gzip -c '{}' > files.gz \;
    gzip: . is a directory -- ignored


    gzip ругается что проигнорировал . т.к. это директория. но мне нужно осуществлять поиск именно в текущей.

    плюс к этому, в архив попадает только первый файл, который будет найден, а не все удовлетворяющие условию.

    объясните, плз, что я делаю не так?
     
    1 person likes this.
  10. sunb0rn

    sunb0rn Member

    Joined:
    5 Sep 2006
    Messages:
    11
    Likes Received:
    7
    Reputations:
    5
    непроверял, но может так получится:
    $ find . -type f -mtime -7 -exec gzip -c '{}' \;>> files.gz
     
  11. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    http://ruslandh.narod.ru/howto_ru/Bash-Prog-Intro/Bash-Prog-Intro.html

    Очень интесный сайт. KOI8-R .
     
    1 person likes this.
  12. L0rd_Ha0S

    L0rd_Ha0S Elder - Старейшина

    Joined:
    25 Jan 2006
    Messages:
    148
    Likes Received:
    102
    Reputations:
    64
    Code:
    $ cat first > second; cat first >>second ; cat first >> second
    :)
    Code:
    $ echo "ABRAKADABRA"| tr R L
    Code:
    $ ls -lah `which passwd`
    -rws--x--x 1 root root 36K Апр 17  2007 /bin/passwd
    
    На файл установлен suid-бит. Пользователь root имеет право читать/выполнять/изменять его. Все пользователи, входящие в группу root могут только выполнять его, не имея права не чтение/модификацию этого файла. Остальные пользователи(не входящие в группу root) могут только выполнять его, не имея права не чтение/модификацию этого файла. Т.е. точно такие же права, как и у пользователей группы root.
    Code:
    $ find / -type f -mtime -7 | cpio -ov >archive.cpio
    Создаёт несжатый cpio-архив
    Code:
    $ find / -type f -mtime -7 -exec tar -jcf archive.tar.bz2 {} +
    Создает сжатый bzip-архив (это больше подходит к условию)
    Code:
    $ date --help
    ;)
     
    4 people like this.
  13. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    2L0rd_Ha0S, слушай, сможешь объяснить, почему забраковали задания?

     
  14. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Code:
    $ ps u -C init > init.txt
    
     
    #14 Ky3bMu4, 21 Nov 2007
    Last edited: 22 Nov 2007
  15. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    2Ky3bMu4, не мог бы ты сюда выложить данные о своем процессе init? у меня cygwin и этого процесса просто-напросто нет(( и каким образом и что там нужно прокомментировать?
     
  16. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Code:
    root@alex-desktop:~# ps u -C init
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.7  0.0   1628   536 ?        Ss   13:53   0:01 /sbin/init splash
    
    
    USER - собственно сам юзер.
    PID - process ID. Уникальный номер процесса. У init`a всегда 1.
    %CPU - скоко отедает у процессора
    %MEM - скоко от оперативки
    VSZ и RSS - признаюсь честоно - незнаю что это
    TTY - номер вирутального десктопа под которым запущен процесс. Т.к.
    init по сути системный, то он вне всяких десктопов.
    STAT - в каком состоянии находится. Всего непомню, помню, что S - suspended(в ожидании), Т - приостановеленный. R - running.
    START - когда запустили.
    TIME - сколько времени работает процесс.
    CMD - собственно комманда.
     
    #16 Ky3bMu4, 22 Nov 2007
    Last edited: 22 Nov 2007
    1 person likes this.
  17. ShadOS

    ShadOS ы

    Joined:
    11 Feb 2007
    Messages:
    667
    Likes Received:
    351
    Reputations:
    413
    Code:
    touch ./second
    i=1
    while [ "$i" -le 3 ]
    do
    head -n 1 ./first >> ./second;
    let "i+=1";
    done
    
    Так будет правильнее в отличие от вышеприведённых способов.

    Кроме того, в некоторых системах можно напрямую открыть каталог как файл и посмотреть его содержимое. Например:
    Code:
    vim /usr/bin
     
    #17 ShadOS, 22 Nov 2007
    Last edited: 22 Nov 2007
    3 people like this.
  18. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    2ShadOSб первую задачу у меня давно уже приняли... такое написать несложно)) а вот насчет остальных - жопа(( за попытку помочь с задачей спс, но у мну не работает((
     
  19. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    2Ky3bMu4, спасибо, +10 за не однократную попытку помочь, но к сожалению комментарии типа "наверное", "не знаю", "скорее всего" не прокатят((( нужны четкие пояснения((( эх..... че ж я пару лет назад линукс себе не поставил(((
     
  20. Dj Skeleton™

    Joined:
    1 Jun 2002
    Messages:
    225
    Likes Received:
    11
    Reputations:
    1
    ребят, кто все задачи по полочкам разложит, обещаю 1000WMR. хм... может это и мало, но думаю для того кто хорошо разбирается в баше это раз плюнуть... :-/

    зы. только уговор. если задачу у меня не примут, вместе с тем кто подпишется все разложить обсуждаем ее недостатки пока не будет все ок. деньги только после этого. не волнуйтесь, не обману. я сейчас не в том положении, чтобы кого-то обманывать...)) да и на ачате давно. дидлайн уже скоро)) как только получу ответ "принял" на все задачи - тут же деньги получишь. а пока что ответ "принял" получил только на первое задание, которое написал сам еще до публикации первого поста здесь. остальные два задания, которые частично написал сам, частично с чьей-то помощью не приняли... почему - так и не понял. у меня даже в cygwin все работает((


    UPDATE: давайте договоримся так - по 100 wmr за каждую принятую задачу с вашей помощью.
     
    #20 Dj Skeleton™, 22 Nov 2007
    Last edited: 23 Nov 2007