Звучит как хороший план. Некоторые предложения:
Научитесь автоматизировать все, что можете. Сделай это привычкой. Если вы делаете что-то больше, чем пару раз, поместите это в сценарий. Это не просто для того, чтобы не печатать, а для документирования процесса. Улучшайте свои сценарии, когда вы замечаете проблемы. Поделитесь своими сценариями, когда это уместно.
Изучите мощь конвейеризации. Откройте для себя цель команды xargs
. Перепишите стандартную утилиту командной строки, такую как grep
или sort
на выбранном вами языке. (Я неравнодушен к Perl, но это почти измена.; -)
Настройте файл .bashrc
. Знайте, какие настройки вам нравятся, а какие вам не подходят.
Используйте ksh
вместо bash
для скриптов. Отличий не так много, но ksh
имеет несколько дополнительных функций, которые очень приятно иметь. Однако я предпочитаю bash
для интерактивных оболочек.
Похоже, что другие ответы предлагают сосредоточиться на "реальных языках программирования". Я не скажу, что это плохой совет, но по моему опыту слишком мало программистов хорошо используют командную строку. За всю карьеру хорошее использование сценариев оболочки экономит бесчисленное количество часов и утомляет.
Позвольте мне привести вам пример. В эти выходные я начал добавлять новый код в нашу производственную систему. Мы провели предыдущую неделю, тестируя его, и все выглядело хорошо. В идеале вы хотели бы иметь идеальный клон операционной системы, чтобы вы тестировали яблоки на яблоки. Но мы не можем позволить себе две копии оборудования, поэтому мы одалживаем производственные машины для запуска тестов и включаем их в производство, когда выполняем обновление.
Теперь, чтобы различать наши операции и тестирование, мы используем две разные учетные записи. Поэтому, прежде чем вводить систему в эксплуатацию, мы очищаем определенные файлы, созданные тестовой учетной записью. По сути, это двухэтапный процесс:
Найти все файлы, созданные тестирующим пользователем.
Ударь их.
Я полагаю, что мне понадобится минута или две, чтобы написать код для этого на Perl, и еще пару минут, чтобы протестировать его. Это простая работа. Я даже не уверен, как это сделать в C / C ++. Я думаю, что вы начнете с stat
корневого каталога.
Но каждый, кто освоил создание сценариев оболочки, прыгает вверх и вниз, машет руками и выкрикивает ответ, потому что вы можете написать код за время, необходимое для его ввода:
$ find /data -user test | xargs rm -rf
Тестирование состоит из запуска команды и отслеживания ошибок. Эта конкретная проблема - шаг софтбола прямо в рулевой рубке для bash
. Perl выполняет свою работу, но это немного менее естественно. (Я бы использовал find2perl
, который просто добавляет шаг.) Попытка сделать это на C или C ++ была бы квиксотическим квестом. Эти языки предназначены для решения различных проблем.
Теперь, если вы не работаете в среде UNIXy, вероятно, есть набор инструментов, предназначенный для таких вещей. (Я не эксперт, но в Windows я, вероятно, запустил бы поиск, чтобы собрать все файлы в одном окне, выбрать все и удалить. Очень легко. Однако я не знаю, как это автоматизировать.) Но если вы планируете найти работу в мире UNIX / Linux, вы должны быть знакомы с командной строкой, чтобы вам не потребовалось 5 минут, чтобы выполнить работу за 30 секунд.