Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Открыть новую тему     Написать ответ в эту тему

digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи вопрошающие! Если ваша система отлична от ГНУ, и в то же время вы желаете обойтись только дефолтными средствами, указывайте и то и другое сразу, пожалуйста.


UNIX Shell

 
   Это глобальная тема по юниксовой командной оболочке, как по интерактивной работе в командной строке, так и по шелл-скриптам. Ключевые слова: sh, bash, zsh, tcsh, busybox, readline, coreutils, cp, mv, ln, rm, ls, readlink, mkdir, touch, stat, date, test, sleep, chown, chmod, chattr, dd, df, du, env, echo, cat, less, man, grep, sort, findutils, find, locate, xargs, md5sum, cmp, diff, patch, ps, kill, killall, tar, gzip, bzip2, xz, mount, fdisk, parted, mkfs, fsck, e2fsprogs, mtools, ss, netcat, netstat, rsync, ssh, scp, sftp, lftp, ncftp, time, strace.
   Неинтерактивная обработка текста (sed, awk, perl) пока тоже здесь.
   Смотри в других ветках: wget, convert, montage, mogrify и др., gs, git, 7z, p7zip, soffice, mplayer, mencoder, vlc, vim, mc, mcedit, kioclient.
 
 

Hint! Русские маны (подустаревшие, не всегда полные и не всегда для вашей системы) можно попытаться найти на Опеннете, к примеру: bash, tar, grep.

 
Готовые решения:
  • commandlinefu.com
    Крупнейшая база полезных однострочников на командной оболочке с ранжированием на основе пользовательского голосования.
     
  • shell-fu.org
    Аналогично, но поменьше и формат записей более свободный, поэтому встречаются и однострочники, и развернутые скрипты, и просто советы.
     
  • Useful one-line scripts for sed
    Почти исчерпывающий список решений для тех случаев, когда sed незаменим. Более сложные скрипты с sed.sf.net — только для тех, кто знает толк... :)

 
