271

все дело было в 13м канале

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

272

вопрос скорее не по генте, а по линуксу в целом.
вопрос:
как перемещаться по вводу в консоли без мыши?
поясню:
например пишешь какую нибудь длииииную команду, и где то в середине допустил синтаксическую ошибку..
чтобы стрелками не двигать несколько раз нажимая и не тратя время, есть ли какие нибудь горячие клавиши для перемещения курсора влево-вправо, на одно слово, на два.. три..
как в редакторе vim к примеру
где по тексту можно просто быстро бегать.
надеюсь поняли меня

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

273

http://chla.ru/index.php/linux/186-pril21
ну или man readline

274

Можно, кстати, и как в Виме сделать навигацию, но, ИМХО, не очень удобно нажимать каждый раз Esc, чтобы по строке перемещаться. По умолчанию, bash использует emacs-подобные хоткеи.

Йа тьомный эльф

275

Если Alt+клавиша не пеехвачены, можно и без Esc:
Alt+B - back - слово назад
Alt+F - forward - слово вперед
и т.д.

276

bormant, нет, вы неправильно поняли, я не о том.
По умолчанию в bash хоткеи как в emacs: Alt+f, Alt+b. Но, если сделать "set -o vi", то хоткеи станут как в vim: h, j, k, l для навигаци, dw/db - удалить слово вперед/назад, dd - удалить строку и так далее. Но для этих хоткеев нужно выйти (как в Виме) из режима редактирования. А вот для этого как раз и нужно нажать Esc.

Йа тьомный эльф

277

Люди добрые, подскажите как реализовать следующую проверку условия.

если количество строк в файле с определенными словами равно 3,
то ...

нашел только следующее, а как дальше реализовать что то не получается.

cat путь/до/файла | grep искомая_строка | wc -l

показывает сколько строк с искомой строкой.

нужно реализовать следующее условие

if количество строк в файле равно 2
то действие
else
действия не требуется
done

спасибо

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

278

Вот пример: в файле test.txt проверяется количество строк содержащих шаблон 123. Если количество «попаданий» равно 3, пишется OK, в противном случае — NO.

[ $(grep 123 -c test.txt) -eq 3 ] && echo OK || echo NO
Был, был и весь вышел...

279

#!/bin/bash

for file in 'from_mobatch_1/03-00*.log'
do

echo ok1

if [ 'cat ${file} | grep RbsLocalCell=S | wc -w' -eq 3 ];
then

cat ${file} | grep productName | awk '{print $2}' >> result1
echo ok2
fi

done

в консоль выходит только ок1, следовательно условие
if [ 'cat ${file} | grep RbsLocalCell=S | wc -w' -eq 3 ]; не выполняется
в файл тоже ничего не записывается

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

280

'cat ${file} | grep RbsLocalCell=S | wc -w' 

...либо обратные кавычки

`cat ${file} | grep RbsLocalCell=S | wc -w`

...либо

$(cat ${file} | grep RbsLocalCell=S | wc -w)

Конструкция cat ... | grep ... избыточна, grep и сам справляется с чтением файла  wink
...да и ещё — grep «умеет» считать количество строк с заданным паттерном.

Был, был и весь вышел...

281

спасибо, вот изменил.
не помогает

#!/bin/bash

for file in 'from_mobatch_1/03-00*.log'
do

echo ok1

if
[ 'cat ${file} | grep RbsLocalCell=S | wc -w' -eq 3 ]
then

cat ${file} | grep productName | awk '{print $2}' >> result1
echo ok2

fi;

done

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

282

moshell пишет:

спасибо, вот изменил.

Кавычки как были ' так и остались. Нужно `

Был, был и весь вышел...

283

moshell пишет:
cat ${file} | grep productName | awk '{print $2}'

Можно заменить на

awk '/productName/ {print $2}' ${file}
Был, был и весь вышел...

284

Лупо, ошибка в условии, в качестве аргумента какая переменная должна быть?
стринговая данная или цифра?
может пробелы погасить нужно?

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

285

moshell, тогда огласите правильное условие.
Количество вхождений, соответственно, число.
О каких именно пробелах идёт речь? В некоторых конструкциях они обязательны.

