The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Экспорт в файл динноой команды bash"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Экспорт в файл динноой команды bash"  +/
Сообщение от Олег Петрович on 30-Окт-14, 10:17 
Добрый день!
Есть следующая команда bash
$ git log --all --author='Oleg'  --reverse --stat | sed -rn '\\"\d ;s/ //g ;s/(.*)\|.*/\1/p' | sort |uniq  > list_file

Как видно, в ней присутствуют все виды кавычек,обратные слеши и тп. Для информации - это однострочник, который помещает в файл list_file список всех изменяемых файлов в директории под git.
Теперь я хочу поместить этот однострочник в скрипт просто одной командой bash. Как это сделать не прибегая к history или copy-paste?

print 'git log --all --author='Igor Maravic'  --stat | sed -rn '\\"\d ;s/ //g ;s/(.*)\|.*/\1/p' | sort |uniq  > spisok'
НЕ РАБОТАЮТ из присутствия всех видов кавычек в команде.
echo \'git log --all --author='Igor Maravic'  --stat | sed -rn '\\"\d ;s/ //g ;s/(.*)\|.*/\1/p' | sort |uniq  > spisok \'
ТОЖЕ НЕ ПОУЧАЕТСЯ

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Экспорт в файл динноой команды bash"  +/
Сообщение от Олег Петрович on 30-Окт-14, 10:23 
>[оверквотинг удален]
> информации - это однострочник, который помещает в файл list_file список всех
> изменяемых файлов в директории под git.
> Теперь я хочу поместить этот однострочник в скрипт просто одной командой bash.
> Как это сделать не прибегая к history или copy-paste?
> print 'git log --all --author='Igor Maravic'  --stat | sed -rn '\\"\d
> ;s/ //g ;s/(.*)\|.*/\1/p' | sort |uniq  > spisok'
> НЕ РАБОТАЮТ из присутствия всех видов кавычек в команде.
> echo \'git log --all --author='Igor Maravic'  --stat | sed -rn '\\"\d
> ;s/ //g ;s/(.*)\|.*/\1/p' | sort |uniq  > spisok \'
> ТОЖЕ НЕ ПОУЧАЕТСЯ

Имелось ввиду, что не получается
printf 'git log --all --author='Igor Maravic'  --stat | sed -rn '\\"\d ;s/ //g ;s/(.*)\|.*/\1/p' | sort |uniq  > spisok'
echo 'git log --all --author='Igor Maravic'  --stat | sed -rn '\\"\d ;s/ //g ;s/(.*)\|.*/\1/p' | sort |uniq  > spisok'
--author= - это просто рабочий пример, не играет роли

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Экспорт в файл динноой команды bash"  +/
Сообщение от Олег Петрович on 30-Окт-14, 13:25 
Огромное спасибо! Даже два варианта!
В первом варианте вся команда берется в двойные кавычки как аргумент для echo, но присутствующие обратные слеши внутри аргумента сами дополнительно экранируются обратным слешем.
Во втором случае  аргумент разбивается на подстроки в одинарных кавычках, причем присутствующие одинарные кавычки оригинальной команды становятся подстрокой в новых двойных кавычках.
Блеск!!!

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Экспорт в файл динноой команды bash"  +/
Сообщение от XAnder (ok) on 30-Окт-14, 13:06 
> print 'git log --all --author='Igor Maravic'  --stat | sed -rn '\\"\d
> ;s/ //g ;s/(.*)\|.*/\1/p' | sort |uniq  > spisok'
> НЕ РАБОТАЮТ из присутствия всех видов кавычек в команде.
> echo \'git log --all --author='Igor Maravic'  --stat | sed -rn '\\"\d
> ;s/ //g ;s/(.*)\|.*/\1/p' | sort |uniq  > spisok \'
> ТОЖЕ НЕ ПОУЧАЕТСЯ

Как-то так:

echo "git log --all --author='Igor Maravic'  --stat | sed -rn '\\\\\"\\d ;s/ //g ;s/(.*)\\|.*/\\1/p' | sort |uniq  > spisok"

или так:

echo 'git log --all --author='"'"'Igor Maravic'"'"'  --stat | sed -rn '"'"'\\"\d ;s/ //g ;s/(.*)\|.*/\1/p'"'"' | sort |uniq  > spisok'

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Экспорт в файл динноой команды bash"  +/
Сообщение от Олег Петрович on 30-Окт-14, 13:51 
Мдааа. Не додумался сам, хотя переменные bash внутри команд sed по такому же принципу подставляю
$ sed -nr 's/(^XML.*")(.*)(".*)/\2'"${VAR}"'/;p'
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру