bspwm на cygwin - проблема с медленной перерисовкой

-a (архив) должен делать то, что требуется.

, однако, -t (сохранение времени изменения) является конкретной командой для выполнения этой команды.

-121--195318-

Есть еще две проблемы с использованием # !/usr/bin/env

  1. Это не решает проблему указания полного пути к интерпретатору, он просто перемещает его в env .

    env не гарантировано в /usr/bin/env , чем bash гарантировано в /bin/bash или python в /usr/bin/python .

  2. env перезаписывает ARGV [0] на имя интерпретатора (e.. g bash или python).

    Это предотвращает появление имени сценария в выходных данных ps (или изменяет способ/место его отображения) и делает невозможным его поиск с помощью, например, ps -C scriptname.sh

[update 2016-06-04]

И третья проблема:

  1. Изменение PATH - это больше работа, чем просто редактирование первой строки сценария, особенно когда сценарии такие правки тривиальны. например,

    printf "% s\n" 1 i '#!' $ (тип -P python2). w | ed foo.py

    Добавление или предварительное ожидание каталога к $ PATH довольно просто (хотя вы все еще должны изменить файл, чтобы сделать его постоянным - ваш ~/.profile или что-либо еще - и это далеко не легко создать сценарий, ЧТО изменить, потому что ПУТЬ может быть установлен в любом месте сценария, а не в первой строке).

    Изменить порядок каталогов PATH значительно сложнее.... и намного сложнее, чем просто редактировать #! строка.

    И у вас все еще есть все остальные проблемы, которые дает вам использование # !/usr/bin/env .

    @ jlliagre предлагает в комментарии, что # !/usr/bin/env полезен для тестирования скрипта с несколькими версиями интерпретаторов, "только изменив их порядок PATH/PATH"

    Если это необходимо, гораздо проще просто иметь несколько #! строки в верхней части сценария (это только комментарии где угодно, кроме самой первой строки) и вырезать/копировать-и-вставить ту, которую вы хотите использовать сейчас, в первую строку.

    В vi это было бы так же просто, как перемещение курсора на #! , затем введите dd1GP или Y1GP . Даже при таком тривиальном редакторе, как nano , для копирования и вставки с помощью мыши потребуется несколько секунд.


В целом, преимущества использования # !/usr/bin/env минимальны в лучшем случае, и, конечно, даже не близки к перевесу недостатков. Даже "удобное" преимущество во многом иллюзорно.

IMO, это глупая идея, продвигаемая определенным видом программистов, которые думают, что операционные системы не являются чем-то, с чем нужно работать, они являются проблемой , которую нужно работать (или игнорировать в лучшем случае).

PS: вот простой сценарий для изменения интерпретатора нескольких файлов одновременно.

хижина изменения.sh :

#!/bin/bash

interpreter="$1"
shift

if [ -z "$(type -P $interpreter)" ] ; then
  echo "Error: '$interpreter' is not executable." >&2
  exit 1
fi

if [ ! -d "$interpreter" ] && [ -x "$interpreter" ] ; then
  shebang='#!'"$(realpath -e $interpreter)" || exit 1
else
  shebang='#!'"$(type -P $interpreter)"
fi

for f in "$@" ; do
  printf "%s\n" 1 i "$shebang" . w | ed "$f"
done

Запустите его, например, как change-shebang.sh python2.7 * .py или change-shebang.sh $ HOME/bin/my-experimental-ruby * .rb

-121--1207-

Основная проблема сценария заключалась в том, что к моменту окончания цикла while (< >) @ ARGv Вы должны получить счет arg перед петлей. И помните, что массивы perl основаны на нуле, поэтому вы должны вычесть 1 из счета.

Вот фиксированная версия, которая выдает запрошенный результат.

$ cat compare.pl 
#!/usr/bin/perl
use strict;
use warnings;

my $numargs=@ARGV-1;
my %data=();

while (<>) {  
    my ( $key, $value ) = split;  
    push( @{ $data{$key} }, $value );  

}  

foreach my $key ( sort keys %data ) {  
    if ( @{ $data{$key} } >= $numargs ) {  
    print join( "\t", $key, @{ $data{$key} } ), "\n";  
    }  
}

$ ./compare.pl file1 file2 file3
cmr03lsp    CKEIFJ  60
dlp02sle    VMCFIJGM    40
fji01dde    AIDJFMGKG   25
0
15.06.2018, 16:28
1 ответ

Медлительность была вызвана эмулятором терминала rxvt, особенно когда он автоматически запускался в файле bspwmrc. Сейчас я использую xterm или терминатор, а bspwm работает быстро.

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

0
28.01.2020, 04:20

Теги

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