Был, был и весь вышел...

286 (20.02.2012 14:52:26 отредактировано moshell)

Lupo Alberto,
cat file | grep RbsLocalCell=S | wc -l
считает количество строк.
при выполнении без скрипта, например
cat file | grep RbsLocalCell=S | wc -l >> example.txt
перед цифрой 3 пробелы неск штук в получаемом файле example.txt

условие должно быть таким
если количество строк == 3,
то действие,
любое другое количество строк, => действия не нужно, то есть даже указывать ничего не надо
if ведь ищет только true и false на сколько я знаю

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

287

moshell, не должно получаться никаких пробелов. Создал тестовый файл — нет никаких пробелов.
Почему вы упорно не хотите использовать?

grep 'RbsLocalCell=S' -c file
Был, был и весь вышел...

288

moshell пишет:

условие должно быть таким
если количество строк == 3,
то действие,
любое другое количество строк, => действия не нужно, то есть даже указывать ничего не надо

http://linuxforum.ru/viewtopic.php?pid=252464#p252464

Был, был и весь вышел...

289

esernar@spbmas1> grep RbsLocalCell from_mobatch_1/03-001.log | wc -l
       3

проверка без скрипта. пробелы создаются, отсюда и не равенство.
как приглушить пробелы?

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

290

moshell, покажите часть (или если не очень большой, полностью) файл 03-001.log.

Был, был и весь вышел...

291

+ открыть спойлер
Logging to file from_mobatch_1/03-001.log
####################################################################
#            Welcome to MoShell 8.0v (LPA108514/1_R8V)             #
#                Finn Magnusson, Jan Pettersson                    #
#            [url]http://utran01.au.ao.ericsson.se/moshell[/url]              #
#            Contact: Finn.Magnusson@ericsson.com                  #
#                     David.Smith@ericsson.com                     #
####################################################################

Checking ip contact...OK

HELP MENU            : h
BASIC MO COMMANDS    : m
OTHER MO COMMANDS    : n
OTHER COMMANDS       : o
PM COMMANDS          : p
QUIT                 : q

03-001> lt all

120215-16:13:56 10.25.160.231 8.0v  stopfile=/tmp/13484
Checking MOM version...RBS_NODE_MODEL_N_1_5
Parsing MOM (cached): /home/esernar/moshell/jarxml/RBS_NODE_MODEL_N_1_5.xml.cache.gz .............................................................Done.
Using paramfile /home/esernar/moshell/commonjars/pm/PARAM_RBS_N_1_0.txt
Parsing file /home/esernar/moshell/commonjars/pm/PARAM_RBS_N_1_0.txt .............................................................................Done.
Fetching IOR file...Done.
Connecting to 10.25.160.231:56834 (CorbaSecurity=OFF, corba_class=2, java=1.5.0_24, jacoms=R73D25, jacorb=R73D01)
**** Welcome to the Simple Mo Browser (version 3.0)!
Trying file=/home/esernar/moshell_logfiles/logs_moshell/tempfiles/20120215-161351_13175/ior13175
**** Test Construction OK
****

$mobrowser_pid = 14086

Connected to 10.25.160.231 (SubNetwork=ONRM_RootMo_R,SubNetwork=RNC01KGD,MeContext=03-001,ManagedElement=1)
Connected to 10.25.160.231 (SubNetwork=ONRM_RootMo_R,SubNetwork=RNC01KGD,MeContext=03-001,ManagedElement=1)
Last MO:  1953. Loaded 1953 MOs. Total:  1954 MOs.

03-001> get 0

120215-16:14:05 10.25.160.231 8.0v RBS_NODE_MODEL_N_1_5 stopfile=/tmp/13484
=================================================================================================================
0                                    ManagedElement=1
=================================================================================================================
ManagedElementId                     1
applicationConfiguration             t[0] = 
faultTolerantCoreStates              s[1] = ManagedElement=1,Equipment=1,Subrack=1,Slot=1,PlugInUnit=1;Active 
healthCheckResult                    Struct{3}
 >>> 1.healthCheckResultCode = 99 (INITIAL_VALUE)
 >>> 2.message = 
 >>> 3.startTime = 
