目次
Linux中命令选项(option)及参数简介
命令行选项(option)与命令行参数的使用方法
ホームページ よくある問題 Linux ドキュメントのオプションは何を意味しますか?

Linux ドキュメントのオプションは何を意味しますか?

Mar 07, 2023 am 10:41 AM
linux option

在linux中,option是指命令选项,是调整命令执行行为的开关,即选项不同决定了命令的显示结果不同。option(选项)分为长选项和短选项:1、短选项都是使用“-”引导,当有多个短选项时,各选项之间使用空格隔开;2、长选项都是完整的单词,且通常不能组合。

Linux ドキュメントのオプションは何を意味しますか?

本教程操作环境:linux7.3系统、Dell G3电脑。

Linux中命令选项(option)及参数简介

登录Linux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着“选项”(英文options)或“参数”(英文arguments)。即Linux中命令格式为:

<strong>command [options] [arguments]</strong> //中括号代表是可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个选项或参数。

选项options

选项是调整命令执行行为的开关,即,选项不同决定了命令的显示结果不同。

选项分为长选项和短选项。

短选项:比如-h,-l,-s等。(-   后面接单个字母)

  • 短选项都是使用‘-’引导,当有多个短选项时,各选项之间使用空格隔开。

  • 有些命令的短选项可以组合,比如-l –h 可以组合为–lh

  • 有些命令的短选项可以不带-,这通常叫作BSD风格的选项,比如ps aux

  • 有些短选项需要带选项本身的参数,比如-L 512M

长选项:比如--help,--list等。(--  后面接单词)

  • 长选项都是完整的单词

  • 长选项通常不能组合

  • 如果需要参数,长选项的参数通常需要‘=’,比如--size=1G

参数arguments

  参数是指命令的作用对象。

  如ls命令,不加参数的时候显示是当前目录,也可以加参数,如ls /dev, 则输出结果是/dev目录。

  以上简要说明了选项及参数的区别,但具体Linux中哪条命令有哪些选项及参数,需要我们靠经验积累或者查看Linux的帮助了。

总结:

选项是限定结果的显示结果  

  • 短选项(-  一个横杠):只能修饰一个字符的选项,比如: ls -a,当然多个短选项可以合并,比如tar -cvf

  • 长选项(--  两个横杠):可以修饰单个字符,也可以修饰一个单词,比如:

    (1) chkconfig --list   

    (2)chkconfig --add xxx 

    (3)service --status-all

参数是传递到脚本中的真实的参数

命令行选项(option)与命令行参数的使用方法

问题描述:在linux shell中如何处理tail -n 10 access.log这样的命令行选项?

在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景。

  • 1,直接处理,依次对$1,$2,...,$n进行解析,分别手工处理;

  • 2,getopts来处理,单个字符选项的情况(如:-n 10 -f file.txt等选项);

  • 3,getopt,可以处理单个字符选项,也可以处理长选项long-option(如:--prefix=/home等)。

总结:小脚本手工处理即可,getopts能处理绝大多数的情况,getopt较复杂、功能也更强大。

1,直接手工处理位置参数

必须要要知道几个变量

*    $0 :即命令本身,相当于c/c++中的argv[0]  
*    $1 :第一个参数.  
*    $2, $3, $4 ... :第2、3、4个参数,依次类推。  
*    $#  参数的个数,不包括命令本身  
*    $@ :参数本身的列表,也不包括命令本身  
*    $* :和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"
ログイン後にコピー
是一个参数数组。

手工处理方式能满足多数的简单需求,配合shift使用也能构造出强大的功能,但处理复杂选项时建议用下面的两种方法。

例子,(getargs.sh):

#!/bin/bash  
if [ $# -lt 1 ]; then  
    echo "error.. need args"  
    exit 1  fi  
echo "commond is $0"  echo "args are:"  for arg in "$@"  do  
    echo $arg  
done
ログイン後にコピー

运行命令:

./getargs.sh 11 22 cc  
commond is ./getargs.sh  
args are:  
11  22  cc
ログイン後にコピー

2,getopts (shell内置命令)

处理命令行参数是一个相似而又复杂的事情,为此,c提供了getopt/getopt_long等函数,c++的boost提供了

options库,在shell中,处理此事的是getopts和getopt。

getopts/getopt的区别,getopt是个外部binary文件,而getopts是shell builtin。

[root@jbxue ~]$ type getopt  
getopt is /usr/bin/getopt  
[root@jbxue ~]$ type getopts  
getopts is a shell builtin
ログイン後にコピー

getopts不能直接处理长的选项(如:--prefix=/home等)

关于getopts的使用方法,可以man bash  搜索getopts

getopts有两个参数,第一个参数是一个字符串,包括字符和“:”,每一个字符都是一个有效的选项,如果

字符后面带有“:”,表示这个字符有自己的参数。getopts从命令中获取这些参数,并且删去了“-”,并

将其赋值在第二个参数中,如果带有自己参数,这个参数赋值在“optarg”中。提供getopts的shell内置了

optarg这个变变,getopts修改了这个变量。

这里变量$optarg存储相应选项的参数,而$optind总是存储原始$*中下一个要处理的元素位置。

while getopts ":a:bc" opt  #第一个冒号表示忽略错误;字符后面的冒号表示该选项必须有自己的参数

例子,(getopts.sh):

echo $*  
while getopts ":a:bc" opt  
do  
        case $opt in  
                a ) echo $optarg  
                    echo $optind;;  
                b ) echo "b $optind";;  
                c ) echo "c $optind";;  
                ? ) echo "error"  
                    exit 1;;  
        esac  
done  
echo $optind  
shift $(($optind - 1))  
#通过shift $(($optind - 1))的处理,$*中就只保留了除去选项内容的参数,可以在其后进行正常的shell  
  
