<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JUG.ua &#187; gnu</title>
	<atom:link href="http://jug.ua/tag/gnu/feed/" rel="self" type="application/rss+xml" />
	<link>http://jug.ua</link>
	<description>weblog сообщества Java-разработчиков КПИ</description>
	<lastBuildDate>Sat, 19 May 2012 17:10:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>commons-CLI: GNU, POSIX and Java-style command-line options syntax</title>
		<link>http://jug.ua/2009/06/apache-commons-cli-gnu-posix-and-java-style-command-line-options-syntax/</link>
		<comments>http://jug.ua/2009/06/apache-commons-cli-gnu-posix-and-java-style-command-line-options-syntax/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 14:20:52 +0000</pubDate>
		<dc:creator>n0mer</dc:creator>
				<category><![CDATA[программирование]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[posix]]></category>

		<guid isPermaLink="false">http://jug.ua/?p=209</guid>
		<description><![CDATA[The Apache Commons CLI http://commons.apache.org/cli/ &#8211; библиотека Apache Commons CLI предоставляет интерфейс (API) для разбора параметров командной строки, передаваемых программе при запуске, а также для печати информации о возможных параметрах запуска. Оказывается, существует несколько вариантов синтаксиса передаваемых программе параметров: POSIX like options (ie. tar -zxvf foo.tar.gz) GNU like long options (ie. du --human-readable --max-depth=1) Java [...]]]></description>
			<content:encoded><![CDATA[<h2>The Apache <strong>Commons CLI</strong></h2>
<p><a title="The Apache Commons CLI" href="http://commons.apache.org/cli/">http://<strong>commons.apache.org</strong>/cli/</a> &#8211; библиотека Apache Commons <abbr title="command-line interpreter">CLI</abbr> предоставляет интерфейс (<abbr title="application programming interface">API</abbr>) для разбора параметров командной строки, передаваемых программе при запуске, а также для печати информации о возможных параметрах запуска.</p>
<p>Оказывается, существует несколько вариантов синтаксиса передаваемых программе параметров:</p>
<blockquote>
<ul>
<li><abbr title="Portable Operating System Interface for Unix">POSIX</abbr> like options (ie. <code>tar -zxvf foo.tar.gz</code>)</li>
<li>GNU like long options (ie. <code>du --human-readable --max-depth=1</code>)</li>
<li>Java like properties (ie. <code>java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo</code>)</li>
<li>Short options with value attached (ie. <code>gcc -O2 foo.c</code>)</li>
<li>long options with single hyphen (ie. <code>ant -projecthelp</code>)</li>
</ul>
</blockquote>
<p>Библиотека Commons CLI поддерживает <strong>все пять</strong> вариантов.</p>
<h2>POSIX</h2>
<p>Пользуясь широкими возможностями пакета commons-cli, нужно помнить: использование аргументов командной строки может привести к тому, что разрабатываемая программа перестанет быть портируемой (т.е. не будет Java-программой на все 100%)!</p>
<p>Для обеспечения совместимости и переносимости программ, использующих аргументы командной строки, рекомендуется придерживаться стандартных соглашений <abbr title="Portable Operating System Interface for Unix">POSIX</abbr> о синтаксисе параметров:</p>
<blockquote>
<ul>
<li> An <em>option</em> is a hyphen followed by a single alphanumeric character, like this: <code>-o</code>.</li>
<li> An option may require an argument (which must appear immediately after the option); for example, <code>-o <em>argument</em></code> or <code>-o<em>argument</em></code>.</li>
<li> Options that do not require arguments can be grouped after a hyphen, so, for example, <code>-lst</code> is equivalent to <code>-t -l -s</code>.</li>
<li> Options can appear in any order; thus <code>-lst</code> is equivalent to <code>-tls</code>.</li>
<li> Options can appear multiple times.</li>
<li> Options precede other nonoption arguments: <code>-lst nonoption</code>.</li>
<li> The <code>--</code> argument terminates options.</li>
<li> The <code>-</code> option is typically used to represent one of the standard input streams.</li>
</ul>
</blockquote>
<p>Полностью POSIX-совместимыми являются такие операционные системы как AIX, HP-UX, MacOS X 10.5, MINIX, QNX, Solaris/OpenSolaris и др.(<a href="http://en.wikipedia.org/wiki/POSIX#Fully_POSIX-compliant">полный список</a>).<br />
Частично совместимые &#8211; FreeBSD, Linux (особенно использующие <abbr title="Linux Standard Base">LSB</abbr>), NetBSD, OpenBSD и др.(<a href="http://en.wikipedia.org/wiki/POSIX#Mostly_POSIX-compliant">полный список</a>).</p>
<h2>Подробности</h2>
<ul>
<li><a title="Options - The GNU Awk User's Guide" href="http://www.gnu.org/manual/gawk/html_node/Options.html">http://<strong>www.gnu.org</strong>/manual/gawk/html_node/Options.html</a> &#8211; <abbr title="GNU's Not Unix">GNU</abbr>-параметры на примере консольной утилиты <abbr title="Alfred Aho, Peter Weinberger, and Brian Kernighan">Awk</abbr></li>
<li><a title="POSIX Conventions for Command Line Arguments " href="http://www.iam.ubc.ca/guides/javatut99/essential/attributes/_posix.html"></a><a title="org.apache.commons.cli.PosixParser" href="http://commons.apache.org/cli/api-1.2/org/apache/commons/cli/PosixParser.html">PosixParser</a> и <a title="org.apache.commons.cli.GnuParser" href="http://commons.apache.org/cli/api-1.2/org/apache/commons/cli/GnuParser.html">GnuParser</a> в библиотеке Commons CLI<br />
Выбрать парсер достаточно просто:</p>
<pre class="brush: java; title: ; notranslate">
CommandLineParser parser = new PosixParser();
CommandLine cmd = parser.parse( options, args);
</pre>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jug.ua/2009/06/apache-commons-cli-gnu-posix-and-java-style-command-line-options-syntax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

