Большинство приложений в обычном дистрибутиве действительно используют библиотеки и не компилируются статически, потому что перегрузка RAM и диска была бы гораздо важнее.
Когда вы включаете библиотеки в исполняемый файл, он становится намного тяжелее, поэтому загрузка этого исполняемого файла происходит намного медленнее и требует больших затрат.
Если вы хотите развернуть приложение, которое не использует стандартную системную библиотеку, и не хотите устанавливать их в своей системе, вы можете рассмотреть возможность статической компиляции, чтобы ваша программа не зависела от какой-либо системной библиотеки. Команда ldd youprogram
сообщит вам, статическая ваша программа или нет.
Если вы хотите поместить свое приложение в подпапку, используя библиотеку внутри этого каталога, а не в каталог системы, вам нужно будет установить LD_RUN_PATH
при запуске приложения, чтобы включить библиотеку, с которой вы упаковываете это, а не системная библиотека.
Вот вам еще одно решение
cal | awk 'NR >= 3 { tu = substr($0,7,2) +0 } tu { print tu; exit }'
4
cal 3 2016 | awk 'NR >= 3 { tu = substr($0,7,2) +0 } tu { print tu; exit }'
1
Он выбирает столбец вторника (символы 7 и 8 )и выдает первое не-нулевое значение. Подход можно смело экстраполировать на любой день недели.
С датой GNU:
За первый вторник текущего месяца:
for day in 0{1..7}; do [[ "$(date -d $(date +%Y%m${day}) +%a)" = "Tue" ]] && echo "$day";done
Для первого вторника данного года и месяца:
year=2016
month=03
for day in 0{1..7}; do [[ "$(date -d ${year}${month}${day} +%a)" = "Tue" ]] && echo "$day";done
Вариант "Вторник" в awk:
cal | awk -F "" '!/[[:alpha:]]/ && $7$8 ~ /[0-9]/ { print $7$8;exit }'
Это проверяет жесткую -закодированную позицию столбцов 7 и 8 (Вторник )в выводе (обратите внимание, что разделитель полей равен нулю, ввод разбивается на каждый символ)--после пропуска любых строк в которых есть буквы (строки заголовка ). Отрегулируйте 7 и 8, чтобы получить другие дни.
Чтобы было понятнее, что делает предыдущая команда, поля команды awk пронумерованы по столбцам:
123456789 <--- awk fields $1, $2, $3,... $9
December 2018
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31