日本語版
最新ニュース
科学&テクノロジー

イレブン ラボ ブログ – Linux 作業環境を最適化するためのヒント

この記事では、Linux の作業環境を最適化するためのヒントをいくつか紹介します。 ここで説明するものはすべて、私が個人的に実装し、日常的に使用しているものです。 マルチアクセスの設定を検討します SSH、コマンドラインインターフェイスをカスタマイズする CLI と bash、および使用を放棄する方法 zsh など Oh My Zsh。 Linux 環境での複数の SSH アクセスのセットアップ この最初のヒントでは、次の点に焦点を当てます。 SSH。 すでに複数のアクセスがある可能性があります SSH サーバーアドレス、ユーザー、秘密鍵、公開鍵などのさまざまなログイン情報を使用します。 そしておそらくあなたは使ったでしょう SSH 以下の例のように、すべての接続情報を指定します。 ssh -i path-to-ssh-public-key user@host:port 異なるサーバーに複数のアクセス権がある場合 SSH、おそらくこれと同様のことを行う必要があります。 ssh -i path-to-ssh-public-key-server-1 user-server-1@host-server-1:port-server-1 ssh -i path-to-ssh-public-key-server-2…

イレブン ラボ ブログ – Linux 作業環境を最適化するためのヒント

1708696072
2024-02-19 11:12:15

この記事では、Linux の作業環境を最適化するためのヒントをいくつか紹介します。 ここで説明するものはすべて、私が個人的に実装し、日常的に使用しているものです。 マルチアクセスの設定を検討します SSH、コマンドラインインターフェイスをカスタマイズする CLIbash、および使用を放棄する方法 zsh など Oh My Zsh

Linux 環境での複数の SSH アクセスのセットアップ

この最初のヒントでは、次の点に焦点を当てます。 SSH。 すでに複数のアクセスがある可能性があります SSH サーバーアドレス、ユーザー、秘密鍵、公開鍵などのさまざまなログイン情報を使用します。 そしておそらくあなたは使ったでしょう SSH 以下の例のように、すべての接続情報を指定します。

ssh -i path-to-ssh-public-key user@host:port

異なるサーバーに複数のアクセス権がある場合 SSH、おそらくこれと同様のことを行う必要があります。

ssh -i path-to-ssh-public-key-server-1 user-server-1@host-server-1:port-server-1 ssh -i path-to-ssh-public-key-server-2 user-server-2@host-server-2:port-server-2 ssh -i path-to-ssh-public-key-server-3 user-server-3@host-server-3:port-server-3

少し怠け者であれば、いくつかの設定を行っているかもしれません aliases。 これは良いことですが、最適ではありません。 クライアントを構成する方法を見ていきます SSH これらすべてを簡素化するためです。 さぁ行こう !

まず、ファイルを作成します .ssh/config 次の権限を持つ: 0600 または、お好みに応じて、 - rw- --- ---。 次に、お気に入りのエディターで編集します。 ヴィム。 😉

このファイルに構成ブロックを追加します ssh 次のように :

Host <> Property value Property value

わかりますか、まったく複雑ではありません。 アカウントを使ったより具体的な例を見てみましょう Gitlab 自己ホスト型、1 つのアカウント Gitlab、アカウント Github、仮想サーバーへの 2 つのアクセス:

Host my-private-gitlab.com PreferredAuthentications publickey User git HostName my-private-gitlab.com IdentityFile ~/.ssh/id_my-private-gitlab.com Host github User git HostName github.com IdentityFile ~/.ssh/id_github.com Host gitlab PreferredAuthentications publickey User git HostName gitlab.com IdentityFile ~/.ssh/id_gitlab.com Host my-private-server-1 User root HostName my-private-server-1.com IdentityFile ~/.ssh/id_my-private-server.com Host my-private-server-2 User root HostName my-private-server-2.com IdentityFile ~/.ssh/id_my-private-server.com

ここで各構成ブロックのプロパティを設定します。 HostUserHostNameIdentityFile そして、の場合 GitlabPreferredAuthentications

そして、そこに行きます! 接続をテストすると、 ギットハブ など Gitlab、それは次のようになります:

# Test de connexion github $ ssh -i ~/.ssh/id_github.com -T [email protected] Hi nicolas-grevin! You've successfully authenticated, but GitHub does not provide shell access. $ ssh -T github Hi nicolas-grevin! You've successfully authenticated, but GitHub does not provide shell access. # Test de connexion gitlab $ ssh -i ~/.ssh/id_gitlab.com -T [email protected] Welcome to GitLab, @ngrevin! $ ssh -T gitlab Welcome to GitLab, @ngrevin!

