タグ付けされた質問 「arguments」

引数は通常、関数、プロシージャ、またはコマンドラインプログラムに渡される実際の値として定義されます。

7
前のコマンドの出力を引数としてnextに渡します
データを標準出力(command1 -p=aaa -v=bbb -i=4)に出力するコマンドがあります。出力行には次の値を設定できます。 rate (10%) - name: value - 10Kbps その「レート」を保存するために、その出力をgrepしたいです(ここでパイプが役立つと思います)。そして最後に、そのレートを2番目のコマンドのパラメーターの値にしたいと思います(言いましょうcommand2 -t=${rate}) 私の側には注意が必要です。パイプ、grep、sedなどの使用方法を詳しく知りたいと思います。 私はそのような組み合わせをたくさん試しましたが、私はこれらを混同しています: $ command1 -p=aaa -v=bbb -i=4 | grep "rate" 2>&1 command2 -t="rate was "${rate}


8
名前付き引数をシェルスクリプトに渡す
名前付きパラメーターをシェルスクリプトに渡す(受け取る)簡単な方法はありますか? 例えば、 my_script -p_out '/some/path' -arg_1 '5' そして内部でmy_script.shそれらを受け取ります: # I believe this notation does not work, but is there anything close to it? p_out=$ARGUMENTS['p_out'] arg1=$ARGUMENTS['arg_1'] printf "The Argument p_out is %s" "$p_out" printf "The Argument arg_1 is %s" "$arg1" これはBashまたはZshで可能ですか?

10
argvにプログラム名が含まれるのはなぜですか?
典型的なUnix / Linuxプログラムは、引数カウント(int argc)および引数ベクトル(char *argv[])としてコマンドライン入力を受け入れます。の最初の要素argvはプログラム名で、その後に実際の引数が続きます。 プログラム名が引数として実行可能ファイルに渡されるのはなぜですか?独自の名前を使用したプログラムの例はありますか(何らかのexec状況)。

8
$ *と$ @の違いは何ですか?
次のコードを検討してください。 foo () { echo $* } bar () { echo $@ } foo 1 2 3 4 bar 1 2 3 4 以下を出力します: 1 2 3 4 1 2 3 4 私はKsh88を使用していますが、他の一般的なシェルにも興味があります。特定のシェルの特殊性を知っている場合は、言及してください。 SolarisのKshのマニュアルページで次のことがわかりました。 $ *と$ @の意味は、引用符で囲まれていない場合、またはパラメーター割り当て値またはファイル名として使用されている場合は同じです。ただし、コマンド引数として使用する場合、$ *は `` $ 1d $ 2d ... ''と同等です。dはIFS変数の最初の文字で、$ @は$ 1 $ 2 ...と同等です。 …
73 shell  quoting  ksh  arguments 

3
curlは、ps出力にパスワードが表示されないようにどのように保護しますか?
curlコマンドライン引数として指定されたユーザー名とパスワードがps出力に表示されないことに少し前に気付きました(もちろん、bash履歴に表示される場合があります)。 彼らも同様に現れません/proc/PID/cmdline。 (ただし、ユーザー名とパスワードを組み合わせた引数の長さは導出できます。) 以下のデモ: [root@localhost ~]# nc -l 80 & [1] 3342 [root@localhost ~]# curl -u iamsam:samiam localhost & [2] 3343 [root@localhost ~]# GET / HTTP/1.1 Authorization: Basic aWFtc2FtOnNhbWlhbQ== User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 Host: localhost Accept: */* [1]+ Stopped nc -l 80 [root@localhost ~]# jobs [1]+ …

8
「mv:引数リストが長すぎます」を解決しますか?
並べ替えが必要な100万を超えるファイルを含むフォルダーがありますが、mvこのメッセージは常に出力されるため、実際には何もできません。 -bash: /bin/mv: Argument list too long このコマンドを使用して、拡張子のないファイルを移動しています。 mv -- !(*.jpg|*.png|*.bmp) targetdir/
64 bash  shell  arguments  mv 

9
lsコマンドから出力の1列だけをエコーするにはどうすればよいですか?
lsコマンドを実行すると、出力は次のようになります。 file1 file2 file3 file4 出力の特定の列、この場合はfile2のみを表示することは可能ですか?私は次のことを試みましたが成功しませんでした: echo ls | $2 基本的に私がしたいのは、2番目の列のみをエコーすることです。この場合、エコーしたいのです。 file2
54 bash  ls  parameter  arguments 

1
Unix / Linuxでオプション区切り文字の終わりとして二重ダッシュ(-)が導入されたのはいつですか?
歴史的な Unixや4.4BSDのような「最近」のシェル/ユーティリティは、オプションの区切り文字としてダブルダッシュ(または2つの連続したハイフン)の使用をサポートしていないと思います。ではFreeBSDでは、インスタンスのために導入されたノートを参照することができrm manページで2.2.1リリース(1997年)。しかし、これは1つのコマンドの単なるドキュメントです。 最古のを見るとGNUのfileutils のchangelog私は見つけることができる、私はこの参照1を(少し変更されました): Tue Aug 28 18:05:24 1990 David J. MacKenzie (djm at albert.ai.mit.edu) * touch.c (main): Don't interpret first non-option arg as a <--- time if `--' is given (POSIX-required kludge). * touch.c: Add long-named options. * Many files: Include <getopt.h> instead of "getopt.h" since getopt.h will …
49 history  posix  gnu  arguments 

