BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

.bashrcファイルを使用して、半分のキーストロークで2倍の処理を行う方法

Bashスクリプトを使用したUbuntuのセットアップに関する最近の投稿で、.bashrcの魔法について簡単に触れました。 。これは実際には正義ではなかったので、Bash構成ファイルで何ができるかについてもう少し詳しく説明した簡単な投稿を次に示します。

私の現在の構成はワークフローを大幅に改善し、それなしで使用しなければならないキーストロークの50%以上を節約します!キーを押す回数を減らして効率を高めることでワークフローを改善できるエイリアス、関数、プロンプト構成の例をいくつか見てみましょう。

Bashエイリアス

スマートに書かれた.bashrc たくさんのキーストロークを節約できます。これは、bashエイリアス、またはより大きなコマンドに拡張される文字列を使用することで、文字通りの意味で利用できます。わかりやすい例として、ターミナルでファイルをコピーするためのBashエイリアスを次に示します。

# Always copy contents of directories (r)ecursively and explain (v) what was done
alias cp='cp -rv'

alias コマンドは、入力する文字列を定義し、その後にその文字列の展開先を定義します。 cpなどの既存のコマンドをオーバーライドできます その上。それ自体で、cp コマンドはファイルのみをコピーし、ディレクトリはコピーせず、サイレントに成功します。このエイリアスを使用すると、これら2つのフラグやcdを渡すことを覚えておく必要はありません。 またはls コピーしたファイルの場所を確認してください。さて、これらの2つのキーを押すだけです(cの場合) およびd )私たちのためにすべてを行います。

ここにもう少し.bashrcがあります 共通の機能を持つフラグを渡すためのエイリアス。

# List contents with colors for file types, (A)lmost all hidden files (without . and ..), in (C)olumns, with class indicators (F)
alias ls='ls --color=auto -ACF'
# List contents with colors for file types, (a)ll hidden entries (including . and ..), use (l)ong listing format, with class indicators (F)
alias ll='ls --color=auto -alF'

# Explain (v) what was done when moving a file
alias mv='mv -v'
# Create any non-existent (p)arent directories and explain (v) what was done
alias mkdir='mkdir -pv'
# Always try to (c)ontinue getting a partially-downloaded file
alias wget='wget -c'

エイリアスは、長いコマンドの入力を避けたい場合にも役立ちます。 Python環境で作業するときに使用するものをいくつか示します。

alias pym='python3 manage.py'
alias mkenv='python3 -m venv env'
alias startenv='source env/bin/activate && which python3'
alias stopenv='deactivate'

Bashエイリアスが時間を節約する方法の詳細については、この記事の例を強くお勧めします。

Bash関数

上記のエイリアスの欠点の1つは、それらがかなり静的であるということです。つまり、宣言されたテキストに正確に拡張されます。引数を取るBashエイリアスの場合、関数を作成する必要があります。私たちはこのようにこれを行うことができます:

# Show contents of the directory after changing to it
function cd () {
    builtin cd "$1"
    ls -ACF
}

cdと入力した回数を集計し始めることができません 次にls 現在のディレクトリの内容を確認した直後。この関数を設定すると、これら2文字だけですべてが実行されます。この関数は最初の引数$1を取ります 、ディレクトリを変更する場所として、そのディレクトリの内容をファイルタイプインジケータ付きの適切にフォーマットされた列に出力します。 builtin このデフォルトのコマンドをオーバーライドできるようにBashを取得するには、一部が必要です。

Bash関数は、ソフトウェアのダウンロードやアップグレードに関しても非常に便利です。以前は、出荷頻度が高いため、静的サイトジェネレーターHugoの新しい拡張バージョンをダウンロードするのに数週間ごとに少なくとも数分を費やしていました。関数を使用すると、バージョンを渡すだけで、アップグレードは数秒で完了します。

# Hugo install or upgrade
function gethugo () {
    wget -q -P tmp/ https://github.com/gohugoio/hugo/releases/download/v"$@"/hugo_extended_"$@"_Linux-64bit.tar.gz
    tar xf tmp/hugo_extended_"$@"_Linux-64bit.tar.gz -C tmp/
    sudo mv -f tmp/hugo /usr/local/bin/
    rm -rf tmp/
    hugo version
}

$@ 表記は、与えられたすべての引数を取り、関数内のその場所を置き換えるだけです。上記の関数を実行してHugoバージョン0.57.2をダウンロードするには、コマンドgethugo 0.57.2を使用します。 。

Golang用のものもあります:

function getgolang () {
    sudo rm -rf /usr/local/go
    wget -q -P tmp/ https://dl.google.com/go/go"$@".linux-amd64.tar.gz
    sudo tar -C /usr/local -xzf tmp/go"$@".linux-amd64.tar.gz
    rm -rf tmp/
    go version
}

または、GitLabのリモートオリジンURLを現在のリポジトリに追加する関数はどうですか?

function glab () {
    git remote set-url origin --add git@gitlab.com:"$@"/"${PWD##*/}".git
    git remote -v
}

