@ru_python

Страница 5859 из 9768
Tishka17
08.07.2018
12:50:53
Везде? Я не сталкивался
Даже гит ругается, если файл не кончается новой строкой. И многие редакторы сами ее добавляют

Проксимов
08.07.2018
12:51:11
А

Я понял прикол

Google
Проксимов
08.07.2018
12:51:23
>> не писал в файл

Сука

Говорил же, очевидное

Aragaer
08.07.2018
12:51:40
почему не писал?

Проксимов
08.07.2018
12:51:55
почему не писал?
Хз, заменил на > написал

Denis
08.07.2018
12:52:09
а разница какая*

Aragaer
08.07.2018
12:52:10
может от шелла зависит

Denis
08.07.2018
12:52:21
типо одна стрелка аппенд

Aragaer
08.07.2018
12:52:23
по-моему какой-то шелл >> делает только в том случае, если файл существует

Denis
08.07.2018
12:52:24
две флуш

Aragaer
08.07.2018
12:52:31
нет, наоборот

две - аппенд, одна - перезаписать

Denis
08.07.2018
12:52:38
да наоборот

Google
Denis
08.07.2018
12:52:48
не баш точно и так и сяк создает файл

Aragaer
08.07.2018
12:52:52
но одна работает всегда, а две (в некоторых шеллах) только если файл существует

Проксимов
08.07.2018
12:52:54
Хз, заменил на > написал
Затем заменил на >> и он стал дописывать

Магия

Aragaer
08.07.2018
12:53:01
а кто сказал, что в кроне баш?

Denis
08.07.2018
12:53:02
Проксимов
08.07.2018
12:53:13
Denis
08.07.2018
12:53:17
вот в том то и прикол

там sh

Tishka17
08.07.2018
12:53:40
¯\_(ツ)_/¯
В кроне sh

Aragaer
08.07.2018
12:53:42
sh может быть симлинкой на что-нибудь

и не всегда это bash

и то, на что указывает sh, может вести себя так, что >> не создает файл

Denis
08.07.2018
12:54:05
sh это sh не баш короч

Tishka17
08.07.2018
12:54:11
Даже если sh это симлинк на баш, у него включается режим совместимости

Aragaer
08.07.2018
12:54:14
собственно в убунте sh это dash и именно там я такое и встречал

Ляман
08.07.2018
12:54:39
Есть примеры работы cron? На ютубе и в гугле не могу найти нормальных объяснений

Проксимов
08.07.2018
12:54:43
Так я запутался совсем

В кроне >> дозапись, > перезапись + создание?

Aragaer
08.07.2018
12:55:10
в кроне запуск sh

Google
Denis
08.07.2018
12:55:10
Aragaer
08.07.2018
12:55:30
сделай ls -l /bin/sh

$ ls -l /bin/sh lrwxrwxrwx 1 root root 4 May 4 02:44 /bin/sh -> bash

у меня в генте так

Denis
08.07.2018
12:56:13
сорян я пропиздился

даже и не задумывался никогда

Проксимов
08.07.2018
12:56:27
Ага

Denis
08.07.2018
12:56:29
у меня даш

Проксимов
08.07.2018
12:56:30
Хитро

Aragaer
08.07.2018
12:56:46
и попробуй сделать sh

Tishka17
08.07.2018
12:56:49
Да забудьте кто исполняет sh.

Aragaer
08.07.2018
12:56:51
а потом >> /tmp/some_file

8)

кронтаб исполняет sh

отсюда и проблемы

есть надежный способ делать дозапись

Tishka17
08.07.2018
12:57:31
В смысле, даже если sh это баш - это не то же самое, что вызвать баш

Сергей
08.07.2018
12:57:33
Везде? Я не сталкивался
И не только в кроне, а во многих конфигах. Это повелось с давних времен ненадежных линий связи с частыми обрывами соединений. Других способов проверить полноту конфига (что его не обрезало во время передачи), кроме как проверкой EOF, тогда не умели.

Aragaer
08.07.2018
12:57:46
some_script.py | tee -a output > /dev/null

Google
Tishka17
08.07.2018
12:58:27
Зачем tee?

