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

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

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail,
как один из вариантов:
$ echo '#>export PKG_PATH=ftp://ftp.eu.openbsd.org/pub/OpenBSD/$(uname -r)/packages/$(uname -m)/' | cut -c3-
или если в файле
$ cat file | cut -c3-

Цитата:
Многие тексты из винды - и в конце строк встречается  ^M   и выдается ошибка типа неправильная опция:  do ^M  

возврат каретки и т.д. в DOS, нужно перевести в UNIX при помощи dos2unix или
$ cat file.sh | tr -d '\r'

Всего записей: 7731 | Зарегистр. 08-09-2001 | Отправлено: 10:37 29-12-2020
alex52mail

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

Цитата:
Alukardd
1. например так: . <(grep -oP '#>\Kexport .*' /tmp/ttt.sh)
В лине сработало - но только при передачи строки в файл из которого можно запустить строку.
cat rx | . <(grep -oP '#>\Kexport .*' > ttt.sh)
 
   1).   Не нашел какая тут функция  \К - это экранировка К и что такое здесь К
 
   2).   Все же как запустить исполнение строки без передачи в файл ?
Как то через шел - а куда  ее тут всунуть.
 
los
Спасибо - буду пробовать в этом как говорят опенке.
 
Убрать окончания можно и сохранив в редакторе с LF.
Но речь - например в терминале  или чаще всего в Х без копипаст - вспомнил - в файле есть длинная команда - и надо вытащить ее оттуда не переделывая файл.
 
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1815 | Зарегистр. 04-09-2015 | Отправлено: 14:29 29-12-2020
los

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

Цитата:
Но речь - например в терминале  

чем не устраивает вариант с 'tr'?
 
P.S.
а почему просто не добавите нужное в mk.conf(или pkg.conf сейчас уже не вспомню)
или в '.profile'?

Всего записей: 7731 | Зарегистр. 08-09-2001 | Отправлено: 15:02 29-12-2020
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail
1. \K это опция PCRE (ключ -P), aka look behind, удалить всё что сматчилось до \K. — perldoc
 
Вообще небось проще поставить GNU Grep, но всегда можно и по другому что-то описать
Код:
. <(sed -n 's/#>\(export .*\)/\1/p' /tmp/ttt.sh)
Вопрос был именно про файл, из pipe так сделать нельзя, т.к. все части pipeline это отдельные subshell'ы. Если у Вас имя файла xr, то и поставьте его в команду вместо /tmp/ttt.sh, это ж просто пример имени файла.
 
 
2. . (точка) она же команда source это и есть способ исполнения команды в текущем контексте, другого нет (я не знаю). Если текущий конекст не важен (для команды export он важен), то можно скормить результат grep/sed в | bash.
 
3. Касательно mv, он не умеет такого ключа как cp, так что либо делайте cp и потом удаляйте что не надо, либо вокруг mv можно сделать простенький цикл, примеров в инете уже достаточно.