5
引数リストがlsに対して長すぎます
ls *.txt | wc -l多くのファイルが含まれているディレクトリにアクセスしようとすると、次のエラーが表示されます。 -bash: /bin/ls: Argument list too long この「引数リスト」のしきい値は、ディストリビューションまたはコンピューターの仕様に依存しますか?通常、このような大きな結果の結果を他のコマンド(wc -lたとえば)にパイプするので、端末の制限については気にしません。
48 ls  arguments 

3
コマンドの単一引数の最大サイズを定義するものは何ですか?
ここでは、引数配列全体の合計サイズと環境のサイズ(これはに制限されていARG_MAXます)ほど、1つの引数の最大長は問題ではないという印象を受けました。したがって、次のようなことが成功すると思いました。 env_size=$(cat /proc/$$/environ | wc -c) (( arg_size = $(getconf ARG_MAX) - $env_size - 100 )) /bin/echo $(tr -dc [:alnum:] </dev/urandom | head -c $arg_size) >/dev/null - 100シェルでの環境の大きさとの間の差を考慮するために十分すぎるほどであることがよりechoプロセス。代わりに、エラーが発生しました: bash: /bin/echo: Argument list too long しばらく遊んだ後、最大値は完全な16進数の桁より小さいことがわかりました。 /bin/echo \ $(tr -dc [:alnum:] </dev/urandom | head -c $(($(getconf ARG_MAX)/16-1))) \ >/dev/null マイナス1が削除されると、エラーが返されます。一見、単一の引数の最大値は実際にARG_MAX/16あり-1、引数配列の文字列の最後に置かれたヌルバイトを考慮しています。 別の問題は、引数が繰り返されると、引数配列の合計サイズがに近くなる可能性があるARG_MAXが、それでもまだそこにはないということです。 …
48 kernel  echo  arguments 

7
`-`はcdでのみ使用されますか?
cd - 現在のディレクトリと前のディレクトリを切り替えることができます。 私は-以前に他のコマンドの引数として使用されたことを見てきましたが-、と同じことを意味するかどうかは覚えていませんがcd。 私はそれ-が動作しないことがわかりましたls。 された- だけで、CDと一緒に使用?

7
シバングの複数の引数
shebang行(#!)を介して実行可能ファイルに複数のオプションを渡す一般的な方法があるかどうか疑問に思っています。 私はNixOSを使用していますが、私が書くスクリプトの最初の部分は通常/usr/bin/envです。私が遭遇する問題は、その後に来るすべてがシステムによって単一のファイルまたはディレクトリとして解釈されることです。 たとえば、bashposixモードで実行されるスクリプトを書きたいとします。シバンを書く簡単な方法は次のとおりです。 #!/usr/bin/env bash --posix ただし、結果のスクリプトを実行しようとすると、次のエラーが生成されます。 /usr/bin/env: ‘bash --posix’: No such file or directory 私はこの投稿を知っていますが、より一般的でクリーンなソリューションがあるかどうか疑問に思っていました。 編集:Guileスクリプトには、マニュアルのセクション4.3.4に記載されている、目的を達成する方法があることを知っています。 #!/usr/bin/env sh exec guile -l fact -e '(@ (fac) main)' -s "$0" "$@" !# ここでのトリックは、2番目の行(で始まるexec)がコードとして解釈されますshが、#!... !#ブロック内にあるため、コメントとして解釈されるため、Guileインタープリターによって無視されることです。 このメソッドをインタープリターに一般化することはできませんか? 2番目の編集:少し遊んだ後、から入力を読み取ることができるインタープリターのstdin場合、次のメソッドが機能するようです: #!/usr/bin/env sh sed '1,2d' "$0" | bash --verbose --posix /dev/stdin; exit; ただし、sh通訳が仕事を終えるまでプロセスは存続するため、おそらく最適ではありません。フィードバックや提案をいただければ幸いです。

3
pgrepをkillでチェーンできますか?
|最初のコマンドの結果を別のコマンドに送信するために使用されることに気付きました。名前に一致するすべてのプロセスを強制終了します。 これはpgrepが通常行うことです: $ pgrep name 5089 5105 そして、複数の引数が動作するようですkill: sudo kill 5089 5105 しかし、これは間違っています: pgrep name | kill それで、それを適切に行う方法は?
31 shell  pipe  arguments 

2
UEFI / EFIブートでカーネル引数としてadd_efi_memmapを指定する必要があるのはいつですか?
LinuxカーネルをEFIスタブ(efistub)でロードする方法のチュートリアルを読んでいます。これらの手順では、多くの場合、カーネルブートパラメーターを使用しますadd_efi_memmap。対象のハードウェアは、8GBのRAMを搭載したIntel x64です。現在のセットアップでは、grub-efiブートローダーとカーネルv3.13を実行しています。 ブート引数なしのGRUBブートadd_efi_memmap: 23BIOS-E820のラインによってカウントdmesg | grep BIOS-e820: | wc -l 243EFIメモリラインによってカウントdmesg | grep efi:\ mem | wc -l DMAゾーン:24予約済みページ メモリ:7840568K / 8283384Kが利用可能 442816K予約済み GRUBブートと add_efi_memmap EFIメモリマップサイズは異なるようです: 23 BIOS-e820ライン 57 EFIメモリライン DMAゾーン:22予約済みページ メモリ:7885076K / 8283384Kが利用可能 398308K予約済み なしの EFIスタブブートadd_efi_memmap: 22 BIOS-e820ライン 60 EFIメモリライン DMAゾーン:21予約済みページ メモリ:7885012K / 8283384Kが利用可能 EFIスタブブートと add_efi_memmap: 22 BIOS-e820ライン 66 …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.