Учебная литература:
  • Greg’s Wiki (http://mywiki.wooledge.org)
    Наиболее обширный авторский сборник постоянно обновляющихся материалов по Башу.

    1. Bash Pitfalls
      (Частые ошибки программирования на Баше: [1], [2], [3], [4], [5] — пер. на русский по сост. на дек. 2008 г.).
      Рассмотрены преимущественно ошибки, возникающие из-за непонимания отличия шелла от «нормальных» скриптовых языков. Если вы уже владеете, например, Перлом, то это вполне может быть ваше первое руководство для ознакомления с Башем.
    2. Bash FAQ
    3. Bash Guide
    4. Bash Reference Sheet
      Шпаргалка по частым синтаксическим оборотам.

 
Классическая учебная литература:
С одной стороны не упомянуть эти издания нельзя, с другой — они настолько устарели, что едва ли их можно рекомендовать в роли учебника.

 

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

Всего записей: 351 | Зарегистр. 19-04-2003 | Отправлено: 18:51 16-05-2008 | Исправлено: qw12, 09:42 24-03-2020
stupom



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cron шлёт сообщения об ошибках
задание

Цитата:
* * * * * date +%s >> /root/hlam/cron.test.txt

присылает на почту

Цитата:
Cron <root> date +

Если просто "спросить время", то ошибки нет всё пишет в файл.
 
Почему ему не нравится + и что с этим сделать?

Всего записей: 182 | Зарегистр. 04-07-2015 | Отправлено: 18:24 30-08-2016 | Исправлено: stupom, 20:04 30-08-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stupom, как вы пришли к тому, что ему «не нравится +»?  Плюс же исполнился, вы же сами все показали, не?  «Не нравится» ему, наверное, %, и может быть стоит открыть документацию — crontab(5), и прочитать, что&#769; же он в этом контексте значит, и как его экранировать?

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 19:28 30-08-2016 | Исправлено: ASE_DAG, 19:29 30-08-2016
stupom



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG Спасибо, теперь разобрался. Но вот с того, что начал читать абсолютно не было шансов это понять. А то что к плюсу докопался, так это с того что последний символ ассоциировал с ошибкой.

Всего записей: 182 | Зарегистр. 04-07-2015 | Отправлено: 19:46 30-08-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Ну я не согласен, и старый sh им пусть и остаётся. а новый я назову .pl.
А среди моих знакомых, есть те которые не зависимро от execute bit'а пишут sh script.sh, т.о. изменив содержимое на perl ни чего хорошо и так не выйдет.
Расщирение стоит убирать только в однои случае, когда скрипт помещается в PATH, например в /usr/local/bin

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 09:53 31-08-2016
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
По-моему, кто-то решительно невнимателен.  

 
Ай... Прошу прощения.
 
Все равно ошибка:
 

Код:
MO-0A248:~ # /tmp/saveidx /archive/obj/bastore F/FQT_RA
Can't locate object method "load_xml" via package "XML::LibXML" at /tmp/saveidx line 25.
 
MO-0A248:~ # /tmp/saveidx /archive/obj/bastore
Can't locate object method "load_xml" via package "XML::LibXML" at /tmp/saveidx line 25.
 

 
Добавлено:
Alukardd
 
Там уж, хоть .sh, хоть .pl, лишь бы работало. Потом переименуем как надо

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 10:19 31-08-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
Цитата:
Can't locate object method "load_xml" via package "XML::LibXML" at /tmp/saveidx line 25.  
ну видимо потому что
Цитата:
This function is available since XML::LibXML 1.70
текущую версию наверное проще всего узнать так: perldoc -t XML::LibXML | grep -A1 '^VERSION$'

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 11:14 31-08-2016
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Ты прав

Код:
 
0A248:/archive/obj/bastore/F/FQT_RA # perldoc -t XML::LibXML | grep -A1 '^VERSION$'
VERSION
    1.66
 

Можно "проактуализировать" как bash?

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 11:34 31-08-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
Ну perl как и наверное всё можно собрать статично.
Если между рабочими делами выйдет, то соберу тебе.
А так вот — http://search.cpan.org/~mlehmann/App-Staticperl-1.44/staticperl.pod

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 11:42 31-08-2016
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Сапсибо. Я в perl даже не ноль, а ниже нуля  
Пока написал ругательное письмо начальству админов.
Заколебало это "never touch a running system" возведенное в абсолют.
 
Добавлено:
SLES11 SP4

Код:
# zypper up perl
Loading repository data...
Reading installed packages...
No update candidate for 'perl-5.10.0-64.72.1.x86_64'. The highest available version is already installed.
Resolving package dependencies...
 

 
Нету официальных обновлений для SLES11SP4

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 11:55 31-08-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd> Ну perl как и наверное всё можно собрать статично.
 
Из-за такой ерунды?  Там одну строчку переписать для совместимости со старым интерфейсом:
 

@@ -23,7 +23,7 @@
   $self->{system_dir} = "$i/system";
   my $config = "$i/config/$id_.xml";
   $self->{import_dir} = ($xml_parser
-                         ->load_xml(location => $config)
+                         ->parse_file($config)
                          ->find('//placeholder[@name="importPath"]/node()')
                          ->string_value());
   return bless $self, $class;

 
Ну или программка полностью...
 
CrownRU, я прошу прощения, мне наверное надо было сообразить, что 1.70 — не такая уж и старая версия.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:57 31-08-2016 | Исправлено: ASE_DAG, 17:58 31-08-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
Из-за такой ерунды?  Там одну строчку переписать для совместимости со старым интерфейсом
из-за того что уже не первый раз то в bash'е, то в perl'е мы втыкаемся в софт каменного века. Почему бы не иметь актуальные статичные версии итерпритаторов, если уж админы там отказываются что-либо обновлять.

Цитата:
мне наверное надо было сообразить, что 1.70 — не такая уж и старая версия
Это ж не только сообразить надо было, но ещё и знать, что интерфейс менялся в 1.70 версии. Мне пришлось погуглить для этого, т.к. в perldoc'е я на такую информацию не наткнулся.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 18:06 31-08-2016
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Спасибо огромное!
Завтра попробую и сразу отпишусь. Жду ответа на ЛС
 
Добавлено:
Alukardd

Цитата:
 
мне наверное надо было сообразить, что 1.70 — не такая уж и старая версия
Это ж не только сообразить надо было, но ещё и знать, что интерфейс менялся в 1.70 версии. Мне пришлось погуглить для этого, т.к. в perldoc'е я на такую информацию не наткнулся.

 
Спасибо!
Сегодня застращал начальство, что системы дырявые. Надеюсь дойдет и наконец обновят их. Админы молят меня, чтобы я оставил их в покое до пенсии

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 18:43 31-08-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
> Почему бы не иметь актуальные статичные версии итерпритаторов
 
Так а толку?  Здесь не в версии Перла дело, как ошибочно предположил т. CrownRU, став искать обновления для него (# zypper up perl); а в версии libxml-libxml-perl (это в Дебиане пакет зовется так, как в Сузе, я не знаю).   Которая, как можно предположить, должна быть если не точно, то в каких пределах согласована с версией libxml2.  Ее тоже собирать?
 
Хотя тот же load_xml(), как можно узнать, — это действительно всего-лишь внутриперловский сахар.  Я даже затрудняюсь сказать, для чего его вообще ввели.  Вероятно, в порядке совместимости с чем-нибудь.
 
> Это ж не только сообразить надо было, но ещё и знать, что интерфейс менялся в 1.70 версии.
 
Ну так это в документации же написано.  Может быть, вы помните синтаксис XML::LibXML наизусть, я-то — нет, поэтому прежде чем что-либо писать пробежался по ней глазами.
 
> Мне пришлось погуглить для этого, т.к. в perldoc'е я на такую информацию не наткнулся.
 
Ну и вышли на него же.  Бывает.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:10 31-08-2016 | Исправлено: ASE_DAG, 20:27 31-08-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd> текущую версию наверное проще всего узнать так: perldoc -t XML::LibXML | grep -A1 '^VERSION$'
 
Да вы просто мастер костыля! :-)  Я уже давно и забыл, что grep(1) так умеет.
 
А вообще: $ perl -mXML::LibXML -e 'print XML::LibXML->VERSION, "\n"'

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 22:42 31-08-2016 | Исправлено: ASE_DAG, 22:43 31-08-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd> А среди моих знакомых, есть те которые не зависимро от execute bit'а пишут sh script.sh, т.о. изменив содержимое на perl ни чего хорошо и так не выйдет.  
 
Обосновывать дурную, но в целом безвредную привычку другой — уже откровенно глупой и опасной — это сильно!

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 01:13 01-09-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
XML::LibXML->VERSION
Эх, там ООП интерйейс, и функция... А я проверил только переменную XML::LibXML::VERSION, после чего решил использовать perldoc.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 01:18 01-09-2016 | Исправлено: Alukardd, 01:46 01-09-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd> А я проверил только переменную XML::LibXML::VERSION
 
Как это может быть переменной?  Скалярные переменные в Перле начинаются с доллара, а голое слово — это чаще всего именно функция (подпрограмма).
 
Такой сущности как XML::LibXML::VERSION просто нет, но похожая на нее XML::LibXML::LIBXML_VERSION — это именно подпрограмма (что возвращает версию двоичной библиотеки, если что).  Это легко проверить — подставьте к голому слову маркер функции — амперсанд:
 

$ perl -MXML::LibXML -de1
 
DB<1> print XML::LibXML::LIBXML_VERSION # bareword
20901
DB<2> print &XML::LibXML::LIBXML_VERSION # function
20901
DB<3> print $XML::LibXML::LIBXML_VERSION # scalar
 
DB<4>  


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 01:56 01-09-2016 | Исправлено: ASE_DAG, 01:57 01-09-2016
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
После ~10 секундной паузы опять выдал ошибку:
 

Код:
MO-0A248:/archive/obj/bastore/F/FQT_RA # /tmp/saveidx /archive/obj/bastore F/FQT_RA
Operation in progress at /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/XML/LibXML.pm line 587. at /tmp/saveidx line 25

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 09:38 01-09-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
Как это может быть переменной?
Методы тоже можно вызвать таким образом. Просто тут разработчик либы не позаботился об этом.
Что бы оно заработало достаточно внести малюсенькое исправление в модуль. Конечно я не заботился о различных ситуациях, а сделал тяп-ляр, просто что бы показать Вам что так тоже можно.
У меня это 41я строка модуля (она же 1я строка метода VERSION), теперь она выглядит так:
my $class = shift // 'XML::LibXML';
И тогда вызов работает норм:
perl -MXML::LibXML -e 'print XML::LibXML::VERSION'

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 10:07 01-09-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU, привет. :-)  Если я долго никак не отвечаю, а вроде бы намеревался, то вполне вероятно, что есть смысл мне написать и напомнить — я ведь мог и просто пропустить сообщение мимо.  И нет, ни в коем случае не по здешней внутренней почте — она никуда дальше Руборда не идет, на нормальную э-почту.  Ты ее и так знаешь, но на всякий случай (который весьма вероятен в свете последних событий вокруг Руборда) вписал адресок в подпись.
 


