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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
Но почему запуск скрипта это нормально, а запуск скрипта со своим интерпритатором — нет?
У тебя и так рутовые права, как я понимаю, ты и так всё гробануть можешь, так не всё ли равно им каким софтом ты это сделаешь?!

----------
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.

Всего записей: 6562 | Зарегистр. 28-08-2008 | Отправлено: 13:22 25-08-2016
CrownRU



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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
Я же тебе говорю — разложи просто везде статичный бинарник и пофигу что там вокруг.

----------
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.

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



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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
Ну, конечно, надо.
Где-нить на своей рабочей/домашней машине компилишь и всё. Потом тебе надо лишь один файл будет, сам bash. Он самодостаточным получится, хотя и немного тяжёлым из-за этого.
 
Если не получится, скомпилю за тебя, если успею сегодня.

----------
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.

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Я так понимаю надо компилить на машине, где это работать должно?
Прошу прощения за чайниковские вопросы

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
Цитата:
Я так понимаю надо компилить на машине, где это работать должно?  

Цитата:
Где-нить на своей рабочей/домашней машине компилишь и всё.  
Желательно что бы совпадала архитектура, а вообще и это решается кросскомпиляцией...
 
Добавлено:
CrownRU
В общем для x86-64 я тебе сделал — http://rgho.st/6HSqnmFdG.

----------
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.

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



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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
оО, а Чт и Пт у тебя выходные?)

----------
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.

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



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

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



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

Цитата:
#!/bin/bash
 
alias hhh='ls -Fail'
hhh
exit 0
 

В ответ пишет только

Цитата:
 line 4: hhh: command not found

Куда смотреть надо?
 
Спасибо

Всего записей: 182 | Зарегистр. 04-07-2015 | Отправлено: 14:20 27-08-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd>> оО, а Чт и Пт у тебя выходные?)
CrownRU> Не, заболел я :-)
 
«Заболел» и смайлик.  Даже затрудняюсь, что написать: то ли «сочувствую», то ли «поздравляю».  :-)  Выбери сам.

 



stupom> Куда смотреть надо?
 
В документацию, вестимо.

Цитата:
  Aliases are not expanded when the shell is not interactive, unless
the `expand_aliases' shell option is set using `shopt' (*note The Shopt
Builtin::).
(info "(bash) Aliases"), оно же $ info '(bash) Aliases',
оно же https://www.gnu.org/software/bash/manual/bash.html#Aliases

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 16:53 27-08-2016 | Исправлено: ASE_DAG, 17:01 27-08-2016
CrownRU



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

Цитата:
CrownRU> Не, заболел я  
 
«Заболел» и смайлик.  Даже затрудняюсь, что написать: то ли «сочувствую», то ли «поздравляю».    Выбери сам.  

 
Да не с чем поздравлять. Ощущение, как будто еж в горле, сопли. Вообщем лучше не болеть.  
 
Добавлено:
ASE_DAG
Я тебе в личку постанул, уточнить куда пузырь слать ...

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 23:54 27-08-2016 | Исправлено: CrownRU, 01:12 28-08-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
> лучше не болеть.
 
Это верно.  :-)

 
> уточнить куда пузырь слать :-)
 
Так оно что, работает как надо?  Не может такого быть — там принципиальная ошибка — каталог failed, наличие которого используется за условие ошибки, не удаляется.
 
И вообще, если не еще начал возиться с установкой Баша, то вот:
 

#!/usr/bin/perl
 
package CrownRU;
 
use warnings;
use XML::LibXML;
use File::Path;
use File::Copy;
 
my $xml_parser = XML::LibXML->new(validate => 0,
                                  load_ext_dtd => 0);
 
sub new
{
  my ($class, $dir, $id) = @_;
  my $self = {};
  (my $id_ = $id) =~ tr,/,_,;
  $self->{initscript} = "$dir/$id/bin/$id_";
  $self->{failed_dir} = "$dir/$id/failed";
  $self->{system_dir} = "$dir/$id/system";
  my $config = "$dir/$id/config/$id_.xml";
  $self->{import_dir} = ($xml_parser
                         ->load_xml(location => $config)
                         ->find('//placeholder[@name="importPath"]/node()')
                         ->string_value());
  return bless $self, $class;
}
 
sub start
{
  my $self = shift;
  system $self->{initscript}, 'start';
}
 
sub stop
{
  my $self = shift;
  system $self->{initscript}, 'stop';
}
 
sub process_failed
{
  my $self = shift;
  -d $self->{failed_dir}
    or return;
  $self->stop();
  rmtree $self->{system_dir};
  move $_, $self->{import_dir} for glob "$self->{failed_dir}/*";
  rmdir $self->{failed_dir};
  $self->start();
}
 
package main;
 
use warnings;
 
@ARGV == 1
  or die "Usage example: $0 '/archive/obj/bastore/'\n";
 
my ($wd) = @ARGV;
my $timeout = 5 * 60;
 
chdir $wd
  or die "$!\n";
 
@instances = map { CrownRU->new($wd, $_) } glob '?/*';
 
