$> cat ./deploymLog.sh
#!/bin/bash
name=$1
log_file="Logone.txt"
if [[ -n "$name" ]]; then
echo "$1=$( date +%s )" >> ${log_file}
else
echo "argument error"
fi
Первый аргумент от командной строки может быть найден с позиционным параметром $1
. [[ -n "$name" ]]
тесты, чтобы видеть, если $name
не пусто. date +%s
возвращает текущую метку времени во время Unix. >>
оператор используется для записи в файл путем добавления к существующим данным в файле.
$> ./deploymLog.sh tt
$> cat Logone.txt
tt=1329810941
$> ./deploymLog.sh rr
$> cat Logone.txt
tt=1329810941
rr=1329810953
Для большей читаемой метки времени Вы могли играть с date
аргументы.
column -t -s '\t'
разделил бы столбцы на \
и t
персонажи.
column -s \t
совпадает с column -s t
, поскольку обратная косая черта интерпретируется как оператор заключения в кавычки оболочкой.
Здесь Вы хотите передать реальный Символ табуляции столбцу. С ksh93, zsh, ударом, mksh, busybox sh или FreeBSD sh:
column -ts $'\t'
Или введите реальный символ табуляции путем ввода Вкладки Ctrl-V при приглашении оболочки (в кавычках, или предшествовал обратной косой чертой, поскольку символ табуляции является маркерным разделителем в синтаксисе оболочки точно так же, как пространство), или использование "$(printf '\t')"
(те двойные кавычки должны были отключить split+glob оператор, поскольку символ табуляции также, оказывается, находится в значении по умолчанию $IFS
).
-t
для выбора числа столбцов, которые Вы хотите. Оставление этого незаполненного ничего не изменяет. Кроме того, Вы хотите пробел после -s
поэтому испытайте это:
cat myfile | column -s \t
column
строки заливок перед столбцами. Можно интересоваться pr
– lurker
30.11.2012, 12:35
Я использовал следующее (работает только если ваш текст не содержит|
):
cat myfile | tr '\t' '|' | column -t -s '|'
Это просто заменяет вкладки вертикальными чертами, а затем использует столбцы с вертикальными чертами в качестве разделителей.
(Я сделал это, потому что не увидел в ответе Стефана ничего, что могло бы сработать -или -коробку -в рыбьей оболочке. В противном случае ответ Стефана кажется хорошим.)
Для POSIX $'...'
, известный как экранирование ANSI -C, не определен.
Вместо этого вы можете использовать$(printf '\t')
:
column -t -s "$(printf '\t')"
$(printf '\011')
можно использовать, так как011
(восьмеричное представление десятичного числа 9 )— код ANSI для символа горизонтальной табуляции:
column -t -s "$(printf '\011')"
Тем не менее, см. ниже комментарий Стефана Шазеласа о том, почему это может быть несовместимо между версиями оболочки.
column -t -s $'\t'
поскольку удар, казалось, думал'\t'
имейте в виду обоих\
иt
, но$'\t'
означает литеральную вкладку. Bash воняет – ThorSummoner 22.06.2016, 01:11