Bashでファイルを読み書きする
Bashを使用してスクリプトを作成している場合、ファイルからデータを読み取ったり、ファイルにデータを書き込んだりする必要がある場合があります。ファイルに構成オプションが含まれている場合もあれば、ユーザーがアプリケーションで作成しているデータである場合もあります。言語ごとにこのタスクの処理方法は少し異なります。この記事では、Bashやその他のPOSIXシェルを使用してデータファイルを処理する方法を示します。
Linuxを使用している場合は、おそらくすでにBashを使用しています。そうでない場合は、ソフトウェアリポジトリで見つけることができます。
macOSでは、実行しているmacOSのバージョンに応じて、デフォルトのターミナル(BashまたはZsh)を使用できます。
Windowsでは、Microsoftが公式にサポートしているWindows Subsystem for Linux(WSL)など、Bashを体験する方法がいくつかあります。
Bashをインストールしたら、お気に入りのテキストエディターを開いて、コーディングの準備をします。
Bashでファイルを読み取る
シェルであることに加えて、Bashはスクリプト言語です。 Bashからデータを読み取るには、いくつかの方法があります。ある種のデータストリームを作成して出力を解析するか、データをメモリにロードすることができます。どちらも情報を取り込むための有効な方法ですが、それぞれにかなり特定の使用例があります。
Bashでファイルをソースする
Bashでファイルを「ソース」する場合、Bashに、確立されたデータモデルに適合できる有効なデータが含まれていることを期待して、ファイルの内容を読み取らせます。古いファイルからデータを取得することはありませんが、この方法を使用して構成ファイルと関数を読み取ることができます。
たとえば、example.sh
というファイルを作成します これを入力します:
#!/bin/sh
greet opensource.com
echo "The meaning of life is $var"
コードを実行して失敗することを確認します:
$ bash ./example.sh
./example.sh: line 3: greet: command not found
The meaning of life is
Bashにはgreet
というコマンドがありません 、そのため、その行を実行できず、var
という変数のレコードがありません。 、だから人生の既知の意味はありません。この問題を修正するには、include.sh
というファイルを作成します :
greet() {
echo "Hello ${1}"
}
var=42
example.sh
を修正します source
を含めるスクリプト コマンド:
#!/bin/sh
source include.sh
greet opensource.com
echo "The meaning of life is $var"
スクリプトを実行して、動作することを確認します:
$ bash ./example.sh
Hello opensource.com
The meaning of life is 42
greet
コマンドはinclude.sh
で定義されているため、シェル環境に取り込まれます ファイル、そしてそれは引数(opensource.com
この例では)。変数var
も設定およびインポートされます。
データをBashに「入れる」もう1つの方法は、データをデータストリームとして解析することです。これを行うには多くの方法があります。 grep
を使用できます またはcat
または、データを取得してstdoutにパイプするコマンド。または、Bashに組み込まれているリダイレクトを使用することもできます。リダイレクト自体はあまり便利ではないため、この例では、組み込みのecho
も使用します。 リダイレクトの結果を出力するコマンド:
#!/bin/sh
echo $( < include.sh )
これをstream.sh
として保存します それを実行して結果を確認します:
$ bash ./stream.sh
greet() { echo "Hello ${1}" } var=42
$
include.sh
の各行 ファイルの場合、Bashはその行を端末に出力(またはエコー)します。最初に適切なパーサーにパイプすることは、Bashでデータを読み取るための一般的な方法です。たとえば、しばらくの間、include.sh
キーと値のペアが等しい(=
で区切られた)構成ファイルです。 ) サイン。 awk
で値を取得できます またはcut
:
#!/bin/sh
myVar=`grep var include.sh | cut -d'=' -f2`
echo $myVar
スクリプトを実行してみてください:
$ bash ./stream.sh
42
Bashを使用してファイルにデータを書き込む
ユーザーがアプリケーションで作成したデータを保存する場合でも、ユーザーがアプリケーションで行ったことに関するメタデータ(たとえば、ゲームの保存や最近再生した曲)を保存する場合でも、後で使用するためにデータを保存する理由はたくさんあります。 Bashでは、一般的なシェルリダイレクトを使用してデータをファイルに保存できます。
たとえば、出力を含む新しいファイルを作成するには、単一のリダイレクトトークンを使用します。
#!/bin/sh
TZ=UTC
date > date.txt
スクリプトを数回実行します:
$ bash ./date.sh
$ cat date.txt
Tue Feb 23 22:25:06 UTC 2021
$ bash ./date.sh
$ cat date.txt
Tue Feb 23 22:25:12 UTC 2021
データを追加するには、ダブルリダイレクトトークンを使用します:
#!/bin/sh
TZ=UTC
date >> date.txt
スクリプトを数回実行します:
$ bash ./date.sh>
$ bash ./date.sh
$ bash ./date.sh
$ cat date.txt
Tue Feb 23 22:25:12 UTC 2021
Tue Feb 23 22:25:17 UTC 2021
Tue Feb 23 22:25:19 UTC 2021
Tue Feb 23 22:25:22 UTC 2021
Bashは、いくつかの基本的な概念だけで複雑なプログラムを作成できるため、習得が容易であることに優れています。完全なドキュメントについては、GNU.orgの優れたBashドキュメントを参照してください。
-
Rubyでファイルを読み書きする方法(例付き)
今日は、Rubyでファイルを読み書きして、コンテンツを抽出し、新しいファイルを作成し、必要な情報を見つける方法を学びます。 これから説明します : コンテンツ 1Rubyでファイルを読み取る方法 2Rubyでファイルに書き込む方法 3つのRubyファイルメソッド 4つのディレクトリ操作 5FileUtilsモジュールの使用方法 6まとめ 6.1関連 やってみましょう! Rubyでファイルを読み取る方法 次のようにRubyでファイルを読み取ることができます: ファイルを開く 、open メソッド。 ファイルを読む 、ファイル全体、行ごと、または特定のバイト数。 ファイルを
-
Windows 10 でファイル履歴を使用してデータを保存および復元する方法
ハードドライブの故障、停電、その他の問題などの予期しない状況から重要なファイルやドキュメントを保存することがいかに重要であるかを理解しています.できれば、データを定期的にバックアップする必要があります。ただし、Windows OS について言えば、すべての重要なファイルを USB ドライブ (少量のデータの場合) やハード ドライブ (大量のデータの場合) などの外部ストレージ デバイスに定期的にコピーできます。気楽な人は、毎日 (または好みに応じて) クラウド ストレージにデータを自動的にバックアップできるソフトウェアを購入できます。一方、「ファイル履歴」と呼ばれる Windows 10 の