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

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

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

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

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

 

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

Всего записей: 288 | Зарегистр. 19-04-2003 | Отправлено: 18:51 16-05-2008 | Исправлено: ASE_DAG, 22:02 01-03-2017
vtlseeker



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

Всего записей: 369 | Зарегистр. 03-03-2009 | Отправлено: 14:21 03-02-2018
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vtlseeker, urxvt, xterm и т. п. — это здесь что?

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 15:11 03-02-2018 | Исправлено: ASE_DAG, 15:13 03-02-2018
vtlseeker



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

Всего записей: 369 | Зарегистр. 03-03-2009 | Отправлено: 15:34 03-02-2018
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vtlseeker, [[ ! -v DISPLAY && -t 0 ]].
 
И теперь, если не секрет, зачем вам это?

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 15:58 03-02-2018 | Исправлено: ASE_DAG, 16:00 03-02-2018
vtlseeker



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Спасибо!
Хочется универсальности скрипта и интерактивности при работе и в иксах и по ssh

Всего записей: 369 | Зарегистр. 03-03-2009 | Отправлено: 17:09 03-02-2018
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vtlseeker, да всегда пожалуйста.
 
Как вы уже поняли, тут четыре варианта, а не два.  Но если вы для себя, то, понятное дело, можно много внимания не уделять.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:34 03-02-2018
qw12



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В каталоге есть пара тыщ файлов. Как скопом отсортировать каждый, попутно удалив дубликаты, не выводить на консоль и заменить исходник отсортированным?
 
Добавлено:
В смысле. файлы - текстовые. Нужно отсортировать строки.

Всего записей: 410 | Зарегистр. 04-06-2001 | Отправлено: 17:38 05-02-2018
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
qw12, написав программку.  Например, на Баше с использованием Coreutils.
 
Если какая-то из подзадач (на которые вы вполне верно ее разбили) вызывает затруднения, не разрешаемые элементарным поиском, то можно обратиться с ней на веб-форум.  Например, на этот.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 18:55 05-02-2018
qw12



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

Цитата:
написав программку

Я потому и спрашиваю здесь, как бы набросать что-то такое в awk, наверно.
Конечно, можно сценарий где каждый файл будет обрабатывать отдельно, типа:
sort -u file1.txt -o file1.txt
sort -u file2.txt -o file2.txt
sort -u file2.txt -o file2.txt
...
но, имхо, есть элегантное решение в одну строку. Какое - я не знаю.

Всего записей: 410 | Зарегистр. 04-06-2001 | Отправлено: 19:22 05-02-2018
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
qw12
Не, тут "в одну строку" красиво не сделать. Надо писать скрипт. Либо на bash'е, либо да можно и  на awk, но коротко это в любом случае не будет.
 
Писать его за Вас вот желания нету, помочь и ответить на вопросы - это пожалуйста.

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

Всего записей: 6205 | Зарегистр. 28-08-2008 | Отправлено: 19:39 05-02-2018
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> Я потому и спрашиваю здесь...
 
...что...?
 
> как бы набросать что-то такое в awk
 
Прочитать файл в массив, отсортировать массив (есть встроенная функция), напечатать массив в файл.
 
> наверно
 
Вот удивительное дело, не?  Сплошь и рядом, спрашивая что-то, не имеют ни малейшего понятия, как, но уже определились, чем.  Но очень редко наоборот — чтобы знали, как, и спрашивали, на чем же это «как»  будет лучше.   Почему, а?
 
> Конечно, можно сценарий где каждый файл будет обрабатывать отдельно
 
Да, и я нахожу это естественным.
 
> типа
> sort -u file1.txt -o file1.txt
> sort -u file2.txt -o file2.txt
> sort -u file2.txt -o file2.txt
 
А!  Вы не знакомы с такой штукой, как цикл?  Ну вот, и установили, с какой из подзадач затруднения — с самой простой из всех четырех :-).
 

for file in *; do
    ...
done


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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 19:50 05-02-2018 | Исправлено: ASE_DAG, 19:51 05-02-2018
qw12



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

Код:
for file in *.txt; do
    sort -u -o $file $file
done

Всего записей: 410 | Зарегистр. 04-06-2001 | Отправлено: 01:27 06-02-2018
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
qw12, https://mywiki.wooledge.org/BashPitfalls#cp_.24file_.24target
 
Да и вы уверены, что не нужно делать резервную копию?

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 13:28 06-02-2018
Alukardd



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

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

