(1/3) означает целочисленное деление, поэтому вы не можете получить десятичное значение из этого деления. Для решения этой проблемы используйте:
public static void main(String[] args) {
double g = 1.0 / 3;
System.out.printf("%.2f", g);
}
Необходимо смочь использовать команда compgen, как так:
compgen -A builtin [YOUR STRING HERE]
, Например, "compgen-A встроенный l" возвраты
let
local
logout
можно использовать другие ключевые слова вместо "встроенного" для получения других типов завершения. Встроенный дает Вам, окружают встроенные команды. "Файл" дает Вам, локальные имена файлов, и т.д.
Вот список действий (из страницы справочника Bash для завершенный , который использует compgen):
alias Alias names. May also be specified as -a.
arrayvar Array variable names.
binding Readline key binding names.
builtin Names of shell builtin commands. May also be specified as -b.
command Command names. May also be specified as -c.
directory Directory names. May also be specified as -d.
disabled Names of disabled shell builtins.
enabled Names of enabled shell builtins.
export Names of exported shell variables. May also be specified as -e.
file File names. May also be specified as -f.
function Names of shell functions.
group Group names. May also be specified as -g.
helptopic Help topics as accepted by the help builtin.
hostname Hostnames, as taken from the file specified by the HOSTFILE shell
variable.
job Job names, if job control is active. May also be specified as
-j.
keyword Shell reserved words. May also be specified as -k.
running Names of running jobs, if job control is active.
service Service names. May also be specified as -s.
setopt Valid arguments for the -o option to the set builtin.
shopt Shell option names as accepted by the shopt builtin.
signal Signal names.
stopped Names of stopped jobs, if job control is active.
user User names. May also be specified as -u.
variable Names of all shell variables. May also be specified as -v.
Ответ JacobM является большим. Для того, чтобы сделать его вручную, я использовал бы что-то вроде этого:
echo $PATH | tr : '\n' |
while read p; do
for i in $p/mod*; do
[[ -x "$i" && -f "$i" ]] && echo $i
done
done
тест перед выводом удостоверяется только исполняемый файл, регулярные файлы показывают. Вышеупомянутые шоу все команды, запускающиеся с mod
.
Интересный способ сделать это должно совершить нападки M-*
(Meta обычно оставляют Высокий звук).
Как пример, введите это:
$ lo
Затем совершает нападки M-*
:
$ loadkeys loadunimap local locale localedef locale-gen locate
lockfile-create lockfile-remove lockfile-touch logd logger login
logname logout logprof logrotate logsave look lorder losetup
можно читать больше об этом в man 3 readline
; это - функция readline
библиотека.
Если бы Вы хотите точно, как удар завершился бы
COMPLETIONS=$(compgen -c "$WORD")
, compgen завершает использование того же использования удара правил при переключении вкладок.
Что перечислено, когда Вы совершаете нападки, двоичные файлы в Вашем ПУТИ, которые запускаются с той строки. Так, если Ваша переменная ПУТИ содержит: ПУТЬ =/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/lib/qt/bin:/usr/share/texmf/bin:.
Bash посмотрит в каждом из тех каталогов, чтобы показать Вам предложения, после того как Вы совершаете нападки. Таким образом для получения списка команд, запускающихся с "ls" в переменную, Вы могли сделать: $ MYVAR= (ls/usr/local/bin/ls*/usr/bin/ls*/bin/ls*) Естественно Вы могли добавить все другие каталоги, которые я не имею.
Выполните итерации по переменной $PATH и сделайте ls beginningofword*
для каждого каталога в пути?
Для получения его точно эквивалентный необходимо было бы отфильтровать только исполняемые файлы, и вид по имени (должно быть довольно легким с флагами ls и командой вида).
Только для забавы, другого ручного варианта:
find -L $(echo $PATH | tr ":" " ") -name 'pattern' -type f -perm -001 -print
, где pattern
указывает шаблон имени файла, Вы хотите использовать. Это пропустит команды, которые не являются глобально исполняемым файлом, но для которых у Вас есть разрешение.
[протестированный на Mac OS X]
<час> Использование -or
и -and
флаги для создания более всесторонней версии из этой команды:
find -L $(echo $PATH | tr ":" " ") -name 'pattern' -type f
\( \
-perm -001 -or \
\( -perm -100 -and -user $(whoami)\) \
\) -print
возьмет файлы, для которых у Вас есть разрешение на основании владения ими. Я не вижу общий способ получить все те, которых можно выполнить на основании присоединения группы без намного большего количества кодирования.
Интересный, я не знал приблизительно compgen
. Здесь сценарий, я раньше делал это, который не проверяет на неисполняемые файлы:
#!/bin/bash
echo $PATH | tr ':' '\0' | xargs -0 ls | grep "$@" | sort
Сохраняют тот сценарий где-нибудь в Вашем $PATH
(я назвал его findcmd
), chmod u+w
это, и затем используйте его точно так же, как grep
, передавая Ваши любимые опции и шаблон:
findcmd ^foo # finds all commands beginning with foo
findcmd -i -E 'ba+r' # finds all commands matching the pattern 'ba+r', case insensitively