コマンドオプションをどのように覚えていますか?[閉まっている]


13

さまざまなコマンドのオプションを覚えるためにどのようなトリックを使用しているか知りたいですか?マニュアルページを常に検索するのは時間がかかり、それほどクールではありません!


2
特に:unix.stackexchange.com/questions/138720/…は、私が習慣的に台無しにしたり忘れたりすることのカスタマイズされた要約を作成するのに便利です。ところで、manページを読むほど、それらを高く評価するようになります。
goldilocks

私はすべてを忘れていると感じています。頭の上のすべての便利なオプションを思い出すのに苦労しているのは私だけかと思っていました。あなたの提案は良い解決策のように思えます。ありがとう!
Atul 14

3
manページを読むのはとてもクールです... :)
jasonwryan 14

1
Q:カーネギーホールへの行き方を教えてください。A:練習!
evilsoup 14

4
これはいくつかのXKCDに値すると思います:xkcd.com/1168
Darkhogg

回答:


39

トリックは簡単です。あなたはそうしません。それは時間の無駄であり、単に必要ではありません。コマンドオプションを記憶することは、特に有用なスキルではありません。ものが一般的にどのように機能するかを理解し、そもそもどのツールが存在し、何のためにそれを使用するかについて漠然とした考えを持つことがより重要です。ここで非常に重要なスキルは、まだ知らないものを見つける方法を知ることです。

マニュアルページは時間がかかりますか?そうではありません。少なくとも毎回ではなく、それらを読む必要があるわけではありません-検索機能があります。だから私はのための1つだった不可解なオプション覚えていない場合はhdparm私はいくつかのWDのディスク、ディセーブルにアイドルタイマーへman hdparm/idle3とちょっと、それはでした-J。そのようなものを見るのは非常に速いので、後でそれを覚えていません。

誰かが実際にすべてのhdparmオプションを覚えていると想像してください。時間の無駄。

オプションを頻繁に使用するため、たまたまオプションを覚えているだけでも大丈夫です。それは考えなくても自動的に起こります。しかし、実際にそれらを暗記することに時間を意識的に費やしています...それは何に役立つのでしょうか?紙のテスト?


4
賛成:スキルは、暗記メモリではなく、必要なものを見つけることです。man hdparm | less -p idle3...また、所望の用語にジャンプするための便利な方法です
jasonwryan

私はこの答えに完全に同意しますが、頻繁に使用するという理由だけで、一般的なプログラムに最も一般的なオプションをいくつか記憶しておくことは普通であることを強調する価値があると思います。同様にrm -i -f -rln -sdf -s -hcp -r -ils -l -h -a、など(リストは、人から人へと変化します)。
デビッドZ 14

8

Zshにはrun-help関数があり、デフォルトではにバインドされていますAlth。この関数を使用するrsyncと、たとえば覚えにくい多くのまたは複雑なオプションを指定してコマンドの入力を開始し、そのコマンドのmanページを開くことができます。そう:

 rsync Alth

manページを読んで、必要なスイッチを見つけてヒットするqと、コマンドプロンプトに戻ります。中断したところから、必要なオプションを使用してコマンドを完了できます。

rysnc -azP file dir/

wikiのメモ:

関数は、run-help-command形式のヘルパー関数を定義することによりさらにカスタマイズできます。標準配布には、run-help-git、run-help-svk、およびrun-help-svnの3つの機能があります。

同様にbash持っているbash-completeコマンドの多くのパラメータのオプションの多くを提供するであろう。
エリックス14

2
@ericx「同様に」それを少し誇張しているかもしれません... Zshにも完了があります、これはそれからのステップアップです。
jasonwryan

ちょっと...私は人々の自慢を聞いたことがありますが、私は試したことがないzsh
エリックス14

また、@ ericxはbash、補完リストへの説明の追加やエントリのグループ化(--classify -F -- append file type indicatorszshのGNU ls補完など)をサポートしていないため、zshほど有用ではありません。
ステファンシャゼル14

** root @ milicent **〜/ tmp ** Tue Aug 05 09:24:55#pkg info(-e -d -f -l -o -p -D)-r [逆依存関係を表示](-e -d -r -f -o -p -D)-l [すべてのファイルを表示](-e -d -r -l -f -p -D)-o [原点を表示](-e -d -r- l -o -f -D)-p [プレフィックスを表示](-e -d -r -l -o -p -D)-f [完全な情報を表示](-e -d -r -l -o -p -f)-D [メッセージを表示](-e -f -r -l -o -p -D)-d [依存関係を表示](-f -d -r -l -o -p -D)-e [<pkg-name>がインストールされている場合は0を返します](-g -X -a -F)-x [正規表現パターンに一致するパッケージを処理](-g -x -X -F)-a [すべてのパッケージを処理
エリックス14

4

非常に長いコマンド履歴を使用し、それを検索することは非常に便利です。

