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

DotfileとBashスクリプトのみを使用して新しいUbuntuデスクトップをセットアップする方法

GitHubのオープンソースファイルで最も気に入っていることの1つは、 .bashrc の設定など、他の人がどのように(一部の人は何と呼ぶか​​もしれませんが)ありふれたことをしているのかを確認できることです。 およびその他のドットファイル。 Linux側に最初に来たときほどライシングに熱心ではありませんが、物事をより美しく、より速く、したがってより良くする構成設定を見つけたとき、私はまだかなり興奮しています。

私は最近、特にトムハドソンのドットファイルでそのようなものにいくつか遭遇しました。トムはスクリプトを書くのが好きなようです。その中には、シンボリックリンクの自動設定や、Ubuntuリポジトリアプリケーションやその他のプログラムのインストールなどがあります。これは私に考えさせました。現在のマシンを複製するために、新しいマシンのセットアップを自動化できますか?

一般的に、それらがどのように機能するかを確認するために物事を分解する傾向があるので、私は時々ラップトップを台無しにしたことを知っています。 (通常、私が家から離れていて、バックアップハードドライブがそうではないとき。)私のコンピュータが以前の自己のシェルになるというまれですが本当に不便な状況では(ba-dum-ching)それはかなりいいでしょう私が好きなように、HumptyDumptyを元に戻すための高速で簡単な方法を用意します。

ディスクイメージを作成して後で復元するのとは対照的に、bashスクリプトのコレクションは、作成、保守、および移動が簡単です。それらは特別なユーティリティを必要とせず、外部輸送方法のみを必要とします。バントケーキ全体ではなく、レシピを渡すようなものです。 (うーん、ケーキ。)

さらに、このような機能は、仮想マシン(VM)、または仮想プライベートサーバー(VPS)をセットアップするときに非常に役立ちます。 (どちらも、私がこれを書いた今、おそらく私のより破壊的な実験のためのより寛容な目標を作るでしょう…生きて学びましょう!)

さて、いくつかのgrepingとGooglingと掘り下げた後、私はこれを行うことができる一連のスクリプトを手に入れました:

DotfileとBashスクリプトのみを使用して新しいUbuntuデスクトップをセットアップする方法

ここでセットアップのビデオをご覧ください。

これは、起動可能なUSBからロードされた、新しいUbuntuデスクトップでのセットアップスクリプトのテスト実行の最後です。すべてのプログラムと設定が3分以内に復元されました!

この投稿では、bashスクリプトを使用してUbuntuデスクトップ(私の場合はUbuntu LTS 18.04)を実行しているコンピューターの自動セットアップを実現する方法について説明します。対象となる情報の大部分は、すべてのLinuxデスクトップフレーバーに適用できますが、構文が異なる場合があります。 bashスクリプトは、ドットファイルのリンク、Ubuntuなどからのソフトウェアのインストール、デスクトップ環境のセットアップという3つの主要な領域をカバーしています。これらの各領域について説明し、重要な部分を確認して、独自のスクリプトの作成を開始できるようにします。

ドットファイル

ドットファイルは、ほとんどのLinux愛好家が構成ファイルと呼ぶものです。これらは通常、ユーザーのホームディレクトリにあります(組み込み変数 $ HOME を使用したbashスクリプトで示されます)。 )そして、あらゆる種類のプログラムの外観と動作を制御します。ファイル名はで始まります。 、Linuxの隠しファイル(したがって「ドット」ファイル)を示します。ここにいくつかの一般的なドットファイルとそれらが役立つ方法があります。

.bashrc

.bashrc fileは、起動時に対話型の非ログインシェルによって実行されるコマンドのリストです。インタラクティブシェルと非インタラクティブシェルは少し混乱する可能性がありますが、ここで心配する必要はありません。私たちの目的のために、新しいターミナルを開いてプロンプトを表示し、そこにコマンドを入力できるときはいつでも、 .bashrc 実行されました。

このファイルの行は、キーストロークを減らすエイリアスを作成するか、有用な情報を含む有用なプロンプトを表示することにより、ワークフローを改善するのに役立ちます。 Eddieのようなユーザー作成プログラムを実行することもできます。その他のアイデアについては、私の .bashrcをご覧ください。 GitHubのファイル。

.vimrc