----------
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 | Отправлено: 21:43 29-12-2020
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd los Спасибо за ликбез.
Ранее не зная о  . <(  в /tmp принял за промежуточный файл и придумал свое.
 
А так в лине - работают все
Код:
> . <(grep -oP '#>\Kexport .*' ~/rt)
> . <(sed -n 's/#>\(export .*\)/\1/p' ~/rt)
> . <(cat ~/rt | grep export | cut -c4-)  
С выбором одной строки - в  >set  видно нормальный путь.
Но выбор одной строки из многих строк в тексте
> . <(cat ~/openBSD.txt | grep -n export | grep 302: | cut -c5-)
на экране - показывает выбранную строку так же - как и с одной строкой
export PKG_PATH=ftp://ftp.eu.openbsd.org/
но в >set  видно вставку в путь:  $'  в начале и в конце  \r
PKG_PATH=$'ftp://ftp.eu.openbsd.org/pub/OpenBSD/5.1.4-pf/packages/i686/\r'
Откуда это и как избавится - не нашел.
 
В openbsd - работает только
(cat ~/rt | grep export | cut -c4-)
но тут  . <(  - не работает.
Как в openbsd запустить исполнение строки - пока не нашел.
 
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1815 | Зарегистр. 04-09-2015 | Отправлено: 11:46 30-12-2020
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail,
можете выложить файл который вы хотите обработать?

Всего записей: 7731 | Зарегистр. 08-09-2001 | Отправлено: 12:05 30-12-2020
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alex52mail
<() — это скорее всего башизм, называется Process Substitution, его на сколько вижу нет в POSIX Shell.
 
. — достаточно стандартный source, но OMG, то же не POSIX, чего только не узнаешь.
 
Вот так вроде POSIX  совместимо

Код:
while read -r line; do eval $(echo "$line" | sed -n 's/#>\(export .*\)/\1/p')</dev/null; done </tmp/ttt.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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 13:00 30-12-2020
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los - можете выложить файл который вы хотите обработать?
Весь файл здоровый. У меня привычка ученого - что изучаю - делаю заметки - так там собирается многое. После подчищаю и делаю для себя и других методички типа
Текущий рабочий файл большой - вырезал куски с чем проверял export  
А так идея - есть большой файл, и знаю что там есть длинная команда - чтоб не набирать в терминале - вытащить ее из файла выбирая нужную из нескольких строк с таким же текстом.
 
Alukardd  Спасибо.  В bsd проверю позже.
 
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1815 | Зарегистр. 04-09-2015 | Отправлено: 13:23 30-12-2020 | Исправлено: alex52mail, 13:30 30-12-2020
los

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

Цитата:
Весь файл здоровый.

дело хозяйское, но вот это:

Цитата:
PKG_PATH=$'ftp://ftp.eu.openbsd.org/pub/OpenBSD/5.1.4-pf/packages/i686/\r'

очень похоже на окончание строки в DOS, чего в вашем случае быть не должно.
 
 

Всего записей: 7731 | Зарегистр. 08-09-2001 | Отправлено: 13:38 30-12-2020
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los - дело хозяйское,
Кусок же выложил - попробуйте с ним выбрать по одному критерию - 1 строку, а по более короткому - сначала несколько строк, и из них одну  (у вас будет не 302: а другой номер)
> . <(cat ~/openBSD.txt | grep -n export | grep 302: | cut -c5-)
 
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1815 | Зарегистр. 04-09-2015 | Отправлено: 13:47 30-12-2020
los

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

Цитата:
Кусок же выложил

и как в этом случае вы предлагаете проверять кодировку, окончание строки и т.п.?

Всего записей: 7731 | Зарегистр. 08-09-2001 | Отправлено: 15:08 30-12-2020
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Понял. Сперва прогоню на копии файла дос2лин - если останется - то выложу файл.
Одну строку посылал в файл - и там была каретка.
Но каретка в конце - а вот что влезло в саму строку. Также - в одном файле с кареткой и без - так что ли.
И спрашивал - как избавится от коретки - т.к. с сети собираю в винде -  не переделывать же каждый раз файл.
 
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1815 | Зарегистр. 04-09-2015 | Отправлено: 20:16 30-12-2020
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd,
у вас file какой версии? Правильно ли определяет файлы *.jbg, *.jb2?

Всего записей: 7731 | Зарегистр. 08-09-2001 | Отправлено: 22:26 30-12-2020
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Даж гуглить пришлось что такое jbg, откуда ж у меня такие файлы должны появиться...
А так у меня file-5.39
 
alex52mail
Что за проблемы вообще?  
1. в винде тоже можно создавать файлы в формате unix с \n в качестве разделителя строк. Зависит от редактора.
2. Как уже было замечено много раз есть dos2unix -U
3. Что бы ни чего не ставить вполне норм и с tr -d '\r' и с sed 's/\r$//'

----------
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 | Отправлено: 00:01 31-12-2020 | Исправлено: Alukardd, 00:05 31-12-2020
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да - была карета на которой въезжаем в новый год.
 
Всем профи
С наступающим
Новым Годом  !!!!!!!!!

 
Удачи в новом году.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1815 | Зарегистр. 04-09-2015 | Отправлено: 04:30 31-12-2020
los

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

Цитата:
Даж гуглить пришлось что такое jbg, откуда ж у меня такие файлы должны появиться...  
А так у меня file-5.39

так правильно эти файлы определяются или нет?

Всего записей: 7731 | Зарегистр. 08-09-2001 | Отправлено: 11:16 31-12-2020
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
так я не скачивал примеры ж
 
А если предположить что так можно то вот:
Код:
$ convert photo_2020-11-30_15-46-17.jpg photo_2020-11-30_15-46-17.jbg
$ file photo_2020-11-30_15-46-17.jbg  
photo_2020-11-30_15-46-17.jbg: Windows Precompiled iNF, version 2.0, InfStyle 1, at 0x2ff02ff, at 0x1c764e40 WinDirPath, LanguageID 9c0f, at 0xcfb17bb5


----------
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:30 01-01-2021
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ранее - действительно - поставил в редакторе LF - и проблема исчезла.
Но ранее смутило - не только в конце было \r  но и в строку вставлялось $
 
Но новые проблемы.
Надо при загрузке менять МАС и задать путь загрузки.
Если это вставить в ~/.profile - то это происходит в каждом терминале при каждом логине - что не надо.
Пробовал вставить в  /etc/.profile (которого не было) - Х не запустился.
 
   1).   Куда вставить  - чтобы это происходило один раз при загрузке системы.
 
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1815 | Зарегистр. 04-09-2015 | Отправлено: 11:40 02-01-2021
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd,
так и есть file неверно отображает.
 
alex52mail

Цитата:
Пробовал вставить в  /etc/.profile (которого не было) - Х не запустился.  

в /etc/netstart если речь все еще о OpenBSD.

Всего записей: 7731 | Зарегистр. 08-09-2001 | Отправлено: 13:57 02-01-2021
alex52mail

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los   Спасибо.  
В /etc/netstart  -  MAC задается, а путь загрузки нет. Придется его оставить в ~/.profile
 
О переменных.
Понял так - что типа:   export PKG_PATH   -  это в дочерние процессы.
 
   1).   А вот как и где задать переменную для всех процессов ?
 
