.sh
указывает на сценарий для оболочки Bourne ( sh
) или оболочки Bourne Again ( bash
), которые обычно являются расширенным набором своего предшественника.
.csh
указывает на сценарий для оболочки C ( csh
), которая, будучи оболочкой, во многом похожа, но значительно отличается, как только вы начинаете делать что-то более сложное. чем запуск серии статических команд.
Обе оболочки обычно доступны в любой среде POSIXy, и, действительно, обе часто предустановлены, хотя bash
(и его двоюродный брат sh
), по моему опыту, немного более распространены.
Выше я сказал «ориентировочный», потому что идея расширения файла технически не существует и не имеет семантического или синтаксического значения. Файл может называться script.steve
или documentation.exe
или include.h
и при этом оставаться сценарием оболочки. Для более точного подтверждения посмотрите на первую строку файла. Для сценария, предназначенного для непосредственного выполнения, он должен начинаться со строки shebang, которая начинается с octothorpe ( #
), bang (!
) и пути к исполняемому файлу. который должен запустить скрипт. Например:
#!/usr/local/bin/bash
или
#!/usr/bin/python3
Другойawkподход:
ping -c1 www.google.com | awk -F'=' 'NR==2{ print strftime("[%T]",systime()),$NF; exit}'
[01:35:47] 41.5 ms
-F'='
- настраиваемый разделитель полей
$NF
- последнее значение поля
exit
- остановить обработка ввода сразу во 2-й записи
Попробуйте
ping -c 1 www.google.com | awk 'NR==2{print strftime("[%T]",systime()),substr($8,6),"ms"}'
Берет текущее время с помощью systime()
и форматирует его в представление %T (чч :мм :сс )с помощью strftime
. Затем печатает соответствующую часть поля 8, чтобы убрать ерунду time=
.
Пример
ping -c 1 www.google.com | awk 'NR==2{print strftime("[%T]",systime()),substr($8,6),"ms"}'
[21:32:05] 1.03 ms