healthCheckSchedule                  t[0] = 
logicalName                          03-001
mimInfo                              Struct{3}
 >>> 1.mimName = RBS_NODE_MODEL_N
 >>> 2.mimVersion = 1.5
 >>> 3.mimRelease = 
mimName                              RBS_NODE_MODEL_N
productName                          RBS3216
productNumber                        11/COH1092086
productRevision                      
productType                          Node
site                                 03-001
userLabel                            03-001
=================================================================================================================
Total: 1 MOs


03-001> get cell avail

120215-16:14:05 10.25.160.231 8.0v RBS_NODE_MODEL_N_1_5 stopfile=/tmp/13484
=================================================================================================================
MO                                                      Attribute         Value
=================================================================================================================
RbsLocalCell=S2C1                                       availabilityStatus 0 (NO_STATUS)
RbsLocalCell=S1C1                                       availabilityStatus 0 (NO_STATUS)
RbsLocalCell=S3C1                                       availabilityStatus 0 (NO_STATUS)
=================================================================================================================
Total: 3 MOs


03-001> st ru

120215-16:14:06 10.25.160.231 8.0v RBS_NODE_MODEL_N_1_5 stopfile=/tmp/13484
===================================================================================
Proxy  Adm State     Op. State     MO
===================================================================================
   38                1 (ENABLED)   Equipment=1,RbsSubrack=RU1,RbsSlot=1,AuxPlugInUnit=1,RuDeviceGroup=1
   52                1 (ENABLED)   Equipment=1,RbsSubrack=RU1,RbsSlot=3,AuxPlugInUnit=1,RuDeviceGroup=1
   66                1 (ENABLED)   Equipment=1,RbsSubrack=RU1,RbsSlot=2,AuxPlugInUnit=1,RuDeviceGroup=1
  225                1 (ENABLED)   Equipment=1,Subrack=1,Slot=1,PlugInUnit=1,Cbu=1,GeneralProcessorUnit=1
  248                1 (ENABLED)   Equipment=1,Subrack=1,Slot=12,PlugInUnit=1,RuifDeviceGroup=1
===================================================================================
Total: 5 MOs

03-001> st AuxPlugInUnit=[123],RetuDeviceGroup=1

120215-16:14:06 10.25.160.231 8.0v RBS_NODE_MODEL_N_1_5 stopfile=/tmp/13484
===================================================================================
Proxy  Adm State     Op. State     MO
===================================================================================
  109                1 (ENABLED)   Equipment=1,SectorAntenna=1,AuxPlugInUnit=2,RetuDeviceGroup=1
  130                1 (ENABLED)   Equipment=1,SectorAntenna=2,AuxPlugInUnit=2,RetuDeviceGroup=1
  305                1 (ENABLED)   Equipment=1,SectorAntenna=3,AuxPlugInUnit=2,RetuDeviceGroup=1
===================================================================================
Total: 3 MOs

03-001> st SectorAntenna=[123],AuxPlugInUnit=2

120215-16:14:06 10.25.160.231 8.0v RBS_NODE_MODEL_N_1_5 stopfile=/tmp/13484
===================================================================================
Proxy  Adm State     Op. State     MO
===================================================================================
  108  1 (UNLOCKED)  1 (ENABLED)   Equipment=1,SectorAntenna=1,AuxPlugInUnit=2
  129  1 (UNLOCKED)  1 (ENABLED)   Equipment=1,SectorAntenna=2,AuxPlugInUnit=2
  304  1 (UNLOCKED)  1 (ENABLED)   Equipment=1,SectorAntenna=3,AuxPlugInUnit=2
===================================================================================
Total: 3 MOs

03-001> st asc

120215-16:14:07 10.25.160.231 8.0v RBS_NODE_MODEL_N_1_5 stopfile=/tmp/13484
===================================================================================
Proxy  Adm State     Op. State     MO
===================================================================================
  103                1 (ENABLED)   Equipment=1,SectorAntenna=1,AuxPlugInUnit=1,AscDeviceGroup=1
  134                1 (ENABLED)   Equipment=1,SectorAntenna=2,AuxPlugInUnit=1,AscDeviceGroup=1
  310                1 (ENABLED)   Equipment=1,SectorAntenna=3,AuxPlugInUnit=1,AscDeviceGroup=1
===================================================================================
Total: 3 MOs

03-001> alt

120215-16:14:07 10.25.160.231 8.0v RBS_NODE_MODEL_N_1_5 stopfile=/tmp/13484
Connecting to 10.25.160.231:56834 (CorbaSecurity=OFF, corba_class=2, java=1.5.0_24, jacoms=R73D25, jacorb=R73D01)
Trying file=/home/esernar/moshell_logfiles/logs_moshell/tempfiles/20120215-161351_13175/ior13175
Resolving the alarm service in OMS...
Simple Alarm Client initialized...
Starting to retrieve active alarms
Nr of active alarms are: 0
====================================================================================================================
Date & Time (Local) S Specific Problem                    MO (Cause/AdditionalInfo)
====================================================================================================================
>>> Total: 0 Alarms (0 Critical, 0 Major)

03-001> pr riu

120215-16:14:10 10.25.160.231 8.0v RBS_NODE_MODEL_N_1_5 stopfile=/tmp/13484
===================================================================================
Proxy  MO
===================================================================================
===================================================================================
Total: 0 MOs

03-001> cabx

120215-16:14:10 10.25.160.231 8.0v RBS_NODE_MODEL_N_1_5 stopfile=/tmp/13484
Trying password from script file: /home/esernar/moshell_logfiles/logs_moshell/tempfiles/20120215-161351_13175/monodeCmd13484...
........
====================================================================================================================
SMN APN  BOARD      FAULT  OPER   MAINT   PRODUCTNUMBER  REV    SERIAL     DATE     TEMP COREMGR
====================================================================================================================
  0   1  CBU1       OFF    ON     16HZ    ROJ1192209/1   R5G    A400740638 20080811 +25C *
  0   2  ET-MFX     OFF    ON     OFF     ROJ1192315/2   R1B    TU8GQ11937 20101022      
  0   9  RAX12      OFF    ON     16HZ    ROJ1192187/7   R1C    TU8G387530 20080820      
  0  11  TX6HS-03   OFF    ON     16HZ    ROJ1192254/7   R1E    TU8G376734 20080812      
  0  12  RUIF       OFF    ON     16HZ    ROJ1192245/2   R2A    AE59120479 20080811      
--------------------------------------------------------------------------------------------------------------------

================================================================
SMN  ProductNr           Rev   Name        Date      SerialNr
================================================================
  0  ROJ60947/1          *     Subrack               DigSubrack
  0  ROJ 609 47/1        R2A   BACKPLANE   20080710  X911639122
----------------------------------------------------------------

============================================================================================================================================
SMN APN PORT           BOARD          FAULT   OPER    MAINT  PRODUCT NR       REV    SERIAL       DATE         TEMP
============================================================================================================================================
  0  12 port_0_dev_3   RU21           off     steady  16hz   KRC11816/3       R3A    AE59343486   20080825     22.0
  0  12 port_0_dev_3   FU12           OFF     ON      16Hz   KRC11817/1       R3A    TU8F485793   20080817         
  0  12 port_1_dev_11  ASC            off     steady  16hz   KRY11242/4       R1E    TR47722054   20080829         
  0  12 port_4_dev_4   RU21           off     steady  16hz   KRC11816/3       R3A    AE59296445   20080821     23.0
  0  12 port_4_dev_4   FU12           OFF     ON      16Hz   KRC11817/1       R3A    TU8F485800   20080817         
  0  12 port_5_dev_12  ASC            off     steady  16hz   KRY11242/4       R1E    TR47720244   20080829         
  0  12 port_8_dev_5   RU21           off     steady  16hz   KRC11816/3       R3A    AE59296450   20080821     23.0
  0  12 port_8_dev_5   FU12           OFF     ON      16Hz   KRC11817/1       R3A    TU8F485767   20080817         
  0  12 port_9_dev_13  ASC            off     steady  16hz   KRY11242/4       R1E    TR47721946   20080829         
