Ответы:
Моим решением было выбрать задачу, которую мне нужно было выполнить, и начать выполнять ее только терминально, после чего я попытался оптимизировать решение. Как только вы увидите преимущества, вы создадите добродетельный круг, который будет мотивировать вас с тех пор и далее.
Пример: удалить пустые пробелы в файле (в то время одноклассник кормил меня исходным кодом с кучей этого). Скажи, что это лайк по awk / perl. В какой-то момент у нас есть файл, который мы хотим исправить. После этого я заменил файл переменной, инкапсулированной в скрипт bash. Взрыв! (теперь, автоматизируя это для анализа всех файлов в папке, я мог легко принять 100 файлов, и обе стороны были довольны).
Я бы предложил иметь два компьютера: один с полноценным графическим интерфейсом и один без графического интерфейса. Управляйте первым с помощью графического интерфейса, а вторым через ssh. Противопоставление двух будет полезно, и вы не сможете обмануть второго.
Если у вас нет двух компьютеров, вы можете настроить виртуальные машины для этого.
Есть отличный апплет под названием Ubuntu Tips Applet. Он выскакивает уведомления с полезными терминальными командами в настраиваемом интервале, что оказалось довольно полезным для изучения немного на стороне. Не очень пригодный для быстрого обучения. http://www.omgubuntu.co.uk/2011/01/get-random-ubuntu-tips-on-your-desktop-app/
Существует игра typespeedдля Ubuntu, в которой вы можете измерить свою скорость, набирая случайные команды Unix. Между Unix и Shell много общего. Вы встретите много разных команд этого. Возможно, это не лучший инструмент, но стоит упомянуть.
Вы можете установить его используя
sudo apt-get install typespeed
Лично я узнал много материала из книги Unix Shells by Example, а также из справочных страниц и, очевидно, с этого сайта. Практика, тем не менее, даже лучше, чем теория. Начните писать сценарии для себя или других на сайте здесь.
Вот некоторые из вещей, которые я сделал недавно:
https://askubuntu.com/a/589574/295286
https://askubuntu.com/a/605476/295286