/ binへのコマンドショートカットの追加


8

カスタムコマンドを追加する方法はあります/binか?

たとえば、私docker container lsはたくさん使用していて、これをのようなショートカットコマンドに変えたいと思っていますdcls

私は名前のファイルを追加した場合dcls/bin、ファイル内の正確なコマンドを指定してdocker container ls、私はこれが働かないと仮定します。

もしあれば、このようなことをする正しい方法は何ですか?


6
に追加しないでください。(自分のディレクトリのビン)、または(システムのすべてのユーザーと共有するが、パッケージマネージャーに干渉しない)に/bin追加できます。この場合は、エイリアスを使用する方が適切です。~/bin/usr/local/bin
ctrl-alt-delor

回答:


24

ショートカットの簡単な方法は、 alias

alias dcls='docker container ls'

これはユーザーdocker container lsが入力dclsしたときに実行aliasされ、コマンドは定義されたエイリアスをリストします。このエイリアスを削除するには、を使用しますunalias dcls

bashを使用する場合は、エイリアスを~/.bashrcやに保存できます~/.bash_aliases

~/.bash_aliases起動時にが読み込まれない場合は、次の行を追加できます~/.bashrc

[ -f ~/.bash_aliases ] && . ~/.bash_aliases

フレディありがとう!サーバーを再起動するたびにこのエイリアスを作成する必要がありますか?それとも私のユーザープロファイルに制限されていますか?
alex067

2
あなたは、ユーザーのシェル起動ファイルに保存する必要がある~/.bashrcか、~/.profileあなたがログアウトしたときに、それが失われたエイリアスまたは近いターミナル保存しないと...か。
フレディ

再度、感謝します。〜フォルダーに.bashrcまたは.profileがない場合はどうなりますか?
alex067

1
本当に?なんと奇妙なサーバーでしょう。bashを使用している場合は、を使用して作成しecho "alias dcls='docker container ls'" >> ~/.bashrc、ソースを入力する. ~/.bashrcか、ログアウトして再度ログインします。
フレディ

応援よろしくお願いします。
alex067

15

実際、あなたが説明することはうまくいくでしょう、いくつかのメモがあります:

  1. docker container lsと呼ばれるファイルに単に置くことができます/bin/dcls。しかし、その動作は少し複雑になる可能性があります。「シェバン」と呼ばれる行でファイルを開始する方が少し信頼性が高いので、ファイルは次のようになります。
    #!/ bin / sh
    ドッカーコンテナーls
    これは、ファイルがシェルスクリプトであることを指定します。
  2. コマンドを実行する前に、次のようなコマンドでファイルを実行可能にする必要があります
    chmod + x / bin / dcls
    これを行うには、おそらくrootである必要があります(つまり、で実行しますsudo)。
  3. 上記の2つの手順を実行すると、入力できるようにdcls なり、実行されますdocker container ls。ただし、と入力してもdcls -l foo、引き続き機能しますdocker container ls。やりたい場合はdocker container ls -l foo、スクリプトを次のように変更する必要があります。

    #!/ bin / sh
    Dockerコンテナls "$ @"
    これは、dclsコマンドラインで入力する引数をコマンドに渡す必要があることを指定しますdocker container ls

    当然ながら、コマンドライン引数を使用してできることはもっと複雑です。

1つの単純なコマンド→1つの単純なコマンドのマッピングで、他のユーザーと共有する必要がない場合は、エイリアス(Freddyが示唆したとおり)またはシェル関数を定義する方が簡単です。多くの場合、より複雑な関数はスクリプトとして記述されます。つまり、コマンドを含むテキストファイルです。ただし、他のユーザーと共有する必要がない場合は、プライベートbinディレクトリを使用するのが一般的です。

$ cd                                     #(ホームディレクトリに) 
$ mkdir bin
次ににコピーdcls$HOME/binて追加します
export PATH = "$ HOME / bin:$ PATH"
あなたに~/.bashrc

また、個人的なスクリプトをに入れて、システムに付属のプログラムに/usr/local/bin残すことも一般的/binです。


すばらしい答えです。前述のようにビンに追加すると、すべてのユーザーに影響しますか?
alex067

はい; すべてのユーザーがに見える/bin、  /usr/binと一般的に共有ディレクトリのように/usr/local/bin 、時には/optので、これらのディレクトリ内のプログラムは、すべてのユーザーにご利用いただけます。
G-Manは 'Reinstate Monica'

1
システム上の他のユーザーと共有したい場合は/usr/local/bin、パッケージマネージャーに干渉しないようにしてください。
ctrl-alt-delor

5
+1を推奨し$HOME/binます。あなたは本当にこれを使うべきです。これは適切なスコープであるだけでなく、システムを再インストールするときに(およびを保持するときにHOME)カスタムコマンドを失わないようにするのに役立ちます。
allo

1
~/.local/bin 代わりに FWIWを使用します
Sparhawk

0

あなただけの場合、エイリアスは問題ありませんが、Linux Filesystem Hierarchy Standardによると、ローカルシステム全体のスクリプトは、/usr/local/bin/ではなくに移動し/binます。

  1. これは確かにで機能し/binますが、特にソフトウェアを顧客のサイトに展開する場合は、標準を維持することをお勧めします。
  2. スクリプトがオプションの場合は、 /opt
  3. スクリプト自体は次のようになります。

    #!/bin/bash
    #
    # Version 1.0 DD 2019-05-04
    # dcls = docker container ls
    docker container ls "@0"
    if [[ $? -eq 0 ]]; then
      echo -e "Errors encountered..."
      exit 1
    fi
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.