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

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



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

Всего записей: 386 | Зарегистр. 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
эмуляторы, а мне нужна голая консоль.

Всего записей: 386 | Зарегистр. 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

Всего записей: 386 | Зарегистр. 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В каталоге есть пара тыщ файлов. Как скопом отсортировать каждый, попутно удалив дубликаты, не выводить на консоль и заменить исходник отсортированным?
 
Добавлено:
В смысле. файлы - текстовые. Нужно отсортировать строки.

Всего записей: 601 | Зарегистр. 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
...
но, имхо, есть элегантное решение в одну строку. Какое - я не знаю.

Всего записей: 601 | Зарегистр. 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.

Всего записей: 6571 | Зарегистр. 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

Всего записей: 601 | Зарегистр. 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.

Всего записей: 6571 | Зарегистр. 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да уже давно все сделано, и копии файлов были предварительно заархивированны, конечно же. Поэтому смело заменил, дабы сэкономить место в несколько десятков гигабайт.

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

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

Всего записей: 7741 | Зарегистр. 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

Gold 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 не придирайтесь  

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

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

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



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

Всего записей: 212 | Зарегистр. 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 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