LINUX.ORG.RU

Избранные сообщения teod0r

Передать не только вывод, но и ввод

 , ,

Всем привет! Есть у меня простенький скрипт, чтобы смотреть видео с ютуба и других сайтов в консоли, выглядит он так:

  • #!/bin/bash
  • address="$1"
  • youtube-dl $address -o - | mplayer -

Проблема в том, что конвейер передает mplayer’у только вывод, ввод остается за youtube-dl, то есть я не могу ни паузу нажать, ни перемотать, могу только по ctrl-c выйти, и все. Вопрос: как можно сделать то же самое, но передав управление плееру? Думал как-то запустить youtube-dl в фоне, пробовал просто & в конец добавлять - не работает. Надеюсь на вашу помощь

d09
()

Вопрос по бесплатной почте.

 , ,

Вот такой дурацкий вопрос. Нужна ссылка на бесплатный буржуйский (т. е. НЕ российский/НЕ украинский/НЕ СНГ) почтовый сервис, который не требует телефон, работает с smtp и imap, более-менее стабильный, более-менее давно существующий, более-менее безопасный. Параноидальная безопасность мне не нужна. Но вот захожу на разные буржуйские сервисы, а там в лучшем случае сертификат не на тот адрес зарегистрирован, а в худшем — вообще нет https как класса. Т. е. все пароли — открытым текстом. Вот без такого безобразия, ну и с защитой почтовых протоколов (веб-интерфейс мне неинтересен). Всякие gmail’ы и yahoo не годятся из-за того, что спрашивают телефон.

Никто не подкинет ссылок?

UPD: В общем, итоги исследования малоутешительны: из всех перечисленных в каментах на данный момент (18:47) бесплатных буржуйских сервисов реально работают по imap/smtp и продолжают регистрировать, не требуя телефона, только cock.li, забаненный в России, но доступный через tor, и, возможно, майкрософтовский live.com, который я не проверил. Ещё я самостоятельно нашёл https://account.riseup.net/user/new , но он требует инвайта от уже зарегистрированных пользователей. Воспользовался cock.li. Спасибо всем, кто ответил по существу!

aureliano15
()

а можно youtube-dl скачивать видео, но не складывать его на диск, а сразу подавать на вход ffplay?

 ,

Чтобы было что то вроде

 youtube-dl (link) | ffplay

Есть в этом направлении хоть что то?

burato
()

Не копируйте shell из браузера!

 , ,

Когда вы видите команду оболочки в Интернете, не копируйте ее в свой терминал.

Современные API буфера обмена позволяют веб-сайту тривиально перезаписывать то, что вы помещаете в буфер обмена, без подтверждения или разрешения пользователя.

Обратите внимание, что вам даже не нужно нажимать ENTER в терминале после вставки, чтобы сработал эксплойт. Завершающая команду новая строка делает это за вас!

Подробности

Перемещено Shaman007 из security

kogoth
()

Как в midnight commander оставлять интерфейс активным после открытия файла?

 

Специалистам по mc. Если открываешь видос или документ в либреофисе то mc становится неактивным в терминале. Тупо пустое окно. Использовать нельзя пока не закроешь открытый файл. Как сделать так чтобы можно было пользоваться независимо от открытых файлов?

Linux_Newbie
()

вопрос по echo

 ,

Приветствую. Такой момент:

var=100
str=">>>>${var}<<<<"
echo $str
>>>>100<<<<
Подстановка переменной в переменную работает. Хотел из файла вида:
>>>>${data}<<<<
>>>>${mess}<<<<
путём присваивания
str="$(cat file.txt)"
реализовать подстановку данных, но увы...
data=1
mess="on"
echo "$str"
>>>>${data}<<<<
>>>>${mess}<<<<

p.s. без >< можно eval натравить, но спецсимволов в файле много.

Кто в курсе как быть?

gnu_linux
()

Мне нужно на AWK то, ...

 

что делает на скорую руку написанная фигня на Bash'е:

(вывод ТОЛЬКО совпадающих по ЗАДАННОМУ полю строк)

(продолжение темы)

Файл (добавлена нумерация для наглядности):

  1 hello, y-cat!
  2 cat drank vodka
  3 mom washed frame
  4 dad drank vodka
  5 123 456 789
  6 Vova drowned
  7 vova fool
  8 cat drank vodka
  9 mom at work
 10 cat whore juvenile
 11 hello, www!
 12 petya the Fool
 13 dad washed frame
 14 Cat washed frame
 15 cat vodka drank
 16 cat drowned
 17 cat the Fool
 18 hello www!
Код:
#!/usr/bin/env bash

mapfile -O 1 a < <(cat "file" | nl | sort -k 2d)

i=0
f=0
for str in "${a[@]}"; do		
	
	(( i++ ))
	mapfile fr < <(printf %s "${a[i]}" | awk '{print $2"\n"$0}')
	mapfile sr < <(printf %s "${a[i+1]}" | awk '{print $2"\n"$0}')
		
	if [[ "${fr[0]}" == "${sr[0]}" ]]; then
		if (( f == 0 )); then
			f=1
			printf %s "${fr[1]}"
			printf %s "${sr[1]}"
		else
			printf %s "${sr[1]}"
		fi
	else
		f=0
	fi
done
Выхлоп:
      2 cat drank vodka
      8 cat drank vodka
     16 cat drowned
     17 cat the Fool
     15 cat vodka drank
     10 cat whore juvenile
      4 dad drank vodka
     13 dad washed frame
      9 mom at work
      3 mom washed frame

(Проблему с сортировкой заметили?)

Дальше

awk 'BEGIN {i = 1} {ff = $1; f_l = $0; getline ; sf = $1; s_l = $0} {if (ff == sf) a[i] = f_l; a[i+1] = s_l; i = i +2 } END { (for i in a) print a[i]} ' file
не продвинулся, я уже писал, что опыта с AWK у меня с гулькин х...

Грамотные, подскажите КАК?

Cave-Canem
()

pdf и djvu

 ,

Народ, а чем вы pdf открываете, ну кроме браузера? Интересует программа, позволяющая работать с файлом как с электронной книгой, закладки ставить и прочее?
Также вопрос, чем сейчас модно читать djvu?
Программы, тянующие при установке Gnome или KDE просьба не предлагать. И желательно, чтобы интерфейс был не такой, чтобы от него трясло.

sunny1983
()

как сделать локальное (по окнам) переключение раскладок средствами X?

 , , ,

здравствуйте

в kde есть очень удобная опция настройки раскладок клавиатуры

в Layout Switching Policy можно выбрать Global , Window … итд

как можно сделать то же самое но без kde?

brothermechanic
()

А тут все вкурсе что бывает при переполении int?

 ,

Задача. Монотонно растущий счетчик времени который в какой то момент может переполнится.
Код делает типовые операции

uint16_t startTime = millis();
...
uint16_t stopTime = millis();
uint16_t runSpeed = stopTime - startTime;

Вопрос что будет если startTime будет равно 65535 а stopTime будет равно 1?
Какой будет runSpeed?
Код теста
//# ./a 1 - 65535
#include <stdio.h>
#include <stdint.h>

int main(int argc, char * argv[]) {
  uint16_t a = atoi(argv[1]);
  uint16_t b = atoi(argv[3]);
  
  printf("%d", (uint16_t)(a - b));
  
  return 0;
}

Итого все хорошо 1 - 65535 будет равно 2 как и предполагалось. Спасибо бинарной логике процессора. И никаких лишних проверок сравнений лепить не надо.

bga_
()

Нужно ли противодействовать зловредному ПО? Как вы это делаете?

 , , , ,

И снова здравствуйте, мои дорогие. Как вы боритесь с неблагонадёжным программным обеспечением? Вот, возьмём к примеру браузер. Браузер тащит подсистему печати и следовательно дырявый как ситечко ghostscript. Ни то ни другое мне не нужно (в браузере так точно).

Итак, я создаю заглушку, делаю следующее:

desktop ~ # cat cupsnop.c
void cupsGetOption(void){return;}
void cupsLastError(void){return;}
void cupsFreeDests(void){return;}
void cupsGetDests2(void){return;}
void cupsGetDests(void){return;}
void cupsGetDest(void){return;}
void cupsGetNamedDest(void){return;}
void cupsGetPPD2(void){return;}
void httpError(void){return;}
void cupsGetPPD(void){return;}
void httpConnectEncrypt(void){return;}
void httpClose(void){return;}
void httpBlocking(void){return;}
void ppdOpenFile(void){return;}
void ppdMarkDefaults(void){return;}
void ppdLastError(void){return;}
void ppdErrorString(void){return;}
void cupsParseOptions(void){return;}
void cupsMarkOptions(void){return;}
void cupsFreeOptions(void){return;}
void ppdFindMarkedChoice(void){return;}
void ppdFindOption(void){return;}
void ppdFindChoice(void){return;}
void ppdFindAttr(void){return;}
void ppdClose(void){return;}
desktop ~ # cat make.sh
#!/bin/sh

gcc -s -shared -fpic -march=native -O2 -pipe -fstack-clash-protection -fstack-protector-strong --param=ssp-buffer-size=4 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wl,-O1 -Wl,--as-needed -Wl,--sort-common -Wl,-z,relro -Wl,-z,now -Wl,--hash-style=gnu -Wl,--no-copy-dt-needed-entries -Wall -Wextra cupsnop.c -olibcups.so.2

mv -v libcups.so.2 /lib64/libcups.so.2
desktop ~ # ./make.sh
renamed 'libcups.so.2' -> '/lib64/libcups.so.2'

И всё хорошо, все довольны и счастливы. Но браузер также тащит кучу дряни вроде gtk, а та в свою очередь тащит atk, at-spi2-atk с at-spi2-core, причём, не найдя любую из зависимостей категорически отказывается собираться. Я считаю, это не дело, так не должно быть.

В браузерах есть огромная беда с файловыми диалогами на гтк – они неудобные, выглядят очень инородно, и сразу затирают иксовый буфер выделения среди прочего. Это ужасно. Как мне рассказывали старшие товарищи, в opensuse файловые диалоги как-то патчили, чтобы сделать те человеческими. Можно ли такое же сделать, например, с хромом?

И ещё, браузер запускается без ffmpeg (выдаёт libffmpeg.so => not found), при этом с видео даже проблем нет. Ну или они есть, это не важно (их нет). А вот с cups так не работает, приложение отказывается запускаться, если библиотека не найдена. Что это такое? Пробовал patchelf или что-то подобное для удаления зависимостей, так программа молча зависала при попытке её запустить.

linuxnewb13
()

Какие есть ещё source based пакетные менеджеры с проверкой зависимостей?

 , source based,

Кроме portage? Какие пакетные менеджеры есть на slackware-based дистрибутивы с разруливанием зависимостей?
Как обстоят дела с ABS и Sourcery?

P.S. Мне нужен fglrx (старая видюха), а это значит xorg-server не новее 1.17.49, если верить ебилду.

teod0r
()

Получить корректный размер используемой памяти из /proc/meminfo

 , ,

Приветствую!

Как получить корректный размер используемой памяти из файла /proc/meminfo чтобы он совпадал с размером из htop

Я пробовал:

MemTotal - MemFree

MemTotal - (MemFree + Buffers + Cached)

результат не совпадает. Как правильно высчитать размер?

user988
()

Аддон для ЛОРа

 , ,

В чёртовой Лисе рубанулись аддоны (обсуждалось многократно). Ну и пёс с ним. Но вот без аддона для ЛОРа ну очень не ice. Кто что может подсказать?

Решение: коментарий: eternal_sorrow (10.05.19 12:53:11).

Deleted
()

У каджита есть товар, если у тебя есть монеты, друг!

 

Я просто оставлю это здесь. OpenWM теперь с тенями. Писателям новостей - ну вы поняли да?

А зачем это всё это ненужно конкретно вам и что теперь с этим всем делать решать тебе мой красноглазый читатель.

init_6
()

Linux sandboxing

 , ,

Тут недавно был тред про песочницы, но там обсуждалась реализация (что-то в духе, почему в бсд так, а в линуксе не так).