すべてが正常に動作し、プロパティが Host 「エイリアス」として機能します SSH 特定の構成を使用できるようになります。 したがって、このコマンドは ssh -i ~/.ssh/id_gitlab.com -T [email protected] やることになる ssh gitlab.com

必要なエイリアスだけでなく、サードパーティ プログラムとの接続の問題を避けるためにホスト全体のアドレスも指定することをお勧めします。 特に、プロパティは複数の値を受け入れるためです。

さらに、構成ブロックを分割することで構成を共有できます。 以下に例を示します。

Host my-private-gitlab github gitlab my-private-gitlab.com github.com gitlab.com User git Host my-private-gitlab gitlab my-private-gitlab.com gitlab.com PreferredAuthentications publickey Host my-private-gitlab my-private-gitlab.com HostName my-private-gitlab.com IdentityFile ~/.ssh/id_my-private-gitlab.com Host github github.com HostName github.com IdentityFile ~/.ssh/id_github.com Host gitlab gitlab.com HostName gitlab.com IdentityFile ~/.ssh/id_gitlab.com* Host my-private-server-1 my-private-server-2 my-private-server-1.com my-private-server-2.com User root IdentityFile ~/.ssh/id_my-private-server.com Host my-private-server-1 my-private-server-1.com HostName my-private-server-1.com Host my-private-server-2 my-private-server-2.com HostName my-private-server-2.com

これにより、各ブロックでのプロパティの繰り返しが回避される一方で、プロパティを書き換える可能性は残ります。 これで、クライアントの構成方法がわかりました。 SSH。 さらに詳しく知りたい場合は、完全な ssh_config ドキュメントを参照してください。 man openBSD ssh_config

CLIを設定する

問題の核心に入る前に、いくつかの定義を明確にしましょう。

そして terminal コンピュータ ネットワーク (電話、コンピュータ) の末端にある物理デバイスです。 あ émulateur de terminal コマンドラインを実行してオペレーティングシステムと対話できるようにするソフトウェアです。 簡単にするために、一般的には と呼ばれます。 terminal。 そして shell オペレーティングシステムのユーザーインターフェイスを提供するソフトウェアです。 文字通り、それはシェルです(shell) 核 (kernel) リナックス。 これは 2 つの形式で見つかります。

  • CLI (Command Line Interface) これはコマンドラインインターフェースです。
  • GUI (Graphical User Interface) これはグラフィカルインターフェイスです。

したがって、これらすべてを図式化すると、次のようになります。 terminal が含まれています kernel リナックス。 の kernel を提供します shell 彼とコミュニケーションをとるために。 ザ shell GUIのいずれかにすることができます GUI コマンドラインインターフェースのいずれか CLI。 ターミナル エミュレータは、コマンド ラインを実行できるグラフィカル ソフトウェアです。

flowchart LR
    subgraph Terminal
			subgraph Kernel
		    subgraph Shell
					GUI
					CLI
				end
			end
    end

		et[Émulateur de terminal]

		GUI --> et
		et --> CLI

これで少しの汚れ落としは完了です。 良いémulateur de terminal、次のような単純で一般的な形式を使用します。 terminal。 さて、問題の核心に入りましょう。 CLIbash。 構成ファイルと、構成が失われないようにするための優れた実践方法を発見します。

Linux システムでは、知っておくべきファイルが 2 つあります。 ~/.profile (または ~/.bash_profile)など ~/.bashrc。 そして、これらが使用される目的は次のとおりです。 ファイル ~/.profile (または ~/.bash_profile Linux ディストリビューションによって異なります) は、ログインシェルを開くときに実行されます。 つまり、このファイルは、ログインしたユーザーがシェルを開いたときにのみ実行されます。 ファイル ~/.bashrc ファイルとは異なり、非ログインシェルを開いたときに実行されます。 ~/.profile。 ログインしていないユーザーに対して使用されます。

ターミナルを起動すると、ファイル ~/.profile 請求されます。 そしてファイルの中で ~/.profileを実行すると、ファイルが .bashrc 見つかった場合はロードされます。 以下にいくつかの行を示します。

if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi

そして、何が起こるかを概略的に説明すると、次のようになります。