И еще о OpenBSD.
   Загрузка так:
menuentry "OpenBSD (hd0,2)/bsd " { set root=hd0,msdos2; kopenbsd /bsd root=hd0,msdos2}
Но ставил еще после:  kopenbsd /bsd root=  hd0,2  hd(0,2) wd0a  /dev/wd0a
но все равно - загрузка OpenBSD останавливается и требует ввести::    root device:  -  вручную ввожу - wd0a
 
   2).   Как задать:   root device:   в меню граб ?
 
    3).   Что не так с
Код:
# /etc/X11/xorg.conf  
  Section "Files"  
    FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"
EndSection
 
Section "InputDevice"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
    Option "XkbLayout" "us,ru"
    Option "XkbModel" "pc105"
    Option "XkbVariant" "os_winkeys"
    Option "XkbOptions" "grp:ctrl_shift_toggle"
EndSection
Переключение не работает и нет второго языка.
 
Сейчас переключаю строкой в ~/.profile
setxkbmap "us,ru" "winkeys" "grp:alt_shift_toggle"
Опять же - в ~/.profile срабатывает - где это и не надо. А setxkbmap  без Х - не работает.
Ставил эту строку как советуют в ~/.xinitrc  (его не было) - Х не запустился.
 
Вообще - неужели OpenBSD. сильно меняется от редакции к редакции..
Много рекомендаций найденных в инете для OpenBSD - не работают - часто вообще нет таких команд.  
Например встретил о сети\(МАС) - читайте >man brconfig - но такого нет.
 
И вспомнил los  - есть линь без man - PRA09  за man лезет в сеть которой пока там нет.
Удачи.

----------
Везде трудно первые 15 лет, потом легче.
Все проблемы имеют ПРОСТОЕ решение
Ты начальник я дурак я начальник ты дурак. Но хуже дурака дурак с инициативой.

Всего записей: 1815 | Зарегистр. 04-09-2015 | Отправлено: 15:12 02-01-2021 | Исправлено: alex52mail, 16:54 02-01-2021
Открыть новую тему     Написать ответ в эту тему

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