Aragaer
08.07.2018
12:58:31
tee это распараллеливатель потоков

-a это дозапись

Проксимов
08.07.2018
12:58:37
Что за tee -a?
И зачем он посылает аутпут на смерть?

Andre
08.07.2018
12:58:44
как из строки вида 1. [x] blabla сделать [x] 1. blabla при помощи регулярных выражений?

Aragaer
08.07.2018
12:59:01
потому что он уже не нужен - его копия ушла в нужный файл

Aragaer
08.07.2018
12:59:18
собссно это из такой конструкции: echo чота | sudo tee -a куда-то

Aragaer
08.07.2018
12:59:46
если куда-то не доступно на запись без прав рута, то sudo echo чота > куда-то не покатит

Tishka17
08.07.2018
12:59:59
s/1\.\[x\] blanlabla/[x]1. blablabla

Andre
08.07.2018
13:00:02
Слишком мало входных данных
1. [x] first task 2. [] second task 3. [x] third task нужно везде поставить чекбокс вперед, а цифру после него

Aragaer
08.07.2018
13:00:53
У меня права рута))
крч в ситуации, когда перенаправление средствами шелла не работает, можно использовать tee с нужными флажочками

оно уже правильно все сделает

Tishka17
08.07.2018
13:01:34
Окей. s/^(\d+\.) (\[x?\])/\2 \1/

Как-то так. Мог с экранированием ошибиться

Aragaer
08.07.2018
13:02:11
все норм

Google
Andre
08.07.2018
13:02:54
Окей. s/^(\d+\.) (\[x?\])/\2 \1/
Спасибо, только мне нужно это сделать внутри питона. Там тоже в re.sub() будут работать \1 \2?

Tishka17
08.07.2018
13:03:00
Хз

Aragaer
08.07.2018
13:03:22
должен вроде

Tishka17
08.07.2018
13:04:13
Вроде да

Aragaer
08.07.2018
13:13:04
\g<2> is therefore equivalent to \2, but isn’t ambiguous in a replacement such as \g<2>0. \20

так что не, \1 и \2 сгодятся

Jentry
08.07.2018
13:15:07
читается много лучше, \\1 еще экранировать нужно

Andre
08.07.2018
13:17:37
только \g<1>, \g<2>
во, а еще лучше \g<checkbox>

Aragaer
08.07.2018
13:18:13
с r' не надо ничего экранировать

Andre
08.07.2018
13:18:34
input = '1. [x] В боковом меню убрать Отчет по разрешениям.' p = re.compile(r'^(?P<num>\d+\.) (?P<checkbox>\[(x| )\]) (?P<text>.*)$') output = p.sub(r'\g<checkbox> \g<num> \g<text>', msg)

вот что у меня получилось в итоге

Aragaer
08.07.2018
13:19:36
и сравните это с s/^(\d+\.) (\[.\])/\2 \1/

Andre
08.07.2018
13:21:27
и сравните это с s/^(\d+\.) (\[.\])/\2 \1/
это как-то можно использовать из питона? это ж синтаксис sed

Aragaer
08.07.2018
13:21:49
это синтаксис pcre

Jentry
08.07.2018
13:22:24
и сравните это с s/^(\d+\.) (\[.\])/\2 \1/
нечитаемое днище, которое проще переписать, чем прочитать

Aragaer
08.07.2018
13:22:44
в питоне придется писать re.sub(r'^(\d+\.) (\[.\])', r'\2 \1')

а чего тут читать?

начало строки, захватить одну и более цифр с точкой, затем пробел, потом захватить квадратные скобки с произвольным символом между ними. Заменить на то же самое в обратном порядке

Andre
08.07.2018
13:23:35
в питоне придется писать re.sub(r'^(\d+\.) (\[.\])', r'\2 \1')
спасибо, понял, но с именованными группами мне больше нравится

Aragaer
08.07.2018
13:24:06
я бы попытался обойтись без регекспов вообще на самом деле

number, checkbox, text = msg.split(' ', 2) result = ' '.join([checkbox, number, text])

Страница 5859 из 9768