-
Linuxシェルスクリプトで配列を操作する方法 – パート8
配列という概念がないプログラミング言語は考えられません。実装方法は言語ごとに異なりますが、配列は類似したデータも異なるデータも、ひとつのシンボリックな名前のもとにまとめて管理できる強力な仕組みです。 本記事はシリーズ第8回として、シェルスクリプトにおける配列の使い方を、実際に動かせるサンプルスクリプトとともにわかりやすく解説します。 配列の初期化と使い方 最近のバージョンのbashは1次元配列をサポートしています。配列はシェル組み込みコマンドのdeclareを使って明示的に宣言できます。 declare -a var ただし、必ずしも上記のように宣言する必要はありません。次のように、個々の要素
-
Linuxシェルの基礎とシェルスクリプト入門のポイント – パートI
百聞は一見に如かず——以下の図を見れば、Linuxの仕組みがひと目でわかります。 関連記事 シェルプログラミングを学べる5つのシェルスクリプト – パートII Linux BASHスクリプティングの世界を旅する – パートIII Linuxシェルの基礎用語 シェル(Shell): ユーザーとオペレーティングシステム(OS)をつなぐコマンドラインインタプリタ。コマンドの実行や、テキスト形式のスクリプト作成が可能です。 プロセス(Process): ユーザーがシステム上で実行するあらゆるタスクのこと。単なる「タスク」より少し複雑な概念です。 ファイル(File): ハードディスク(HDD)上
-
direnv – Linuxでプロジェクト固有の環境変数をスマートに管理する方法
direnvは、LinuxやmacOSなどのUNIX系オペレーティングシステムで利用できる、シェル向けの便利なオープンソース拡張ツールです。単一の静的実行ファイルとしてコンパイルされており、bash、zsh、tcsh、fishなど、主要なシェルを幅広くサポートしています。 direnvの主な目的は、~/.profileなどのシェル起動ファイルを汚すことなく、プロジェクト固有の環境変数を管理できるようにすることです。現在いるディレクトリに応じて環境変数を自動的に読み込み・解除する、新しい仕組みを実装しています。 SaaSアプリケーションの設計手法として知られる12factor(12ファクター・ア
-
Marcel – Linux向けのよりモダンな新しいシェル
Marcelは新世代のシェルです。多くの点で従来のシェルと似ていますが、いくつかの点でまったく異なるアプローチを採用しています。パイプ処理: 従来のシェルは、あるコマンドの出力を別のコマンドの入力へテキストとして渡すためにパイプを使います。一方Marcelは、文字列ではなく構造化データをパイプします。Pythonとの統合: MarcelはPythonで実装されており、さまざまな形でPythonの機能を利用できます。コマンドにちょっとしたロジックが必要なときも、Pythonで自然に記述できます。スクリプティング: Marcelはスクリプティングにユニークなアプローチを取っています。もちろん、ma
-
LinuxでSSHパスワードレスログインを設定する方法【3つの簡単なステップ】
SSH(Secure Shell)は、リモートサーバーにログインしてコマンドやプログラムを実行するために広く使われているオープンソースのネットワークプロトコルです。また、SCP(Secure Copy)コマンドやrsyncコマンドを使って、ネットワーク経由で安全にファイルを転送する目的でも利用されています。 本記事では、CentOS、Fedora、Rocky Linux、AlmaLinuxなどのRHEL系ディストリビューション、およびUbuntu、MintなどのDebian系ディストリビューションにおいて、SSH鍵認証を使用してパスワード入力なしでリモートのLinuxサーバーに接続できるように
-
Linuxでシェルスクリプトを作成する方法【初心者向け基本ガイド】
シェルスクリプトの作成は、Linuxユーザーが必ず身につけておきたい最重要スキルのひとつです。シェルスクリプトを活用すれば、手作業で一行ずつ実行すると面倒な反復タスクを効率的に自動化できます。このチュートリアルでは、すべてのLinuxユーザーが押さえておくべき基本的なシェルスクリプトの操作方法を、実例とともにわかりやすく解説します。1. 簡単なシェルスクリプトを作成するシェルスクリプトとは、ASCIIテキストで構成されたファイルのことです。まずはテキストエディタを使って、簡単なシェルスクリプトを作成してみましょう。テキストエディタにはコマンドライン型とGUI型のさまざまな種類がありますが、本ガ
-
Bashの特殊変数「$$」と「$BASHPID」の違いを徹底解説
シェルスクリプトの作業中に、Bashの特殊変数 $$ と $BASHPID の間に大きな動作の違いがあることに気づきました。Linux上で実行されるすべてのプロセスにはプロセスID(PID)が割り当てられ、OSはこのIDをもとにプロセスを管理しています。 関連記事: Bashにおけるソース読み込み(source)とフォーク(fork)の違いを学ぶ 同様に、あなたが開いているBashターミナルのセッションにもプロセスIDが割り当てられます。そして、現在のシェルのプロセスIDを格納する特別な変数として $$ と $BASHPID の2つが用意されています。 現在のシェルのPIDを確認する まずは以
-
Bashの「実行」と「source」の違いを徹底解説!シェバン・フォーク・環境変数の仕組み
この記事では、Bashでスクリプトを実行する場合とsourceコマンドで読み込む場合の違いについて、内部で何が起こっているのかを詳しく解説します。まずは、スクリプトの呼び出し方によってプログラムがどのように処理されるのかを理解していきましょう。 補足: スクリプトに拡張子を付けるかどうかは動作に影響しません。拡張子がなくても問題なく実行できます。 シェバン(#!)とは 基本的に、すべてのスクリプトはシェバン(#!)と呼ばれる行から始まります。Bashでは#(ハッシュ)記号はコメントとして解釈されますが、シェバンには特別な意味があります。シェバンは、指定されたインタプリタにプログラムの実行を委ね
-
シェルスクリプトでヒアドキュメント(Heredoc)を使いこなす方法
ヒアドキュメント(Heredoc)とは、特別なコードブロックとして扱われる入力やファイルストリームのリテラルのことです。このコードブロックはコマンドへ渡されて処理されます。ヒアドキュメントはUNIXシェルに由来する機能で、sh、tcsh、ksh、bash、zsh、cshなど主要なLinuxシェルで利用できます。さらに、Perl、Ruby、PHPといった他のプログラミング言語でも同様の機能がサポートされています。 ヒアドキュメントの基本構造 ヒアドキュメントは、2つの山括弧 (<<) の後にデリミタ(区切りトークン)を続けて記述します。そして、開始時に使ったのと同じデリミタでコードブ
-
Bashスクリプトでwhileループを使ってファイルを読み込むさまざまな方法
この記事では、Bashスクリプトでwhileループを使ってファイルを読み込む方法について詳しく解説します。ファイルの読み込みはプログラミングにおいて非常によく使われる操作であり、複数の方法とそれぞれの効率性を理解しておくことが重要です。Bashでは1つのタスクをさまざまな方法で実現できますが、常に最適な手段が存在するため、それを選ぶようにしましょう。whileループの基本ファイルの内容を読み込む方法を見る前に、まずwhileループの仕組みを簡単に復習しておきましょう。whileループは条件を評価し、条件が真である限り、指定されたコードブロックを繰り返し実行します。while [ CONDITI
-
【bash入門】シェルスクリプトでuntilループを使う方法
bashにはfor、while、untilという3つのループ構文が用意されています。それぞれ構文や動作は異なりますが、いずれも特定の条件式を評価しながらコードブロックを繰り返し実行するための仕組みです。 untilループは、条件式が「偽(false)」と評価されている間、コードブロックを実行し続けます。これはwhileループとは正反対の動作です。whileループは条件式が「真(true)」である間にコードブロックを実行するのに対し、untilループはその逆の挙動を取ります。 untilループの基本構文 until [ expression ] do code block ... ...
-
シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法
この記事では、bashスクリプトにおけるbreakとcontinueの使い方を詳しく解説します。bashには主に3種類のループ構文(for、while、until)が用意されており、breakとcontinueはbashの組み込みコマンドとして、ループの流れを制御するために使われます。この概念はPythonをはじめとする人気プログラミング言語にも存在するため、覚えておくと非常に役立ちます。 $ type -a break continue breakステートメントでループを抜ける breakステートメントを実行すると、その時点でループから抜け出し、制御はループの次のステートメントへ移ります
-
【初心者向け】Gitのインストールと初回セットアップ完全ガイド
Gitは、無料で利用できるオープンソースの分散型バージョン管理システムです。 Gitとは 現在、Gitは世界で最も広く利用されているモダンなバージョン管理システムです。Linuxカーネルの生みの親として知られるLinus Torvalds氏によって2005年に開発されたオープンソースプロジェクトで、今日に至るまで活発にメンテナンスが続けられています。 SVNやCVSといった従来の中央集権型バージョン管理システムと異なる最大の特徴は、Gitが分散型であるという点です。すべての開発者がコードリポジトリの完全な履歴をローカル環境に保持できるため、ネットワーク接続がない状況でも柔軟に作業を進められます
-
GitHubとGitLabのリポジトリを一括クローン・バックアップするBashワンライナーの作り方
何時間もかかる退屈な作業を、たった1行のエレガントなBashコマンドで自動化できることほど爽快なものはありません。 最近、BashスクリプトでノートPCの環境を自動再構築する試みの一環として(その記事は後日公開予定)、新しいマシンに自分のGitHubリポジトリを手軽にクローンする方法を探していました。調査の末、それを実現するワンライナーを書くことができました。 さらに「卵を同じカゴに入れるな」の精神に従い、GitLab側にバックアップを自動作成・プッシュする別のワンライナーも作りました。以下がその内容です。 すべてのGitHubリポジトリをクローンするBashワンライナー まず注意点として、ク
-
DotfileとBashスクリプトだけで新しいUbuntuデスクトップをセットアップする方法
GitHub上のオープンソースファイルを見るのが楽しみな理由のひとつは、.bashrcなどのdotfileの設定方法といった、一見地味な作業を他の人たちがどうこなしているのかを覗き見できる点にあります。Linuxを使い始めた頃ほど「ライシング(ricing)」に熱中しなくなったものの、見た目と動作速度を向上させてくれる設定を見つけると、今でもワクワクします。 最近、そんな発見がいくつもありました。特にTom Hudson氏のdotfilesです。Tom氏はスクリプト化がお好きなようで、シンボリックリンクの自動作成や、Ubuntuリポジトリのアプリケーションなどのインストールまで自動化しています
-
.bashrcを活用して、半分のキーストロークで2倍の作業を実現する方法
以前「BashスクリプトでUbuntuをセットアップする方法」に関する記事の中で、.bashrcの魔法について少しだけ触れました。しかしそれではその魅力を十分にお伝えできなかったため、このBash設定ファイルで何ができるのか、もう少し詳しく解説する記事を書くことにしました。現在の私の設定はワークフローを大幅に改善し、設定なしの場合と比べて50%以上のキーストロークを節約してくれています!ここでは、より少ないキー入力で効率化を図るためのエイリアス、関数、プロンプト設定の具体例を見ていきましょう。Bashエイリアス上手に書かれた.bashrcは、膨大なキーストロークを節約できます。文字通りの意味で
-
GitHub ActionsとPagesを使ってイベントデータを公開・活用する方法
GitHub上で開発を行うチームにとって、イベントデータは円滑なコラボレーションに欠かせない存在です。Issue、プルリクエスト、コメントとして記録されたデータは、プロジェクトを理解するうえで重要な情報源となります。GitHub Actionsが一般提供されたことで、リポジトリ内のGitHubイベントデータにプログラムからアクセスし、保存できるようになりました。データをリポジトリ自体の一部にすることで、GitHubの外部にもデータを保全できます。さらに、そのデータをGitHub PagesのようなフロントエンドのWebサイトで表示することも可能になります。そして、私のように90年代風のゲストブ
-
Bashとシェルの展開機能で実現する「怠惰な」リスト作成術
またこの季節がやってきました!お店にカラフルでキラキラ光るプラスチックの飾りが並び始めると、誰もが少し浮かれた気分になります。つまり、ショッピングに出かけましょう、ということです。そう、ホリデーシーズンのプレゼント選びです!(自分への贈り物も、厳密には立派な贈り物の一種ですからね。) 買い物が完全に暴走しないように、プレゼントのリストをいくつか作っておきましょう。Bashがその手助けをしてくれます。 ブレース展開 これらはブレース(波括弧)ではありません:() これらでもありません:[] これこそがブレースです:{} ブレースは、その間に見つけた任意の文字列に対して何らかの処理を行うようBas
-
コマンドラインで改行を出力する方法:echoとprintfの正しい使い方
意外に思われるかもしれませんが、コンピュータに人間が読める形式の出力をさせるのは、決して簡単なことではありません。標準ストリーム、特に標準出力(stdout)の導入により、プログラム同士がプレーンテキストのストリームでやり取りできるようになりました。しかし、そのstdoutを人間にとって読みやすい形に整えて表示するのは、また別の話です。ビデオディスプレイにおけるASCII文字の活用から、echoやprintfといった現代のシェルコマンドに至るまで、コンピューティングの歴史を通じてこの問題の解決が試みられてきました。こうした進歩の道のりは決して平坦なものではありませんでした。ターミナルへ出力を表
-
Linuxコマンド入門:知っておくべき基本のBashコマンドラインヒント集
Linuxには膨大な数のコマンドが用意されていますが、実際に日常的に使われているのはその一部だけです。この記事では、ターミナルで頻繁に利用されるLinuxコマンドを中心に、初心者でもすぐに活用できる基本的なコマンドラインのヒントをわかりやすく解説します。 コマンドラインを使いこなすための時短テクニック まずは、コマンドライン操作をより快適にするための便利な小技から紹介します。 Tabキーによる自動補完:コマンドやファイル名を途中まで入力したらTabキーを押しましょう。入力した文字列で始まる候補が自動的に表示され、入力の手間とミスを大幅に減らせます。 履歴検索:Ctrl + R を押してキー