Всего записей: 6205 | Зарегистр. 28-08-2008 | Отправлено: 14:08 06-02-2018
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А я бы сначала скопировал file* в file*~ (ну или под иное имя, что не нагрузит авторезервирование), а потом уже из него и читал, а в исходный писал.  Это при условии, что товарищу надо, как я понял, сохранить файлы, что и inode бы остался прежним, не только имя, а заменить лишь их содержимое.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 19:33 06-02-2018 | Исправлено: ASE_DAG, 19:50 06-02-2018
qw12



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

Всего записей: 410 | Зарегистр. 04-06-2001 | Отправлено: 20:47 06-02-2018
los

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
для bash
urls=(
    test.com
    test1.com
    test2.com
)
 
для sh
urls="test.com \
         test1.com \
         test2.com"
 
есть ли еще варианты для sh(кроме в одну строчку) дабы выглядело посимпатичнее?

Всего записей: 123 | Зарегистр. 08-09-2001 | Отправлено: 11:51 14-02-2018
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los, я, надеюсь, понятно, что это не одно и то же?  И второе весьма странно&#769;.  Нет, я понимаю, что в URL не должно быть пробелов, но если под sh имеется в виду воображаемый язык из Позикса, то почему бы их не разделять концами строки?
 
Оно и лучше, и выглядеть будет посимпатичнее.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:04 14-02-2018
los

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

Цитата:
я, надеюсь, понятно, что это не одно и то же?

экстрасенс? Нет не понятно,
#!/bin/bash
 
urls=(  
    test.com  
    test1.com  
    test2.com  
)
 
curl $urls >tmpfile
+++++
#!/bin/sh
urls="test.com \  
         test1.com \  
         test2.com"
 
curl $urls >tmpfile2
 
gost tmpfile tmpfile2 - сумма одинаковая.
к синтаксису строки с curl не придирайтесь  

Цитата:
то почему бы их не разделять концами строки?  
 
Оно и лучше, и выглядеть будет посимпатичнее.

Можно подробнее?

Всего записей: 123 | Зарегистр. 08-09-2001 | Отправлено: 17:37 14-02-2018
CrownRU



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем здравствуйте.
Нужна помощь с решением проблемы.
 
написал такой корявый скрипт.
Проблема возникает здесь:
nohup archpro -i $k &
 
Здесь не воспринимается переменная $k. Так и пишет :  
ошибка в выполнении nohup archpro -i $k
 
Пишу там-же echo $k - все выводит нормально.
Скрипт прокомментировал.
 
P.S. Закостылил таким образом:
Код:
echo "nohup archpro -i $k &" |sh

 

Код:
#!/bin/bash
 
RED="$(tput setaf 1)"
GREEN="$(tput setaf 2)"
CYAN="$(tput setaf 6)"
SGR0="$(tput sgr0)"
BOLD="$(tput bold)"
 
# Читает ini файлы в директории...
for k in /archive/obj/cssap/*/*/archint.ini.*
 
    do
# ...и выуживает оттуда соответствующий номер порта.
                                WEBPORT=$(awk /^WEBPORT/'{ print $2 }' $k)
                                ARCHWIN=$(awk /^ARCHWIN_PORT/'{ print $2 }' $k)
# Проверяет возможность соединения через WEBPORT, прописанный в файле $k
                                curl -sm1 $(hostname -f):$(awk /^WEBPORT/'{ print $2 }' $k)  >/dev/null
 
                if [ $? -eq 0 ]
                    then
                        echo "Connected">/dev/null
# Если соединение невозможно, то:
                        else
# 1. Показать ini файл, где происходит затык
                            echo ${BOLD}${GREEN}$k${SGR0}
# 2. Дополнительная информация через lsof
                            lsof -i:$WEBPORT,$ARCHWIN $k
# 3. Если инстанция висит, то...
                                if [ $? -eq 0 ]
                                      then
                                                                         echo ${BOLD}${RED}Stoppe die Instanz $k${SGR0} >> /tmp/arge.log
# 4. останавливаем ее
                                                        archstop -i $k
# 5. И на всякий случай прибиваем то, что останавливаться по-хорошему не хочет
                                                        fuser -k -n tcp $WEBPORT
                                        fi
                                echo ${BOLD}${RED}Starte die Instanz $k${SGR0} >> /tmp/arge.log
# 6. Стартуем инстанцию. И вот здесь начинаются проблемы. $k не перенимается, хотя echo $k показывает переменную правильно.
                                nohup archpro -i $k &
                                fi
done

Всего записей: 199 | Зарегистр. 14-01-2003 | Отправлено: 15:34 15-02-2018 | Исправлено: CrownRU, 17:48 15-02-2018
Открыть новую тему     Написать ответ в эту тему

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

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

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru