Сценарий оболочки, который не в состоянии к awk, создал файл

Вопрос был somedays старый, и я не отправлял его, но это было все еще в моем окне браузера.

Тем временем я развился несколько хакер решение "в лоб". Я перешел к папке где мой mplayer двоичный файл - и скопировал его в другое имя.

cd /usr/bin
sudo cp mplayer mplfull

Измененный все случаи MPlayer к MPlfull в скопированном файле.

sudo sed -i 's%MPlayer%MPlfull%g' mplfull

Затем я отредактировал мой ~/.xmonad/xmonad.hs файл (добавляющий мою копию mplayer, которая имеет только MPlfull в его файле, так, чтобы это также было его именем класса).

myManageHook = composeAll
  [ className =? "Gimp"           --> doFloat
  , className =? "Gimp-2.6"       --> doFloat
  , className =? "Gimp-2.8"       --> doFloat
  , className =? "Xsane"          --> doFloat
  , className =? "MPlfull"        --> doFloat
  , title     =? "Gnuplot (window id : 0)"        --> doFloat
  , resource  =? "desktop_window" --> doIgnore
  , resource  =? "kdesktop"       --> doIgnore ]

И затем включил эти четыре строки мой ~/.bashrc файл.

alias mplfull='mplfull -xineramascreen -2 -geometry 2048x1280+0+0 -fs'
alias mpl100='mplfull -xineramascreen -2 -geometry 2248x1480+-100+-100 -fs'
alias mpl200='mplfull -xineramascreen -2 -geometry 2448x1680+-200+-200 -fs'
alias mpl300='mplfull -xineramascreen -2 -geometry 2648x1880+-300+-300 -fs'

Теперь, когда я ввожу mplayer someFile Я могу наблюдать его в мозаичном окне. И измените размер его с мышью, как я когда-либо делал.

Но я могу также просмотреть свои файлы с mplfull someFile и это находится автоматически в полном экране по обоим мониторам (см. -geometry опция).

mpl100, mpl200 и mpl300 псевдонимы для видео, которые имели бы большие черные дорожки на моих мониторах из-за соотношения сторон, которое не соответствует к моей двухмониторной установке. Конечно, немного видео затем будет cutted далеко (за пределами экрана), но мне нравится этот больше, чем наличие больших черных дорожек.

Мне все еще любопытно, если существуют лучшие и более легкие решения. Возможно, решение Xmonad?

Обновление

mpl100 и так далее не нужно. Можно просто использовать mplayer стандартные ключи e и w увеличивать масштаб и уменьшать масштаб (названный изменением pan-scan располагаются в mplayer руководстве).

7
31.12.2014, 14:16
2 ответа

Думаю, я выяснил то, что работает.

Я использовал программу под названием LaunchControl , чтобы создать файл под названием Включить Core Dump.plist в / Система / Библиотека / Launchdemons со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>GroupName</key>
    <string>wheel</string>
    <key>InitGroups</key>
    <true/>
    <key>Label</key>
    <string>core dumps launchctl</string>
    <key>ProgramArguments</key>
    <array>
        <string>launchctl</string>
        <string>limit</string>
        <string>core</string>
        <string>unlimited</string>
        <string>unlimited</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>root</string>
</dict>
</plist>

С этими разрешениями:

$ ls -al enable\ core\ dumps.plist 
-rw-r--r--  1 root  wheel  582 Dec 30 15:38 enable core dumps.plist

, и это, казалось, сделали трюк:

$ launchctl limit core
    core        unlimited      unlimited 
$ ulimit -a core
core file size          (blocks, -c) unlimited
...
<output snipped>
...

Я создал небольшую тестовую программу, которая просто падает:

$ ./a.out 
Segmentation fault: 11 (core dumped)

и, VOILA, сформирована ядра сброса:

$ # ls -al /cores/
total 895856
drwxrwxr-t@  3 root  admin        102 Dec 30 15:55 .
drwxr-xr-x  31 root  wheel       1122 Oct 18 10:32 ..
-r--------   1 root  admin  458678272 Dec 30 15:55 core.426
-121-----45986-

Пространства не допускаются вокруг = !

Итак:

#!/bin/bash
ping -c 20 google.com > results.txt
packetloss=$(awk '/packet loss/{print $6}' results.txt)
echo "$packetloss" >> debug.txt

или даже более короткий:

ping -c 20 google.com |
    awk '/packet loss/{sub(/%/, "");print $6 >> "debug.txt"}'

Примечание:

  • Нет необходимости назначать переменную x ; Вы можете распечатать $ 6 напрямую.
  • Сам awk может создавать новые файлы с его выходом
  • Назовителем
     `
    используется в подстановке команд старого стиля, например:
foo=`command`

Foo = $ (команда) вместо этого рекомендуется синтаксис. Обращение с обратной косой чертой внутри $ () менее удивительно, а $ () легче вводиться.

Проверка http://mywiki.woolegege.org/bashfaq/082

Дополнительное решение Perl :

ping -c 20 google.com |
    perl -lne '/(\d+)%\s+packet\s+loss/ and print $1' >> debug.txt
11
27.01.2020, 20:16
#!/usr/bin/perl
my $host=shift or die("Usage $0 host\n");

open(PING , "-|", "ping -c 20 $host") or die;
open(DEBUG, ">>", "debug.txt"       ) or die; 

while(<PING>){
  if(m!(\d+)% packet loss!     ){ $Lost=$1 }
  if(m!rtt.*= (.+?)/(.+?)/(.+)!){ $Avg=$2  }
}

if   ( $Lost > 0 ) { print DEBUG "not ok: lost pcks ($Lost%)\n"    }
elsif( $Avg  > 5 ) { print DEBUG "not ok: too slow  ($Avg)\n"      }
else               { print DEBUG "ok: ping\n"                      }
1
27.01.2020, 20:16

Теги

Похожие вопросы