for (;;) {
  $_->process_failed() for @instances;
  sleep $timeout;
}

 
Надеюсь, что libxml2 у вас там наличествует.  И разумеется, не проверял.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 07:34 29-08-2016
CrownRU



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

Код:
# echo "$BASH_VERSION"
4.3.46(1)-release

 
К сожалению вылазят вот такие ошибки:
Ошибки
 
И еще, если не трудно, можно сделать какоe нибудь перенаправление в лог и возможность скармливать скрипту какую нибудь одиночную инстанцию? Типа:

Код:
idxsafe.sh N_NST_MDP

 
P.S. Каталог failed удалять не нужно. Надо только переместить файлы
Код:
mv *.idx <import_path>
, а содержимое system стереть.

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 10:17 29-08-2016 | Исправлено: CrownRU, 10:20 29-08-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
> warning: failed to load external entity "F/exchange/config/F_exchange.xml"
> warning: failed to load external entity "N/core/config/N_core.xml"
 
То есть в подкаталогах есть еще какие exchange и core, что учитывать не надо?  А что тогда надо, если не ?/*?  Ну попробую угадать, что ?/???_*.  Так?
 
> mv: cannot stat `F/FQT_RA/failed/*': No such file or directory
 
Это ровно та ошибка, о которой я сказал выше: «там принципиальная ошибка — каталог failed, наличие которого используется за условие ошибки, не удаляется».  Не понимаю, зачем было запускать программу, не исправив ее.
 
> Exception in thread "main" java.io.IOException: Failed to retrieve RMIServer stub:
 
Ява?  Какая еще Ява?  Это, я так понимаю, что-то с инит-скриптом экземляра этой проприетарщины.
 
> Каталог failed удалять не нужно. Надо только переместить файлы
> mv *.idx <import_path>
 
И соответственно условием будет наличие таковых файлов.  ОК.  
 
> И еще, если не трудно, можно сделать какоe нибудь перенаправление в лог
 
В какой?  В Сислог?  Да, не вопрос.
 
> и возможность скармливать скрипту какую нибудь одиночную инстанцию?
 
Да и не одиночную тоже не проблема.
 
Лови:
 

#!/usr/bin/perl
 
package CrownRU;
 
use warnings;
use XML::LibXML;
use File::Path;
use File::Copy;
 
my $xml_parser = XML::LibXML->new(validate => 0,
                                  load_ext_dtd => 0);
 
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} = ($xml_parser
                         ->load_xml(location => $config)
                         ->find('//placeholder[@name="importPath"]/node()')
                         ->string_value());
  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);
 
my $SCRIPTNAME = 'idxsafe';
 
@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;
# setlogsock 'stream', '/dev/stderr';
 
$SIG{__WARN__} = sub { syslog LOG_WARNING, @_ };
$SIG{__DIE__} = sub { syslog LOG_ERR, @_ };
 
my ($wd, @ids) = @ARGV;
my $timeout = 5 * 60;
 
-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;
  }
  sleep $timeout;
}

 
(Не проверял.)

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 00:37 30-08-2016 | Исправлено: ASE_DAG, 00:39 30-08-2016
CrownRU



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

Код:
MO-0A248:/archive/obj/bastore/F/FQT_RA # /tmp/saveidx.sh F/FQT_RA
F/FQT_RA: No such file or directory at /tmp/saveidx.sh line 83.
MO-0A248:/archive/obj/bastore/F/FQT_RA # /tmp/saveidx.sh /archive/obj/bastore/F/FQT_RA
No instances found at /tmp/saveidx.sh line 93.
MO-0A248:/archive/obj/bastore/F/FQT_RA # /tmp/saveidx.sh FQT_RA
FQT_RA: No such file or directory at /tmp/saveidx.sh line 83.
 

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU
> # /tmp/saveidx.sh F/FQT_RA
> # /tmp/saveidx.sh /archive/obj/bastore/F/FQT_RA
 
По-моему, кто-то решительно невнимателен. :-)
 

Цитата:
Usage examples:
    $ idxsafe /archive/obj/bastore
    $ idxsafe /archive/obj/bastore N/NST_F3 F/FQP_RA

 
И, кстати, почему он у тебя .sh, когда вовсе нет, не говоря уж о том, что суффиксы исполняемостям обычно не дают?

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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
И, кстати, почему он у тебя .sh, когда вовсе нет, не говоря уж о том, что суффиксы исполняемостям обычно не дают?
а я вот, кстати, за то что бы у скриптов были суфиксы, их так искать проще и не смотря внутрь понимать на чём он написан. Так для shell скриптов (sh, bash) и за расширение .sh.

----------
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.

Всего записей: 6562 | Зарегистр. 28-08-2008 | Отправлено: 18:13 30-08-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd> Так для shell скриптов (sh, bash) и за расширение .sh.
 
Ага, а потом вы перепишете эту программу с Баша на Перл (ровно что и произошло сейчас), и у вас будет файл *.sh, содержащий программу на Перле (менять название исполняемости на поздних этапах-то уже нельзя — интерфейс-с).

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 18:23 30-08-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