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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shylExSSchumi
Например так
Код:
for i in 1 2 5 7 99 125; do /path/to/myscript.sh $i; done


----------
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:34 19-01-2017 | Исправлено: Alukardd, 14:35 19-01-2017
shylExSSchumi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как мне вывернуться, вот я я в ряде файликов удаляю строки:
find $1 -name '*.iml' -type f -print0 | xargs -0 sed -i 's/ scope=\"PROVIDED\"//g'
 
А как мне пупутно вывести названия тех файлов, где было произведена замена?

Всего записей: 114 | Зарегистр. 28-03-2016 | Отправлено: 10:43 25-01-2017
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shylExSSchumi
Я по прежнему за цикл...
Код:
for f in $(find $1 -name '*.iml' -type f); do
  sed -i 's/ scope=\"PROVIDED\"//g' "$f"
  echo "File is $f"
done


----------
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:25 25-01-2017
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd> for f in $(find $1 -name '*.iml' -type f); do
 
-1

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 16:45 25-01-2017 | Исправлено: ASE_DAG, 16:46 25-01-2017
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Ну да,в в таком простом случае можно обойтись find'ом и всё.
Код:
find $1 -name '*.iml' -type f -exec sed -i 's/ scope="PROVIDED"//g' {} \; -print


----------
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:53 26-01-2017 | Исправлено: Alukardd, 10:50 26-01-2017
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd> можно обойти[сь]
 
Игра в гольф, возможно, и занятна, но согласитесь, что заслуживает внимания в первую очередь, так это то, работает программа или нет.  ;-)


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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 10:48 26-01-2017
shylExSSchumi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подключаюсь к удалённой машине и скачию файлик (лог) с помощью scp.
Хочется не вводить пароль. Но никакие ключики я залить не могу на сервер.
Можно ли как-то извратиться одним только башем? Я думаю что нет, но так для проформы спрашиваю, т.е. запустить scp, подождать пару секунд и как-то? ввести пароль и нажать enter.
Сейчас я просто перед запуском scp копирую пароль в буфер обмена и потом вставка + enter.

Всего записей: 114 | Зарегистр. 28-03-2016 | Отправлено: 11:39 30-01-2017
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
shylExSSchumi
Можно:
а) перейти на авторизацию ключами, параметр -i
б) sshpass

Всего записей: 12815 | Зарегистр. 11-03-2002 | Отправлено: 11:50 30-01-2017
shylExSSchumi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Хм, я наверно, тебя всё таки не понимаю.
Я не могу перейти на авторизацию ключами. У меня есть только логин и пароль. После подключения я могу весьма ограниченные команды выполнять, всё сводится к чтению текстовых файлов.
sshpass я использую сейчас, когда хочу просто подключиться без пароля. А там уже хожу по каталогам и смотрю через less. Я не могу даже при подключении автоматически поменять папку, приходится руками вводить.
Я что хочу сделать - скрипт, на вход ему имя файла. На выходе - скачивается файлик без какого-либо доп. ввода с моей стороны. Я правильно понимаю, что sshpass мне поможет?
Просто у меня дальше "автологина" с помощью sshpass не прошло.

Всего записей: 114 | Зарегистр. 28-03-2016 | Отправлено: 12:17 30-01-2017
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
shylExSSchumi
sshpass только для "автопароля" и используется. scp можно использовать как cp, только с возможностью указания пользователя/хоста
Цитата:
sshpass -p 'password' scp -BC user@host:/path/to/file.txt /path/to/local/file.txt
(-B - пакетный, -C - сжатие, для текстовых файлов может пригодиться)

Всего записей: 12815 | Зарегистр. 11-03-2002 | Отправлено: 12:38 30-01-2017
shylExSSchumi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, может есть в репозитарии какая тулза, которая позволяет распарсить аргументы у скрипта.
Т.е. пишу скрипт, и там у меня на вход куча параметров, такой --verbose или такой --limit=10.
Хочется условно что-то внешнее запустить и чтобы быстро получить, а есть ли такой аггумент или если есть такой аргумент, то какое у него значение.

Всего записей: 114 | Зарегистр. 28-03-2016 | Отправлено: 15:39 03-02-2017
Pasha_ZZZ



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

Всего записей: 12815 | Зарегистр. 11-03-2002 | Отправлено: 18:03 03-02-2017
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Угу, но и самому распарсить аргументы руками совсем не сложно.
 
И да, в bash'е есть встроенный getopts, хотя он достаточно ущербный, в отличии от предложенного внешнего.

----------
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 | Отправлено: 22:17 03-02-2017
shylExSSchumi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, буду сам руками - http://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash

Всего записей: 114 | Зарегистр. 28-03-2016 | Отправлено: 10:10 04-02-2017
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ответ на http://forum.ru-board.com/topic.cgi?forum=65&topic=6043
 
Remdale
Итерироваться по файлам и копировать проще всего командой find Можно и самому реализовать рекрсивный обход на баше, но если find есть, то к чему извращаться...
С dd надо будет немного усложнить: for f in $(find /path/ -type f); do dd if="$f" of="/newpath/$(basename $f); done
А вот с cp просто указать ключ -R и усё.
 
Что за бред, что у cp нету прав на чтение файла, а у dd вдруг они имеются?..
 
 
p.s. все команды писал прямо в сообщеньку не проверяя

----------
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 | Отправлено: 16:10 05-02-2017
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd> for f in $(find /path/ -type f); do
 
Что с вами?  Второй раз подряд детская и грубая ошибка, причем та же самая.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 16:23 05-02-2017
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Вы про то, что я не использовал exec? Ну я это тут намерено сделал... На скорость оно не особо влияет. Но это понятнее чем писать конструкцию {}. Если файлов там миллионы, тогда да, но это редкость.

----------
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 | Отправлено: 16:36 05-02-2017 | Исправлено: Alukardd, 16:37 05-02-2017
Remdale

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть Montavista 4.0 на плеере Archos 704. Устройство само по себе закрыто от постороннего вмешательства. Но нашлась одна дыра, через которую можно исполнять свои команды. Но они исполняются не от рута. "sudo" командная строка не понимает. Поэтому команда "cp" не работает на некоторых файлах из-за прав доступа. А вот dd умеет сливать файлы не обращая внимание на права доступа. Я хочу слить все файлы из ото всюду, в другое место.  
 И есть еще один вопрос. Какой еще есть вариант исполнения команды от имени рута? Читал что-то насчет символа #, но так и не понял как его правильно использовать

Всего записей: 214 | Зарегистр. 25-10-2010 | Отправлено: 18:18 05-02-2017
ASE_DAG



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

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 18:50 05-02-2017 | Исправлено: ASE_DAG, 18:52 05-02-2017
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Это наверное про Bash pitfalls #1

Всего записей: 12815 | Зарегистр. 11-03-2002 | Отправлено: 18:59 05-02-2017
Открыть новую тему     Написать ответ в эту тему

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