Используя SSH для разрешения доступа в Интернет

Изучив проблему и придумав решение, которое я написал в первом ответе, я понял, что существует другой очень простой способ.

Просто начните с имен цели, которые вы не хотите показывать, начав с точки .

Пример:

.PHONY: foo .hiddentarget
foo: foo.x .hiddentarget
foo.x: foo.c
        touch foo.x
.hiddentarget: foo.x
        echo foo.x ok, I believe

И это все, что вам нужно!

Я пришел к этой идее после того, как попытался выяснить, как предотвратить вызов по ошибке цели с именем .HIDDENGOALS и запустить все скрытые цели.:)

Предупреждение Хотя я не вижу никакой, я не уверен, что нет никакого побочного эффекта на использование имен целей, таких как « .targetname »

-121--71800-

Я собирался расширить свой первоначальный код, но он доходит до точки, где гораздо проще просто восстановить все в Perl напрямую:

#!/usr/bin/env perl

## This is the path to the target  directories
my $path="/Users/Masi/Dropbox/";

## The target directories
my @directories=("Cardiology","Rheumatology","Surgery");

## Iterate over the directories
foreach my $dir (@directories) {
    my $dd=0;
    ## Read the current directory
    opendir (my $DIR, "$path/$dir");
    ## Find all files in this directory
    while (my $file = readdir($DIR)) {
        ## Reset the counter
        my $c=0;
        ## Skip any files that aren't .tex
        next unless $file =~ /\.tex$/;

        ## Open the file
        open(my $fh,"$path/$dir/$file");

        while (<$fh>) {
            ## Get the subsection. $_ is the current line.
            $sub="$_" and $n=0 if /\\subsection{/;
            ## If this line is a question
            if (/\\begin{question}/) {
                ## If this counter is 0, this is the first file
                ## of this directory, so print the section
                ## Print the section name
                if ($dd==0) {
                    print "\\section{$dir}\n\n";
                    $dd++;
                } 
                ## If this counter is 0, this is the first question
                ## of this subsection, so print the subsection line
                print "$sub\n" if $n==0;

                $n++;
                ## Increment the counter, we want these lines
                $c++;
                ## And print
                print;
            }
            else {
                ## Print lines if the counter is 1
                print if $c==1;
                ## reset the counter to 0
                print "\n" and $c=0 if /\\end{question}/;
            }
        }
        print "\n";
    }

}

Обратите внимание, что это игнорирует подразделы, но было бы легко изменить его, чтобы включить их.

-121--87759-

Никто, кажется, не объясняет, почему вы используете каждый из них, учитывая ваши реальные примеры. Я сделаю удар:

killall Finder; killall SystemUIServer

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

cd ~/Desktop/ && rm Caches

Вы хотите удалить каталог ~/Desktop/Caches и оказаться в каталоге ~/Desktop . То, что вы не хотите делать, это удалить каталог Кэш из текущего каталога (перед его изменением). Таким образом, перед выполнением команды remove необходимо с помощью & проверить, успешно ли выполнено изменение каталога.

man grep | man cat

Для меня это бессмысленно. Команда man не обрабатывает входные данные, поэтому передача данных в нее ничего не делает. Возможно, вы имели в виду

man grep || man cat

Что бы попытаться найти человека страницу для grep , а затем, если бы он не мог, показал бы человека страницу для cat . Или, возможно, вы имели в виду

man grep | cat

, что используйте cat для отображения страницы человека, а не пейджера (обычно меньше ). | перенаправляет выходные данные с man на команду cat (которая просто сбрасывает все на экран). Это может быть полезно в графическом интерфейсе пользователя, где можно использовать полосу прокрутки для перехода назад и вперед в файле, а не использовать команды клавиатуры в меньшем количестве.

Примечание: если вы хотите знать, что ; & & | | | делать в более общих случаях, я бы предложил посмотреть на ответ jimmij. Я просто пытаюсь объяснить, что происходит на примерах из вопроса.

1
02.12.2014, 00:31
1 ответ

Вам также будет нужно AllowTcpForwarding да в , следующее sshd_config

0
28.01.2020, 01:48

Теги

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