.vimrc dotfileは、すべてのテキストエディタのチャンピオンであるVimを構成します。 (キーボードショートカットの機能をまだ使用していない場合は、Vimを学ぶための楽しいゲームを強くお勧めします。)

.vimrc内 、表示設定、色、カスタムキーボードショートカットなどのエディター設定を設定できます。あなたは私の.vimrcを見ることができます GitHubで。

.gitconfig など、使用するプログラムによっては、他のドットファイルが役立つ場合があります。 または.tmux.conf 。 GitHubでドットファイルを探索することは、何が利用可能で有用であるかを理解するための優れた方法です!

ドットファイルのリンク

スクリプトを使用して、すべてのドットファイルのシンボリックリンクまたはシンボリックリンクを作成できます。これにより、すべてのファイルを中央リポジトリに保持して、簡単に管理できるようにすると同時に、プログラムが構成ファイルの検出を期待する場所に一種のプレースホルダーを提供できます。これは通常、常にではありませんが、ユーザーのホームディレクトリです。たとえば、ドットファイルはGitHubに保存しているので、〜/ github / dotfiles /のようなパスのディレクトリに保存します。 ファイル自体はシンボリックリンクされているため、〜/ .vimrcのようなパスになります。 。

プログラムで既存のファイルとシンボリックリンクをチェックして処理し、新しいものを作成するには、このエレガントなシェルスクリプトを使用できます。トムのセットアップスクリプトから露骨にコアを盗んだという理由だけでそれを褒め称えているので、それがどれほど美しいかは信用できません。

symlink.sh スクリプトは、 $ HOME内の各ドットファイルのシンボリックリンクを作成しようとすることで機能します 。最初に、シンボリックリンクがすでに存在するかどうか、または同じ名前の通常のファイルまたはディレクトリが存在するかどうかを確認します。前者の場合、シンボリックリンクが削除されて再作成されます。後者の場合、ファイルまたはディレクトリの名前が変更され、シンボリックリンクが作成されます。

ソフトウェアのインストール

シェルスクリプトを探索することのすばらしい点の1つは、コマンドラインだけを使用してどれだけ達成できるかを発見することです。コンピューターに最初に触れたのはグラフィカルオペレーティングシステムでしたが、ターミナルでの作業は非常に高速でした。

Ubuntuでは、必要になる可能性のあるほとんどのプログラムは、デフォルトのUbuntuソフトウェアリポジトリから入手できます。通常、これらはコマンド apt search で検索します。 sudo apt install を使用してインストールします 。必要なソフトウェアの中には、デフォルトのリポジトリにないものや、最新バージョンでは提供されていないものがあります。このような場合でも、PPAまたはパーソナルパッケージアーカイブを使用して、これらのプログラムをUbuntuにインストールできます。選択するPPAが公式ソースからのものであることに注意する必要があります。

必要なプログラムがデフォルトのリポジトリに表示されない場合、またはPPAがないように見える場合でも、コマンドラインからインストールできる可能性があります。 「インストールコマンドライン」をすばやく検索すると、いくつかの回答が得られるはずです。

bashスクリプトは、ターミナルで個別に実行できるコマンドのコレクションにすぎないため、必要なすべてのプログラムをインストールするスクリプトを作成するのは、すべてのコマンドをスクリプトファイルに入れるのと同じくらい簡単です。 aptinstall.shによってインストールされるデフォルトのリポジトリ間でインストールスクリプトを整理することを選択しました スクリプト、および外部ソースを含むプログラムは、私の programs.shで処理されます スクリプト。

デスクトップ環境のセットアップ

(意図的またはその他の方法で)新しいデスクトップを入手した最近の機会では、すべてのデスクトップ環境設定を記憶し、見つけて、変更するのにかかる時間を常に忘れているようです。キーボードショートカット、ワークスペース、サウンド設定、ナイトモード…合計します!

ありがたいことに、これらの設定はすべて非グラフィック形式でどこかに保存する必要があります。つまり、それがどのように行われるかを知ることができれば、bashスクリプトを使用して設定を簡単に操作する方法を見つけることができるでしょう。ターミナルコマンドgsettingslist-recursivelyを見よ 。

GNOMEデスクトップ環境にはたくさんの設定があります。 less gsettingslist-再帰的に|少ない 。または、探しているものがわからない場合は、 grepを使用できます。 :gsettingslist-再帰的に| grep'キーボード'

