Новые строки без кавычек в командных строках обрабатываются как места; Вот почему вы можете говорить такие вещи, как
command1 && command2
Ну, иногда новые строки без кавычек обрабатываются как точки с запятой. Но когда вы говорите
echo `cat ${log}`
все новые строки в файле журнала превращаются в места. Вы могли бы исправить это, сказав
echo "`cat ${log}`"
, но почему бы просто не сказать
cat ${log}
?
-121--114423-
В вашем примере запутанные команды создания сценариев оболочки. Вы должны обратить особое внимание на то, какой язык сценариев вы используете, а затем придерживаться синтаксиса его команд. В вашем примере вы используете turbo C shell (tcsh), однако затем вы смешиваетесь в командах и синтаксисах Bash/Bourne shell.
Если действительно требуется tcsh
, можно использовать следующий подход. Предположим, что у меня был пример файла:
$ cat afile
1
2
3
4
5
И этот сценарий:
$ cat cmd.csh
#!/bin/tcsh
foreach i (`cat afile`)
echo "$i"
end
Выполнение этого файла приведет к следующим выводам:
$ ./cmd.csh
1
2
3
4
5
Для выполнения задачи можно добавить команду mkdir
после echo
:
$ cat cmd1.csh
#!/bin/tcsh
foreach i (`cat afile`)
echo "making directory: $i"
mkdir "$i"
end
Теперь, когда мы запускаем его:
$ ./cmd1.csh
making directory: 1
making directory: 2
making directory: 3
making directory: 4
making directory: 5
В результате создаются каталоги:
$ ls -l
total 32
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 1
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 2
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 3
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 4
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 5
-rw-rw-r--. 1 saml saml 11 Oct 16 18:47 afile
-rwxrwxr-x. 1 saml saml 86 Oct 16 18:56 cmd1.csh
-rwxrwxr-x. 1 saml saml 55 Oct 16 18:51 cmd.csh
-121--167050-
Создайте файл /etc/mk.conf
со следующим:
WRKOBJDIR=/home/foo/build/ports
DISTDIR=/home/foo/build/distfiles
PACKAGE_REPOSITORY=/home/foo/packages
Путь может быть в любое место, поэтому, очевидно, замените /home/foo
на нужный каталог. Нет необходимости создавать каталоги; они будут созданы автоматически при выполнении make
.
Это рассматривается в FAQ: 15,3,3 - Конфигурация системы портов , с предлагаемым вариантом использования этого для создания дерева портов «только для чтения», так что/usr/ports могут находиться на диске/файловой системе «только для чтения», и вы по-прежнему можете строить из него, но, очевидно, все еще работает как обходной путь для любой ситуации, когда вы не можете записать в/usr/ports.
В настоящее время, как я не нашел фактического исправления, мой временный обходной путь не вызывает TMUX в моем .Bashrc.
Я создал псевдоним t
t t t t t t , чтобы я открыл окно терминала, я могу просто ввести t [return]
, чтобы включить TMUX для этого сеанса.