glab usernameを使用 、新しいoriginを作成できます usernameを含む現在のGitリポジトリのURL GitLab.comで。新しいリモートURLにプッシュすると、新しいプライベートGitLabリポジトリが自動的に作成されるため、これはバックアップを作成するための便利なショートカットです。

Bash関数は、実際にはスクリプトの可能性によってのみ制限されますが、実際には、制限はほとんどありません。ターミナルに数行入力する必要があることが頻繁に行われる場合は、おそらくそのためのBash関数を作成できます!

バッシュプロンプト

ディレクトリの内容に加えて、現在のディレクトリのフルパスを確認することも役立ちます。Bashプロンプトでは、現在のGitブランチなどの他の有用な情報とともに、このパスを表示できます。読みやすくするために、プロンプトの各部分の色を定義できます。 .bashrcでプロンプトを設定する方法は次のとおりです。 これを達成するには:

# Colour codes are cumbersome, so let's name them
txtcyn='\[\e[0;96m\]' # Cyan
txtpur='\[\e[0;35m\]' # Purple
txtwht='\[\e[0;37m\]' # White
txtrst='\[\e[0m\]'    # Text Reset

# Which (C)olour for what part of the prompt?
pathC="${txtcyn}"
gitC="${txtpur}"
pointerC="${txtwht}"
normalC="${txtrst}"

# Get the name of our branch and put parenthesis around it
gitBranch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

# Build the prompt
export PS1="${pathC}\w ${gitC}\$(gitBranch) ${pointerC}\$${normalC} "

結果:

~/github/myrepo (master) $

色に名前を付けると、ある色の開始位置と停止位置、および次の色の開始位置を簡単に識別できます。端末に表示されるプロンプトは、export PS1に続く文字列によって定義されます。 、プロンプトの各コンポーネントにエスケープシーケンスが設定されています。それを分解しましょう:

  • \w 現在の作業ディレクトリを表示します
  • \$(gitBranch) gitBranchを呼び出します 上記で定義された関数。現在のGitブランチを表示します。
  • \$ 通常のユーザーまたは通常のユーザーモードの場合は「$」が表示され、rootの場合は「#」が表示されます。

Bashエスケープシーケンスの完全なリストは、時刻や日付を含め、さらに多くの情報を表示するのに役立ちます。 Bashプロンプトは高度にカスタマイズ可能で個別に設定できるため、自由に設定できます。

情報を最前線に置き、より効率的に作業するのに役立ついくつかのオプションを次に示します。

先延ばしを嫌う

ユーザー名と現在の時刻(秒)、24時間制HH:MM:SS形式:

export PS1="${userC}\u ${normalC}at \t >"
user at 09:35:55 >
自分がどこに立っているかを常に知りたい人のために

別の行の完全なファイルパスとユーザー名:

export PS1="${pathC}\w${normalC}\n\u:"
~/github/myrepo
user:
ミニマリスト向け
export PS1=">"
>

基本的なエスケープシーケンスだけで、多くの実用的なプロンプトを作成できます。 Gitブランチの例のように、関数とプロンプトの統合を開始すると、事態は非常に複雑になる可能性があります。この複雑さの量が生産性の向上または不利益であるかどうかにかかわらず、確実に知ることができるのはあなただけです!

クイック検索ですぐに利用できるプログラムを使用すると、多くの派手なBashプロンプトが可能になります。ここでは意図的にサンプルを提供していません。なぜなら、私ができる限りこのことに興奮する傾向がある場合は、この投稿を読み始める前に、元の状態に戻るまでに数時間かかる可能性があるからです。良心にそれを持たせることはできません。 ?

投資した時間とBash構成ファイルから得られた有用性のバランスがうまく取れたことを願っています。新しく回復したキーストローク容量を永久に使用してください。


  1. Rubyエイリアスキーワードの使用方法

    Rubyメソッドに別の名前を付けるには、次の2つの方法があります。 エイリアス(キーワード) alias_method 彼らはわずかに異なる方法で同じことをするので、これは紛らわしいトピックになる可能性があります。 この画像は違いの要約です : しっかりと理解するために、これらの違いをさらに詳しく調べてみましょう! エイリアスキーワード まず、aliasがあります 、これはRubyキーワードです(ifなど) 、def 、class 、など) このように見えます : alias print_something puts print_something 1 prin

  2. Linuxでwatchコマンドを使用する方法と例

    Linuxのwatchコマンドは1つのことを行います。コマンドを繰り返し、結果を繰り返し出力して、変更を監視できるようにします。使用方法は次のとおりです。 watchコマンド構文 watchコマンドの構文は次のとおりです。 watch OPTIONS COMMAND 注: オプション 以下の表のオプションのリストである必要があります。これにより、ウォッチのデフォルトの動作が変更されます。 コマンド コマンド 監視するコマンドです 繰り返し実行する必要があります。これは、出力を監視します 見る 中断されるまで実行されます(したがって、 CTRL+Cを押して終了します ) オプション 時