gsettings setを使用して設定を操作できます 指図。必要な設定の構文を見つけるのが難しい場合があるため、最初にスクリプトを作成するときは、GUIを使用して変更を加えてから、 gsettingsを見つけることをお勧めします。 変更した行とその値を記録します。

いくつかのインスピレーションについては、私の desktop.shをご覧ください。 GitHubの設定スクリプト。

すべてをまとめる

モジュラースクリプト(1つはシンボリックリンク用、2つはプログラムのインストール用、もう1つはデスクトップ設定用)があると、整理された状態を維持し、自動設定のすべてではなく一部を実行できるようになります。たとえば、コマンドラインのみを使用するVPSを設定する場合、グラフィカルプログラムやデスクトップ設定をわざわざインストールする必要はありません。

ただし、すべてのスクリプトを実行したい場合は、1つずつ実行するのは少し面倒です。ありがたいことに、bashスクリプト自体はターミナルコマンドで実行できるため、別のマスタースクリプトを記述して、すべてを実行できます。

新しいUbuntuデスクトップマシンのセットアップを処理するためのマスタースクリプトは次のとおりです。

#!/bin/bash

./symlink.sh
./aptinstall.sh
./programs.sh
./desktop.sh

# Get all upgrades
sudo apt upgrade -y

# See our bash changes
source ~/.bashrc

# Fun hello
figlet "... and we're back!" | lolcat

私は適切な措置のためにアップグレードラインを投入しました。新しいデスクトップにインストールされているプログラムに最新のアップデートがあることを確認します。これで、単純な単一のbashコマンドですべてが処理されます!

お気づきかもしれませんが、デスクトップは見た目も使い勝手もよくなっていますが、これらのスクリプトは1つの非常に重要な領域であるファイルをカバーしていません。うまくいけば、何らかの形の信頼できる外部ハードウェアを含むもののバックアップ方法があります。そうでない場合で、GitHubやGitLabなどの外部リポジトリホストに作業を配置する傾向がある場合は、GitHubリポジトリをbashワンライナーで自動的に複製してバックアップする方法があります。

ただし、外部リポジトリホストに依存しても、100%のカバレッジは提供されません。その結果、外部でホストされているリポジトリ(プライベートまたはその他)に配置しないファイルはプルできません。秘密鍵やシークレットなど、インクルードされたファイルから生成できないGit無視オブジェクトは、再作成されません。ただし、これらのファイルは十分に小さいため、暗号化された2台のUSBフラッシュドライブにまとめて収めることができます(秘密鍵のバックアップがない場合は、最初に行う必要がありますか?)

そうは言っても、この投稿が、ドットファイルとbashスクリプトが新しいデスクトップのセットアップを自動化するのにどのように役立つかについて少なくともある程度のインスピレーションを与えてくれることを願っています。便利だと思う設定を思いついた場合は、ドットファイルを共有して他の人もそれらを見つけられるようにしてください!


  1. Bash-it –スクリプトとエイリアスを制御するためのBashフレームワーク

    Bash-it は、 Bash 3.2+用のコミュニティBashコマンドとスクリプトのバンドルです。 、オートコンプリート、テーマ、エイリアス、カスタム関数などが付属しています。日常業務用のシェルスクリプトとカスタムコマンドを開発、保守、使用するための便利なフレームワークを提供します。 日常的にBashシェルを使用していて、すべてのスクリプト、エイリアス、関数を追跡する簡単な方法を探している場合は、 Bash-it あなたのためです! 〜/ binの汚染をやめましょう ディレクトリと.bashrc ファイル、フォーク/クローンBash-それをハッキングし始めます。 LinuxにBash-

  2. UbuntuLinuxをアップデートする方法[サーバーとデスクトップ]

    デスクトップでUbuntuLinuxを実行している場合は、組み込みの更新ツールを使用して更新するように定期的に求められます。しかし、Ubuntu Serverを使用している場合、または保留中の更新を手動で確認して実行したい場合はどうなりますか? このチュートリアルでは、デスクトップとサーバーでUbuntuLinuxOSを更新するために必要な手順について説明します。しかし、最初に、いくつかの関連記事: aptとapt-getコマンド–違いは何ですか? 「lsb_release」を使用してUbuntuLinuxでオペレーティングシステムのバージョンを確認します。 前文 すべてのパッケージ管