Хорошая книга, чтобы добавить к ответу Сергея, приведена ниже. Это рекомендуемый маршрут для нового разработчика. Мир разработки Ubuntu / Linux горький. По моему мнению, большая кривая обучения, но как только вы ее узнаете, мир открыт и свободен по большей части.
Это хороший ресурс http://c.learncodethehardway.org/book/
У меня была такая же проблема, но я не был очень доволен решениями здесь или решения не работали для меня. То, что я узнал, чтобы он работает, чтобы отправить ввод NULL для APT-получить, так что она продолжает работать
Похоже, что это. :
apt-get -y install gcc g++ make cmake perl < "/dev/null"
cd ~/
mkdir t1
cd t1
#newline
Надеюсь, другие люди тоже могут это использовать! Не забывайте новую строку, чтобы последняя команда также была выполнена
Вы не должны копировать команды в сценарии на терминале, сценарий должен выполняться на терминале. Проблема с первым подходом заключается в том, что как только первая команда вставлена вместе с новой строкой в конце ее, apt-get начинает выполнение, что предотвращает вставку дополнительных команд на терминал, поэтому они не будут выполнение
Чтобы выполнить сценарий, напишите команды файлу run.sh (или любое имя, которое вы хотите) следующим образом:
#!/bin/bash
apt-get -y install gcc g++ make cmake perl
cd ~/
mkdir t1
cd t1
, а затем выполните его на terminal, введите bash run.sh или bash filename (замените имя файла на имя, которое вы дали сценарию). Первая строка этого скрипта сообщает, какую оболочку использовать, если вы запускаете скрипт напрямую (сначала выполнив его с помощью chmod +x filename), а затем запустив скрипт как /path/filename.
apt-get иногда выходит с ненулевым кодом, даже если он установлен успешно.
И это заставляет скрипт останавливаться. Это глупость и смехотворность, но я должен это решить. Я попытался заставить его продолжить, обернув блок apt-get с помощью суб-скрипта, поэтому код выхода будет проигнорирован.
set -e
bash << +END
apt-get -y install gcc g++ make cmake perl
exit 0
+END
echo $?
cd ~/
mkdir t1
cd t1
На самом деле я ожидал, что внутри bash выйдет с ненулевым кодом - поэтому внешний скрипт завершит каскад - но это не произошло, и исполнение продолжалось.