Теперь по существу.
 
> После ~10 секундной паузы опять выдал ошибку:
 
А вот не могу ничем обрадовать.  Понятно, надеюсь, что это не совсем ошибка, это он сообщает, что за эти десять секунд так и не смог разобрать конфиг.  Это, конечно, ненормально, но учитывая, что у меня все работает, даже и не знаю, что предположить.  У меня оно правда работает не на F/FQT_RA (который мне никто не давал), а на N/NSP_F3, но, я надеюсь, они по форме одинаковые.
 
Так что не могу предложить ничего лучше, чем дергать из Перла xsltproc, который у нас, кажется, работал вполне корректно:
 

#!/usr/bin/perl
 
# package CrownRU::LibXML;
 
# use warnings;
# use XML::LibXML;
 
# my $xml_parser = XML::LibXML->new(validate => 0,
#                                   load_ext_dtd => 0);
 
# sub xpath
# {
#   my ($file, $xpath) = @_;
#   return $xml_parser->parse_file($file)->find($xpath)->string_value;
# }
 
package CrownRU::XSLTProc;
 
use warnings;
use IPC::Run 'run';
 
sub xpath
{
  my ($file, $xpath) = @_;
  my $in = <<"EOF";
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" encoding="utf-8" />
  <xsl:template match="/">
    <xsl:value-of select='$xpath' />
  </xsl:template>
</xsl:stylesheet>
EOF
  my ($out, $err);
  run ['xsltproc', '--novalid', '--nonet', '-', $file], \$in, \$out, \$err;
  length $out
    or die "$err";
  return $out;
}
 
