Оболочка Bourne-again или просто bash - это оболочка Unix и командный язык. С 1989 года он широко распространен как оболочка по умолчанию для большинства дистрибутивов Linux и macOS. Недавно он стал доступен и для Windows.
Эффективное использование оболочки сильно влияет на нашу продуктивность. Короткие команды легко выучить и обладают огромным потенциалом, потому что мы можем свободно передавать их по конвейеру. Давайте погрузимся в командную строку!
Настроить профиль bash
Важно, чтобы наша консоль имела тот стиль, который нам нужен. .bashrc
можно создавать и редактировать в виде обычного текста, однако существует отличный веб-сайт, который позволяет нам создавать наши любимые подсказки с помощью перетаскивания. Такой сгенерированный файл можно загрузить, а затем изменить.
Примеры
В этом разделе представлены несколько примеров. Различные команды (grep, find, git, sed, cat, wc, zip
) конвейеризированы для достижения более сложного поведения.
Мои примеры
- Подсчитайте классы (или перечисления / интерфейсы, если мы изменим шаблон) в каталоге проекта (не только отдельные
.java
файлы, но и внутренние классы):$ grep -roh --include=*.java 'class ' . | wc -w
- Найдите строки, содержащие тег
<ns1:Foo>
вinput.xml
, и сохраните только значения элементов вoutput.txt
:$ grep 'ns1:Foo' file.xml | sed -e 's/<ns1:Foo>\(.*\)<\/ns1:Foo>/\1/’ | cat > output.txt
- Найдите коммиты, содержащие тег
[JIRA]
, и отобразите одну строку перед тегом и две строки после него:$ git log | grep -B1 -A2 '[JIRA]'
- Найдите все коммиты, в которых были изменены
Controller
файлы, и отобразите их авторов, не вставляя разделителей групп:$ git log --all -- '*Controller*' | grep 'Author' --group-separator=''
Примеры Прагматичного программиста
- Найти все
.kt
файлы, которые были изменены позжеbuild.gradle
:find . -name '*.kt' -newer build.gradle -print
- Создайте архив (tar или zip) с исходным кодом Java и Kotlin:
zip sources.zip *.java *.kt
tar cvf sources.tar *.java *.kt - Показать файлы Java, которые были изменены за последнюю неделю:
find . -name '*.java' -mtime +7 -print
- Показать файлы Java, которые были изменены за последнюю неделю, и использовать RxJava:
find . -name '*.java' -mtime +7 -print | xargs grep 'import io.reactivex'
Разница между точкой с запятой и двойным амперсандом (; vs. &&)
«;» просто разделяет две команды, «&&» означает логическое И (так, как и в большинстве языков программирования, есть также ИЛИ «||»). Рассмотрим следующий пример:
$ false ; echo "OK"
OK
$ true ; echo "OK"
OK
$ false && echo "OK"
$ true && echo "OK"
OK
$ false || echo "OK"
OK
$ true || echo "OK"
$
echo "OK"
всегда запускается для «:». Что касается логических операторов, вторая часть выполняется только тогда, когда имеет смысл вычислить правильный операнд.
Разница между одинарными и двойными кавычками (‘… ‘vs.«… ’) »
Двойные кавычки интерполируют строки между ними, одинарные - нет (Справочное руководство Bash). Следующий пример прекрасно это иллюстрирует:
$ echo "$(echo "qoute")"
qoute
$ echo '$(echo "qoute")'
$(echo "qoute")
Мастерская Shell
Если вы хотите пройти онлайн-курс, я рекомендую краткое введение от Udacity. Описаны несколько основных команд (ls
, mv
и т. Д.), А также некоторые более сложные, например grep
, curl
или less
.
Спасибо за чтение и оставайтесь на связи! 👋