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

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

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

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
      Шпаргалка по частым синтаксическим оборотам.

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

 

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

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

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вроде банальная задача, но 2 головы лучше
Есть vpn сеть, центральный маршрутизатор пингует хосты vpn сети и присылает отчет кто не доступен. За vpn на клиентской стороне есть рабочие станции. Скрипт пингует все подряд и если недоступна одна из частей сети то присылается отчет по всем недоступным хостам. Хочу переделать по такой схеме:
1. Сначало пингуем клиентский vpn адрес.
2. Если клиентский vpn1 доступен, пингуем дальше (vpn1_ws1, vpn1_ws2), если недоступен - переходим на следующий клиентский vpn2 и т.д.
Подскажите идею.

Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 18:12 11-09-2015
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
digital422
вы уже и так всё расписали, чего от нас-то хотите? тут осталось только написать [[ $? -ne 0 ]] ......

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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 03:19 12-09-2015
TGR3

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не подскажите  
 
#!/bin/bash
d=`date +%d-%H`
#монтируем папку в понятной кодировке Linuxу
mount -t cifs -o username=user,password="zxcvbn",domain=TEST,rw //192.168.0.240/BACKUP/ /mnt/backups/SQL/
#копируем ее на сервер в каталог шары
find /mnt/backups/SQL/ -mtime 0 -name "*.*" -exec cp --parents -v -t /home/Backup/SQL/ {} +
cp -a /mnt/backups/SQL /home/Backup/SQL/tmp
umount /mnt/backups/SQL
#cd /home/tmp/mnt/backups/
#cp -a /SQL/ /home/Backup/SQL/
#mv '/home/Backup/SQL/mnt/backups/SQL/*.*' '/home/Backup/SQL'
#монтируем в другой кодировке понятной кодировке Windows
mount -t cifs -o username=user,password="zxcvbn",domain=TEST,rw //192.168.0.241/Backup/SQL/mnt/backups/SQL /mnt/backups/SQL/
cd /mnt/backups/
tar -zcf /home/Backup/SQL/_$d.tgz SQL
sleep 4400
umount /mnt/backups/SQL
#удаляем папку tmp
rm -r /home/Backup/SQL/mnt/
find /home/Backup/SQL/ -mtime +14 -exec rm -rfv {} +
cd /root

 
 
тут папку  Backup с виндоновой сервера забирает полностью, что добавить и куда, чтоб забирал каждый день, только новый бекап?
Проблему нашел в том что места не хватает ему, вся папка много весить, сервер где хранятся бекапы не может забрать всю папку, я так понял надо забирать только новые.
Заранее спасибо и всем хороших выходных

Всего записей: 165 | Зарегистр. 16-10-2008 | Отправлено: 16:11 12-09-2015
digital422

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

Цитата:
вы уже и так всё расписали, чего от нас-то хотите? тут осталось только написать [[ $? -ne 0 ]] ......

 
Хочу сделать как можно меньше строк, чтобы не создавать для каждой vpn свой блок. Можно это как-то оптимизировать?

Код:
 
$FPING -u "$H1" >& /dev/null
    if [ $? -ne 1 ]; then
        echo "host "$H1" up"
       $FPING -u "$VPN1_WS1" >& /dev/null
       $FPING -u "$VPN1_WS2" >& /dev/null
     fi
 
$FPING -u "$H2" >& /dev/null
    if [ $? -ne 1 ]; then
        echo "host "$H2" up"
        $FPING -u "$VPN2_WS1" >& /dev/null
        $FPING -u "$VPN2_WS2" >& /dev/null
    fi
 

Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 19:13 12-09-2015
VitRom

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
"оптимизировать" так же, как и любой другой перебор значений.

Всего записей: 3110 | Зарегистр. 18-06-2006 | Отправлено: 19:44 12-09-2015
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TGR3
Я в Ваших речах ни чего не понял, но если у Вас есть есть локально файлы и Вы хотите копировать заново только недостающие, то  вместо cp используйте rsync.

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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 18:21 13-09-2015
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И опять всем здрасте
Опять возникла проблемма.
Не могу из терминала старануть Х программу на удаленном хосте с помощью Putty + XMing из под Windows 7.
Причем, у меня все работает, а у коллег из под нормального пользователя не получается,  а по root все в порядке.
Вот как я это делаю.
Есть putty и  XMing 6.9.0.31 (у всех одинаковый). В putty разрешен Х проброс с MIT-Magic-Cookie-1.
 
Экспортирую .Xauthority:
 

Код:
root # xauth extract /root/.Xauthority $DISPLAY  > /tmp/xauth.bin
icmadmin # xauth -v merge /cmhome/icmadmin/.Xauthority < /tmp/xauth.bin

 
Вот тут получается интересно. Я могу от себя стартануть... да хоть бы те-же xeyes, а коллеги из под того-же пользователя - нет. Причем никаких ошибок не выводится.
 
Подскажите, люди добрые, где я на грабли наступил.

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 15:45 12-10-2015
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как узнать позицию подстроки в строке? expr index не подходит.

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 10:47 24-10-2015
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
# print "verylongline" | sed -e "s#long.*\$##" | wc -c
5

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 16:15 24-10-2015
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
arto, ОМГ.
 
Maximus777
 
match() {
    local str="$1"
    local pat="$2"
    local l="${str%%$pat*}"
    if (( ${#l} == ${#str} )); then
        return 1
    else
        echo $(( ${#l} + 1 ))
    fi
}
 
match 'quitealongstring' 'long'


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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 16:55 24-10-2015 | Исправлено: ASE_DAG, 16:59 24-10-2015
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG, ничего не выдаёт.

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 10:07 26-10-2015
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777, УМВР.  
 
echo $BASH_VERSION


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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 13:03 26-10-2015 | Исправлено: ASE_DAG, 13:04 26-10-2015
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG,
 
4.3.11(1)-release

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 13:45 26-10-2015
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777, все должно работать. Возможно, вывод xtrace’а вам подскажет, где проблема (set -o xtrace после хэшбанга допишите).

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 13:52 26-10-2015 | Исправлено: ASE_DAG, 14:00 26-10-2015
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот весь процесс на видео. Где я ошибся?

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 14:31 26-10-2015 | Исправлено: Maximus777, 14:41 26-10-2015
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777
Видео — это гениальный ход
 
А ничё что Вы пропустили кусок скрипта представленного т. ASE_DAG???
Где вызов функции-то? Допишите в конец скрипта:
match "$1" "$2"

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

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 15:06 26-10-2015
Maximus777

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

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 15:15 26-10-2015
tolyn77



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте
 
подскажите что не правильно делаю?
есть каталог с содержимым
vig_2015-10-27_15-46-13_085.jpg
...
нежно отсортировать с перемещением оп папкам год/месяц/день
делаю
#ls | grep jpg | sed 's/^.*_\(*[0-9]\)-\(*[0-9]\)-\(*[0-9]\)/mkdir -p "\1\2\3"/'
а папки не создаются подскажите что не так?
заранее благодарен

Всего записей: 1505 | Зарегистр. 07-09-2004 | Отправлено: 15:53 27-10-2015
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd, воистину лол. Контекста ради сожмем это видео примерно в семнадцать тысяч раз — до 261 байт:
 
$ cat ./match
 
#!/bin/bash
match() {
    local str="$1"
    local pat="$2"
    local l="${str%%$pat*}"
    if (( ${#l} == ${#str} )); then
        return 1
    else
        echo $(( ${#l} + 1 ))
    fi
}
 
$ ./match 'stringlong' 'long'
$

 


 
tolyn77> что неправильно делаю?  
 
Все. :-) Я понимаю, что после освоения нового средства, здесь — каналов текстовых потоков, всегда и везде хочется использовать его и только его, но старый добрый алгоритмический подход в большинстве случаев работает лучше.
 
for f in *.jpg; do
    IFS='_-' read __ y m d __ <<< "$f"
    dest="$y/$m/$d"
    [[ -d $dest ]] ||\
        mkdir --parents "$dest"
    mv "$f" "$dest"
done


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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
спсб
 
ругается 2: Syntax error: redirection unexpected

Всего записей: 1505 | Зарегистр. 07-09-2004 | Отправлено: 16:44 27-10-2015 | Исправлено: tolyn77, 16:47 27-10-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 154

Компьютерный форум 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