package CrownRU;
 
use warnings;
use File::Path;
use File::Copy;
 
# *xpath = \&CrownRU::LibXML::xpath;
*xpath = \&CrownRU::XSLTProc::xpath;
 
sub new
{
  my ($class, $dir, $id) = @_;
  my $i = "$dir/$id";
  -d $i
    or die "$i: $!";
  my $self = { id => $id };
  (my $id_ = $id) =~ tr,/,_,;
  $self->{initscript} = "$i/bin/$id_";
  $self->{failed_dir} = "$i/failed";
  $self->{system_dir} = "$i/system";
  my $config = "$i/config/$id_.xml";
  $self->{import_dir} = xpath($config,
                              '//placeholder[@name="importPath"]/node()');
  return bless $self, $class;
}
 
sub id
{
  my $self = shift;
  return $self->{id};
}
 
sub start
{
  my $self = shift;
  system $self->{initscript}, 'start';
}
 
sub stop
{
  my $self = shift;
  system $self->{initscript}, 'stop';
}
 
sub process_failed
{
  my $self = shift;
  my @idxs = glob "$self->{failed_dir}/*.idx"
    or return;
  $self->stop();
  rmtree $self->{system_dir};
  move $_, $self->{import_dir} for @idxs;
  $self->start();
}
 
 
package main;
 
use warnings;
use Sys::Syslog qw(:standard :extended);
use Getopt::Long;
 
my $SCRIPTNAME = 'idxsafe';
 
my $syslog = 1;
my $timeout = 5 * 60;
 
GetOptions("no-syslog" => sub { $syslog = 0 },
           "timeout=i" => \$timeout);
 
@ARGV >= 1
  or die ("Usage examples:\n" .
          "    \$ $SCRIPTNAME /archive/obj/bastore\n" .
          "    \$ $SCRIPTNAME /archive/obj/bastore N/NST_F3 F/FQP_RA\n");
 
openlog $SCRIPTNAME, 'pid', LOG_USER;
 
$syslog
  or setlogsock 'stream', '/dev/stderr';
 
$SIG{__WARN__} = sub { syslog LOG_WARNING, @_ };
$SIG{__DIE__} = sub { syslog LOG_ERR, @_ };
 
my ($wd, @ids) = @ARGV;
 
-d $wd
  or die "$wd: $!";
 
chdir $wd
  or die "$!";
 
my @instances = map { CrownRU->new($wd, $_) } (@ids
                                               ? @ids
                                               : glob '?/???_*');
 
@instances > 0
  or die "No instances found";
 
syslog(LOG_INFO,
       "Started successfully on: %s", join ', ', map { $_->id } @instances);
 
for (;;) {
  for (@instances) {
    $_->process_failed()
      and syslog LOG_INFO, "%s restored", $_->id;
  }
  exit if $timeout < 0;
  sleep $timeout;
}


----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 07:40 07-09-2016 | Исправлено: ASE_DAG, 07:42 07-09-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru