Как другие ответы упоминают, проблема вкладывается кавычки.
Я предлагаю, чтобы Вы рассмотрели как, заключив работы в кавычки в ударе. Короче говоря, кавычки (любого вида, одинарных кавычек '
, двойные кавычки "
или обратные галочки'), почти всегда соответствуют первому вхождению кавычки того же вида; необходимо выйти из кавычки для него для не соответствия (но Вы не можете выйти из одинарных кавычек '
).
Так, (1) апостроф в what's
окружает одинарную кавычку echo '
:
echo '
# what's my pub. ip?
Другими словами, Ваш echo
управляйте концами после ... ip?
и остальное сразу выполняется ударом как команда, которая является, по-видимому, не, что Вы имели в виду.
Как Rajish' ответ предполагает, использование здесь-документов решает многие проблемы заключения в кавычки:
echo >> /home/USER/.bashrc <<'__EOF__'
# what's my pub ip?
echo "we can nest quotes in here"
__EOF__
(2) Затем как уже сообщается в ответе ультраполотна пилы, кавычки на этой строке не соответствуют правильно:
alias myip="curl -s "http://checkip.dyndns.org/" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | head -1"
Вы, вероятно, хотение первого и последнего "
символы (двойной кавычки) на строке, чтобы соответствовать, но колотить соответствуют им в порядке, из которого с ними встречаются на строке (слева направо), таким образом, двойная кавычка, оставленная "http://...
закрывает кавычки после alias myip="
. Точно так же | grep -o
и | head -1
рассматриваются в кавычках, и http://...
и [0-9]*\....
не. (Это не будет иметь никаких серьезных синтаксических последствий в этом случае, кроме grep
наблюдение обратных косых черт, но имеет в виду его для будущего.)
Одно решение состоит в том, чтобы выйти из двойных кавычек (и также обратные косые черты, поскольку обратные косые черты не теряют свое особое значение в двойных кавычках):
alias myip="curl -s \"http://checkip.dyndns.org/\" | grep -o \"[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*\" | head -1"
Другое обходное решение, которое работает в этом случае, должно использовать одинарные кавычки '
вместо этого; любой для определения псевдонима:
alias myip='curl -s "http://checkip.dyndns.org/" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | head -1'
или для команд в определении псевдонима:
alias myip="curl -s 'http://checkip.dyndns.org/' | grep -o '[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*' | head -1"
(3) Наконец, в строках:
export PROMPT_COMMAND='PS1="`
if [[ \$? = "0" ]];
'
(одинарная кавычка) символ после PROMPT_COMMAND=
интерпретируется как запуск новой мультилинии отдельно заключенная в кавычки строка, которая заканчивается в строке:
fi`[\u@\h \w]\[\e[m\] "'
Таким образом другая отдельно заключенная в кавычки строка запускается '
символ на последней строке, но удар никогда не видит одинарной кавычки соответствия. Таким образом Вы получаете ошибку:
unexpected EOF while looking for matching `''
Я не знаю, где Вы получили идею то выполнение a make clean
прежде a make install
было так или иначе что-то, что необходимо делать.
Каноническое INSTALL
файл для автоинструментов обстоятельно объясняет процесс:
./configure
make
make check
(Дополнительно)make install
make installcheck
(Дополнительно)В объекте 6, это говорит:
Можно удалить двоичные файлы программы и объектные файлы из каталога исходного кода путем ввода
make clean
.
(Шахта Emphasis.)
make clean
что-то, что Вы делаете перед перекомпиляцией для проверки Вы получаете чистую сборку и не имеете оставшихся побочных продуктов от предыдущих выполнений. Можно сделать это после a make install
если Вы хотите освободить некоторое пространство, но иметь в наличии источник и конфигурацию. Вы не должны делать этого перед установкой.
Спокойный сценарий сборки работает как это:
1 First build qmake
2 Generate Makefile for a subprojects (*.pro)
3 Start building libaries, then examples and demo projects
Да, сделайте чистыми, уберет все кроме Вашего файла конфигурации, сгенерированного QT.
Мой прием, удаляют "демонстрацию" и "примеры" в вершине *.pro файл, которые экономят приблизительно 40%-е время (на i5 ЦП)
Anway, Вы могли установить кэш для ускорения компиляции, но это требует о 2G + дисковое пространство для буферизации
make distclean
и нетmake clean
. Я принялmake clean
быть намного менее "решительным".:) Очевидно, я был неправ. – syntaxerror 28.11.2012, 01:03