编程处理了。  
echo $0  echo $*
ログイン後にコピー

执行命令:

./getopts.sh -a 11 -b -c  
-a 11 -b -c  
11  3  b 4  c 5  5  ./getopts.sh
ログイン後にコピー

3,getopt(一个外部工具)

具体用用法可以 man getopt

  • #-o表示短选项,两个冒号表示该选项有一个可选参数,可选参数必须紧贴选项,如-carg 而不能是-c arg

  • #--long表示长选项

例子,(getopt.sh):

#!/bin/bash  
# a small example program for using the new getopt(1) program.  
# this program will only work with bash(1)  
# an similar program using the tcsh(1) script. language can be found  
# as parse.tcsh  
# example input and output (from the bash prompt):  
# ./parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "  # option a  
# option c, no argument  
# option c, argument `more'  # option b, argument ` very long '  # remaining arguments:  
# --> `par1'  # --> `another arg'  # --> `wow!*\?'  # note that we use `"$@"' to let each command-line parameter expand to a  # separate word. the quotes around `$@' are essential!  # we need temp as the `eval set --' would nuke the return value of getopt.  #-o表示短选项,两个冒号表示该选项有一个可选参数,可选参数必须紧贴选项  
#如-carg 而不能是-c arg  
#--long表示长选项  
#"$@"在上面解释过  
# -n:出错时的信息  
# -- :举一个例子比较好理解:  
#我们要创建一个名字为 "-f"的目录你会怎么办?  
# mkdir -f #不成功,因为-f会被mkdir当作选项来解析,这时就可以使用  
# mkdir -- -f 这样-f就不会被作为选项。  
temp=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \  
     -n 'example.bash' -- "$@"`  
if [ $? != 0 ] ; then echo "terminating..." >&2 ; exit 1 ; fi  
# note the quotes around `$temp': they are essential!  #set 会重新排列参数的顺序,也就是改变$1,$2...$n的值,这些值在getopt中重新排列过了  
eval set -- "$temp"  #经过getopt的处理,下面处理具体选项。  
while true ; do  
        case "$1" in  
                -a|--a-long) echo "option a" ; shift ;;  
                -b|--b-long) echo "option b, argument \`$2'" ; shift 2 ;;  
                -c|--c-long)  
                        # c has an optional argument. as we are in quoted mode,  
                        # an empty parameter will be generated if its optional  
                        # argument is not found.  
                        case "$2" in  
                                "") echo "option c, no argument"; shift 2 ;;  
                                *)  echo "option c, argument \`$2'" ; shift 2 ;;  
                        esac ;;  
                --) shift ; break ;;  
                *) echo "internal error!" ; exit 1 ;;  
        esac  
done  
echo "remaining arguments:"  for arg do  
   echo '--> '"\`$arg'" ;  
done
ログイン後にコピー

运行命令:

./getopt.sh --b-long abc -a -c33 remain  
option b, argument `abc&#39;  
option a  
option c, argument `33&#39;  
remaining arguments:  
--> `remain&#39;
ログイン後にコピー

相关推荐:《Linux视频教程

以上がLinux ドキュメントのオプションは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

Docker環境にPECLを使用して拡張機能をインストールするときにエラーが発生するのはなぜですか?それを解決する方法は? Docker環境にPECLを使用して拡張機能をインストールするときにエラーが発生するのはなぜですか?それを解決する方法は? Apr 01, 2025 pm 03:06 PM

エラーの原因とソリューションPECLを使用してDocker環境に拡張機能をインストールする場合、Docker環境を使用するときに、いくつかの頭痛に遭遇します...

ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? ランプアーキテクチャの下でnode.jsまたはPythonサービスを効率的に統合する方法は? Apr 01, 2025 pm 02:48 PM

多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

APSChedulerタイミングタスクをMACOSのサービスとして構成する方法は? APSChedulerタイミングタスクをMACOSのサービスとして構成する方法は? Apr 01, 2025 pm 06:09 PM

nginと同様に、APSChedulerタイミングタスクをサービスとして構成する場合、APSChedulerタイミングタスクをMACOSプラットフォームでサービスとして構成します...

マルチスレッドをC言語で実装する4つの方法 マルチスレッドをC言語で実装する4つの方法 Apr 03, 2025 pm 03:00 PM

言語のマルチスレッドは、プログラムの効率を大幅に改善できます。 C言語でマルチスレッドを実装する4つの主な方法があります。独立したプロセスを作成します。独立して実行される複数のプロセスを作成します。各プロセスには独自のメモリスペースがあります。擬似マルチスレッド:同じメモリ空間を共有して交互に実行するプロセスで複数の実行ストリームを作成します。マルチスレッドライブラリ:pthreadsなどのマルチスレッドライブラリを使用して、スレッドを作成および管理し、リッチスレッド操作機能を提供します。 Coroutine:タスクを小さなサブタスクに分割し、順番に実行する軽量のマルチスレッド実装。

PythonインタープリターはLinuxシステムで削除できますか? PythonインタープリターはLinuxシステムで削除できますか? Apr 02, 2025 am 07:00 AM

Linux Systemsに付属するPythonインタープリターを削除する問題に関して、多くのLinuxディストリビューションは、インストール時にPythonインタープリターをプリインストールし、パッケージマネージャーを使用しません...

web.xmlを開く方法 web.xmlを開く方法 Apr 03, 2025 am 06:51 AM

web.xmlファイルを開くには、次の方法を使用できます。テキストエディター(メモ帳やテキストエディットなど)を使用して、統合開発環境(EclipseやNetBeansなど)を使用してコマンドを編集できます(Windows:Notepad web.xml; Mac/Linux:Open -A Textedit Web.xml)