flowchart LR
    subgraph shell
			subgraph login
				direction TB
				sl{{Start}}-->|1st load|pl[~/.profile]
				sl-->|2nd load|bl[~/.bashrc]
			end
			subgraph non-login
				direction TB
				snl{{Start}}-->|1st load|bnl[~/.bashrc]
			end
    end

これがどのように機能するかを確認したので、ここで「グッド プラクティス」を紹介します。少なくとも、再インストールの際に構成を再利用できるようにするために私が使用しているプラクティスです。 ファイルを作成します ~/.bashrc パーソナライズされたもので、さまざまなプログラムを構成し、 ~/.profile

if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi if [ -f "$HOME/.bashrc_custom" ]; then . "$HOME/.bashrc_custom" fi fi

そして、これが私のファイルの始まりです ~/.bashrc_custom :

# /* vim: set filetype=sh : */ # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] then PATH="$HOME/bin:$PATH" fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/.local/bin" ] then PATH="$HOME/.local/bin:$PATH" fi # set PATH so it includes user's private npm-global if it exists if [ -d "$HOME/.npm-global" ] then PATH="$HOME/.npm-global/bin:$PATH" fi # ...

このファイルを含む上記のグラフを取得すると、次のようになります。

flowchart LR
    subgraph shell
			subgraph login
				direction TB
				sl{{Start}}-->|1st load|pl[~/.profile]
				sl-->|2nd load|bl[~/.bashrc]
				sl-->|3rd load|bcl[~/.bashrc_custom]
			end
			subgraph non-login
				direction TB
				snl{{Start}}-->|1st load|bnl[~/.bashrc]
				snl-->|2nd load|bcnl[~/.bashrc_custom]
			end
    end

ご覧のとおり、それほど複雑なものはなく、よく考えられたスライス ロジックが組み込まれています。 この手法により、バージョン管理と構成の検索が非常に迅速に可能になります。 要旨 Github または 切れ端 Gitlabの。

同じ除算ロジックで、bash エイリアスを使用して同じことを行うことができます。 確かにファイルには ~/.bashrcファイルをロードする数行があります。 ~/.bash_aliases。 前のファイルについては、バージョン管理を行うことができ、構成を非常に迅速に見つけることができます。 要旨 Github または 切れ端 Gitlabの。

このファイルを含む上記のグラフを取得すると、次のようになります。

flowchart LR
    subgraph shell
			subgraph login
				direction TB
				sl{{Start}}-->|1st load|pl[~/.profile]
				sl-->|2nd load|bl[~/.bashrc]
				bl-->|load|cal[~/.bash_aliases]
				sl-->|3rd load|bcl[~/.bashrc_custom]
			end
			subgraph non-login
				direction TB
				snl{{Start}}-->|1st load|bnl[~/.bashrc]
				bnl-->|load|canl[~/.bash_aliases]
				snl-->|2nd load|bcnl[~/.bashrc_custom]
			end
    end

以上で、私たちの設定は終わりです CLIbash

やめてと言う zsh など オーマイザッシュ スーリナックス

使っている人もよく見かけますが、 zsh など Oh My Zsh それが何であるかを本当に理解せずに。

それで、 zsh または Z shell コマンドラインシェルです(CLI) として shbashkshash、他にもたくさんあります。 zsh に機能を追加します CLI、注文の完了、機能の追加などが含まれます。

本当にその機能を使用するつもりですか? zsh ? そんなことはないと思います! さらに、 zsh コマンド ライン インターフェイスに特定の機能を導入しているため、シェル スクリプトを作成するときに移植性の問題が発生する可能性があります (CLI)誰もが持っているわけではありません。 これは、Linux システム用に設計された、Windows ユーザーを対象としたプログラムを作成するのに少し似ています。 インストールして使用する必要がある zsh あなたが選択した場合、主にそれ自体が表示されます Oh My Zsh

使用する場合 Oh My Zsh、その後の使用 zsh は義務です。 Oh My Zsh 構成管理のフレームワークです zsh、そしてそれはいくつかの特定の機能を使用します zsh 拡張機能、テーマ、プラグインを提供します。 したがって、この場合、実際には選択肢がなく、使用する必要があります zsh。 ただし、Bash またはその他のシェルを使用したい場合は、インストールする必要はありません。 zsh または Oh My Zsh。 それは個人の好みと特定のニーズの問題です。