--------------------------------------------------------------------------------------------------------------------------------------------

03-001> q!!
Bye...
Output has been logged to file from_mobatch_1/03-001.log
"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

292

moshell, никаких пробелов не получается

 Консоль:

lupo@gentoo-laptop /tmp % grep RbsLocalCell log.txt
RbsLocalCell=S2C1                                       availabilityStatus 0 (NO_STATUS)
RbsLocalCell=S1C1                                       availabilityStatus 0 (NO_STATUS)
RbsLocalCell=S3C1                                       availabilityStatus 0 (NO_STATUS)
lupo@gentoo-laptop /tmp % grep RbsLocalCell log.txt | wc -l
3
lupo@gentoo-laptop /tmp % grep RbsLocalCell -c log.txt
3

P.S. Покажите

alias | grep grep
Был, был и весь вышел...

293

Покажите

echo $PS1
echo $PS2
Был, был и весь вышел...

294

не могу, я дома.
быть может еще как то можно идентифицировать количество rbslocalcell?
на глаз то видно, а как скрипту это понять?
решение нашлось в виду того, что, сколько сот == столько и записей содержащих рег.выр при комманде
get cell avail
то есть количество строк, другими словами.

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

295

3. [ $foo = «bar» ]


В этом примере кавычки расставлены неправильно: в bash нет необходимости заключать строковой литерал в кавычки; но вам обязательно следует закавычить переменную, если вы не уверены, что она не содержит пробелов или знаков подстановки (wildcards).

Этот код ошибочен по двум причинам:

1. Если переменная, используемая в условии [, не существует или пуста, строка

[ $foo = "bar" ]


будет воспринята как

[ = "bar" ]


что вызовет ошибку «unary operator expected». (Оператор "=" бинарный, а не унарный, поэтому команда [ будет в шоке от такого синтаксиса)
2. Если переменная содержит пробел внутри себя, она будет разбита на разные слова перед тем, как будет обработана командой [:
[ multiple words here = "bar" ]

Даже если лично вам кажется, что это нормально, такой синтаксис является ошибочным.

Правильно будет так:

[ "$foo" = bar ]       # уже близко!


Но этот вариант не будет работать, если $foo начинается с -.

В bash для решения этой проблемы может быть использовано ключевое слово [[, которое включает в себя и значительно расширяет старую команду test (также известную как [)

[[ $foo = bar ]]       # правильно!


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

Возможно, вы видели код типа такого:

[ x"$foo" = xbar ]    # тоже правильно!

вот в чем был косяг.
откуда же такая трава у разработчиков?


ps/ это было восхищение

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

296 (29.02.2012 00:49:04 отредактировано moshell)

что то я понять не можу.
Пример 4-5. Позиционные параметры гласит мол

echo "Имя файла сценария: \"`basename $0`\"."
# Добавит путь к имени файла (см. 'basename')

а скрипт не добавляет, да и в вики нашел
http://ru.wikipedia.org/wiki/Basename

Примеры использования

    basename /usr/bin/sort — выводит «sort».
    basename include/stdio.h .h — выводит «stdio».

где соль?

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

297

простите за ламерский вопрос.
как подавить перенос строк в команде cat?
в man cat не нашел такого.
например есть такая опция nano -w не переносит слова.
нужно то же самое только для cat

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс

298

moshell, IMHO, у cat другое предназначение  wink 
Попробуйте less -S.

Был, был и весь вышел...

299 (13.03.2012 20:06:16 отредактировано bormant)

Сворачивает строки не cat, а терминал, если речь идёт про вывод на консоль/терминал.
Можно при таком выводе обрезать длинные строки:

cat file | cut -c - $(tput cols)

Или определив аналогичную функцию, использовать её при выводе:

function nowrap { cut -c -$(tput cols); }

cat file | nowrap

300

спасибо)

"Фирма Майкрософт не собирается поддерживать протокол TCP/IP в своих OS" 1993 (c) Билл Гейтс
"Мы изобрели новый протокол передачи данных, мы назвали его TCP/IP" 1995 (c) Билл Гейтс