基本的にすべてのシェル履歴ファイルを収集し、それらをgrepします。

優れたキーワードを簡単に検索できるため、多くの場合、見つかった結果は非常に役立ちます。
URLなど、使用した特定の引数を検索すると、関連するコマンドとオプションも見つかります。また、特定のオプションを検索すると、関連する引数も見つかる場合があります。


4

ほとんどのコマンドには、クイックリファレンスのための--helpがあり、通常、私が以前知っていたことを思い出すのに十分です。

とはいえ、-hまたは-?の代わりに--helpを書く習慣があります。使用法の出力またはマニュアルページを見る前に、-hが何であるかを決して知らない。最悪の場合、-hは--hazardous-automatic-destructionの省略形かもしれません。


2
... GNUシステムのほとんどのコマンド。Unixシステムのコマンドは通常持っていません--help-?、、または、または現在のディレクトリに名前の後に単一の文字が続くファイルがある場合zshcsh、引用符で囲む必要があります。そこが好ましいかもしれません。tcshfish--:
ステファンシャゼル14

まあ..多くの非GNUシステムは、使用法の出力が非常に恐ろしいため、見ても意味がありません。そのような場合は、マニュアルページを参照してください。
ケロラサ14

「それは書く習慣があると言った」。単語がありませんか?
ファヒームミタ14

1

私が好きなオプションの1つは、同じまたは類似のオプションを持つエイリアスを作成することです。たとえば、

alias rmi='rm -i'
alias rmiv='rm -iv'
alias rmv='rm -v'
alias cpr='cp -r'
alias cprv='cp -rv'

これにより、すぐに簡単に覚えられる便利なショートカットができますが、実際のオプションに関する情報も保持されます。

エイリアスを使用する別のアプローチは、最も一般的なオプションを選択し、それらを使用する超短いエイリアスを作成することです。例えば、ls私はほとんどいつもそうlしています。

alias l='ls -alFtrG'

別のオプションは、ベースコマンドに好きなオプションを入れるだけです。例えば

alias ls='ls -F --color=always'

最後に、練習、練習、練習と忍耐。一般的なオプションを入力し続けると、最終的にそれらを学習します。一般的なものは数日で、他のものは数週間で、はい、あるものはあなたに知られるまでに何年もかかります。UNIXプログラミングは長い間あなたを楽しませ続けるだろうという点で、それを御treat走と考えてください。

私が気に入っているもう1つのオプションは、履歴を簡単に検索できるようにするエイリアスです。そのため、2つの類似したエイリアスがあります。

alias hg='history | tail -200 | grep -i'
alias hga='history | grep -i'

これらにより、たとえばコマンドの使用を検索できます。

hg ls履歴からのlsの最近の使用
hga lsが表示され、履歴全体からのlsのすべての使用が表示されます。

hgaがあまりにも多く表示される傾向があることに気付いた後、hgを開発しました。


4
OPが何を覚えているのかわからrm -ivない場合、OPはおそらく何を覚えてrmivいないのでしょう。問題はハイフンだとは思わない。
tobyink

個人的にエイリアスにrm -ivなりますsafe_deleterm_prompt
slebetman 14

君たちありがとう!覚える以上のことを覚えているのではないかと心配していました。弾丸の大きさと速度を知る代わりに、いつ武器を使うべきかを学びましょう!ここにたくさんの優秀なLinuxの人々がいることは幸運です。unix/ linuxに乾杯!!
アトゥール

1

私は通常:

man ${CMD} | grep 'what was I thinking about?'

またはそのバリエーション。一部grepのs では、contextafter、およびbeforeにそれぞれ-C / A / Bを指定できます。ない場合は、nlsedかなりよく一致することができます。

man hdparm |                      #hard to forget
nl -bp'idle3' -nln -w1 |          #I had to grep man to put this together
sed -n '/^[0-9]/{N;N;N;s///p}'    #no print until line begins w/ number, next,next,next

           Drive's "idle3" timeout value.  This timeout
            controls how often the drive parks its heads
            and  enters  a  low power consumption state.
            The factory default is  eight  (8)  seconds,
           zero (0) to disable the WD idle3 timer  com‐
            pletely (NOT RECOMMENDED!).

     -k     Get/set  the "keep_settings_over_reset" flag

--helpメニューがある場合は同じ方法でメニューを使用できますが、その${CMD} --help 2>&1 | ..filter..ようなものをに印刷するのはかなり標準的な方法であるため、必要になる場合がありますstderr

とにかく、物語の教訓は、少なくとも 覚えているmanと思いますgrep。たぶん残りを汗をかかないでください。


1
+1。grep特定の機能を探しているとき、私はよくmanページを使います。
ジョンWHスミス14

grepの -A -B -Cオプションも便利です。たとえば、man bash | grep -A 25 PROMPTING$
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.