しかし、なぜ使用するのか Oh My Zsh ? エイリアスが 300 個あり、使用できるエイリアスは 2 つだけですか? 端末をパーソナライズするには?

同じこと、またはそれ以上のことをより簡単な方法で達成できるようにするための 2 つのことを説明します。

エイリアスを使用する

先ほども少しお話しました。 ただし、カスタマイズしたい場合は、 CLI エイリアスを使用すると、ファイルを作成するだけで済みます ~/.bash_aliases 独自のエイリアスを作成することもできます。

プラグイン Oh My Zsh ほとんどの場合、エイリアスを定義する必要がありますが、実際に何をするのかはわかりません。 プラグインを自分で見てみてください 歴史

したがって、最もよく使用するコマンドを確認し、ファイル内に独自のエイリアスを作成します。 ~/.bash_aliases

別名は次のように定義されます。

alias my_aliase_name='my_command and my args --or options'

一方では、実行するコマンドを簡素化し、他方では、必要なエイリアスを自分で定義します。 あなたには力があるのです!

⚠️ ただし、エイリアスには注意してください! エイリアスが多すぎるとエイリアスが無効になり、基本的なコマンドがわからなくなり、最低限のコマンドがインストールされているサーバーや同僚のマシンで作業しなければならない場合に道に迷ってしまう危険があります。

Starship で端末をパーソナライズ

使用する場合 Oh My Zsh 端末をパーソナライズするには、おそらく既存のテーマを使用しますか? あなたがスクリプトの専門家でない限り、 sh または zsh。 特定のテーマがどのように行われているかを見るとき、何が起こっているのか理解するには夢中になる必要があります(テーマの例) 不可知者)。

prompt_status() { local -a symbols [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}✘" [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡" [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}⚙" [[ -n "$symbols" ]] && prompt_segment black default "$symbols" }

スクリプトの専門家ではない場合は、 スターシップ.rs はあなたのためにここにあります。 Starship Rustで開発されたプログラムで、Linux、macOS、Windowsで利用可能で、ファイルで簡単にインストールおよび設定できます。 TOML。 Linux の場合、インストールするには Starship、いくつかのコマンドを実行するだけです。

curl -sS https://starship.rs/install.sh | sh #### echo 'export STARSHIP_CONFIG=$HOME/.config/starship.toml' >> ~/.bashrc echo 'export STARSHIP_CACHE=~/.starship/cache' >> ~/.bashrc echo 'eval "$(starship init bash)"' >> ~/.bashrc #### # Ou ajouter les lignes suivantes dans ~/.bashrc_custom ### if command -v starship 1> /dev/null then export STARSHIP_CONFIG=$HOME/.config/starship.toml export STARSHIP_CACHE=~/.starship/cache eval "$(starship init bash)" fi

アイコンパックもダウンロードする必要があります オタクフロント あなたがそれを望むなら。

この後は、ファイルを作成して実装するだけです ~/.config/starship.toml、バージョン管理も可能になります。 以下に、メモリ使用量、クロック、コマンド実行時間、ディレクトリのフォーマットの設定例を示します。

[memory_usage] format = "$symbol[${ram} - ${ram_pct}( | ${swap} - ${swap_pct})]($style) " threshold = 0 symbol = "󰍛 " style = "bold dimmed white" disabled = false [time] time_format = "%T" format = "[](bold yellow) [$time](yellow) " disabled = false [cmd_duration] min_time = 1_000 format = "[󰔚 $duration]($style) " disabled = false [directory] truncation_length = 10 truncate_to_repo = true format = "[$path]($style)[$lock_symbol]($lock_style) "

ターミナルは次のようになります。

ラのドキュメント は非常に豊富で、すでに開発されているさまざまなモジュールを使用して多くの可能性があります。

結論 : Linux の作業エクスペリエンスを向上させる準備ができています

端末での作業エクスペリエンスを向上させるためのヒントをいくつか紹介します。

優れた作業環境を構築するには、まだ検討すべきことがたくさんあります。 さらに詳しく知りたい場合は、 テキストエディタ 端末に統合されているものなど ネオさんの または ルナーヴィム、au 端末マルチプレクサ tmux、探検家l’熱処理による絶縁そしてもちろん、 スクリプト シェル

暗い地下室にいるひげを生やした男性でなくても、端末の制御を取り戻すことができます。 😜

情報源

#イレブン #ラボ #ブログ #Linux #作業環境を最適化するためのヒント

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。