У меня практический вопрос: что сейчас используется для sandboxing'а? Задача проста: есть недовереннные приложения (бинарники из левых источников). Надо запустить их, обеспечивая максимальную безопасность с минимальными затратами. Вариант - не запускать левые бинариники не подходит.

maverik
()

Удалить все совпадающие линии в файле

 

Есть файл с содержимым

9
7
1
8
2
1
3
2
4
2
5
2
6
6

из него нужно сделать файл

9
7
1
8
2
3
4
5
6
 — то есть оставить только по одному экземпляру каждой совпадающей строки.

Продолжение тем Сравнение двух списков в bash Как в Arch Linux вывести список всех дополнительных зависимостей для каждого установленного пакета?

Vsevolod-linuxoid
()

Примочки для терминала

 , ,

Иногда делаю для себя маленькие открытия типа таких:

autojump: https://github.com/wting/autojump/

hstr: https://github.com/dvorka/hstr

О каких ещё полезных при работе в терминале штуках я не знаю?

P.S. Использую zsh без oh-my-zsh.

aquadon
()

Облагородить логику bash-скрипта

 

Привет, ЛОР!

Обучаясь bash велосипедю такое нечто. И вот в case 3 у меня цикл, который ждёт подходящий $ANSWER.

Если отрабатывается case 1 и case 2 то всё корректно - или заново проигрывается скрипт или выход из него.

А в случае case 3 получается, что при выходе из цикла и выходе из case скрипт попадает в старший цикл и поскольку переменная $TIME_LAST пустая, то срабатывает условие и ожидается ввод от пользователя.

Данное поведение подходит, если пользователь хочет повторно завести таймер и не подходит, если он хочет закончить работу.

Т.е. если пользователь ответил Y или ответил N, то всё ок. А если он ответил «qwerty», его переспросили, он ответил N, то всё равно скрипт будет продолжать работу.

Как это организовать по-человечески?

#!/bin/bash
# timer.sh
# Таймер с интерактивным вводом. 
# Умеет звенеть колокольчиком на старых терминалах. 
# На некоторых современных может посылать уведомления

TIME_LAST="$1" # Время таймера
FLAG=TRUE # Флажок
INTEGER=^[0-9]+$ # Шаблон проверки числа. В данном случае целое положительное число, не строка

while [[ "$FLAG" = "TRUE" ]]; do

if [[ -z "$TIME_LAST" ]]; then

	echo -e "\nИспользование: \"`basename $0` время_в_минутах\" или введите в интерактивном режиме"
	echo -e "Введите время в минутах (для отмены нажмите Ctrl+C)\n"
	read TIME_LAST

                until [[ "$TIME_LAST" =~ $INTEGER ]]; do
                echo -e "\nОшибка ввода. \"$TIME_LAST\" не является целым положительным числом.\nПовторите ввод\n"
                read TIME_LAST
                done
                
echo -e "\nОтсчёт $TIME_LAST мин. пошёл!"

fi


sleep $(( $TIME_LAST * 1 )) && echo -e "\nВремя вышло!\a" # ДЛЯ ТЕСТА ТУТ УКАЗАНО УМНОЖЕНИЕ МИНУТ НА 5, А НАДО НА 60!!!

TIME_LAST="" # Подметаем за собой

echo -e "\nХотите завести новый таймер? y / n\n"

read ANSWER

case "$ANSWER" in

#1 case
"Y" | "y" )
;;

#2 case
"N" | "n" )
FLAG=FALSE # Переключается флажок и выход из цикла
;;

#3 case
* )
echo -e "\nВведите \"y\" или \"n\"\n"
# Пока не будет получен нужный ответ переспрашивать
until [ "$ANSWER" = "y" -o "$ANSWER" = "Y" -o "$ANSWER" = "n" -o "$ANSWER" = "N" ]; do 
    read ANSWER
done
;;

esac

done

echo -e "\nBye-bye"

exit 0
kma21
()

Bash смена заголовка терминала

 

Подскажите можно ли на «лету» менять заголовок скрипта

Например при запуске скрипта будет заголовок


printf '\033]2;Test\a'

а позже в работе скрипта вызывается функция которая меняет заголовок на Test2
vbox
()