Команда apropos
полезна во многих отношениях, но она также дает вам много «мусора». Большинство вещей, которые вы перечисляете, являются подпрограммами библиотеки C (, для этого предназначен раздел 3 руководства ), которые вы не можете использовать непосредственно из оболочки.
Чтобы их использовать, вам нужно написать программу на C, которая их вызывает. Это выходит за рамки тем, охватываемых этим конкретным сайтом (, это будет тема на StackOverflow).
Вот, таким образом, ответы на ваши вопросы:
Я знаю, что вы это знаете, но для полноты картины :В оболочке, если у вас есть строка в переменной string
, вы можете сделать
string='hello world'
printf 'Length of string "%s" is %d\n' "$string" "${#string}"
Это напечатает Length of string "hello world" is 11
в терминале, где 11
исходит из ${#string}
, которое расширяется до длины строки в $string
.
Внутри оболочка вполне может использовать один из библиотечных вызовов, которые вы перечислили, для вычисления длины.
Это наиболее эффективный способ получить длину строки, хранящейся в переменной оболочки, в самой оболочке.
Также обратите внимание, что ${#string}
— это расширение параметра оболочки POSIX , поэтому оно переносимо между всеми оболочками, которые заявляют о любой степени соответствия POSIX.
Это должно охватывать большую часть того, что вы хотите сделать.
sortfood.sh
#!/bin/bash
# Puts files into subdirectories named after themselves in a directory.
# add more loops for more ID-criteria
for f in *AP*; do
mkdir -p "./fruit/$f";
mv -vn "$f" "./fruit/$f/";
done
for f in *RS*; do
mkdir -p "./sweet/$f";
mv -vn "$f" "./sweet/$f/";
done