投稿

ラベル(setting)が付いた投稿を表示しています

LinutMintでPDFからTextを作成する方法

記事の更新日:2026/09/29 評価を加筆 1.概要 PDFは汎用性が高く、様々な場面で利用されています。一番の特徴はデータのセキュリティを保つことです。Excelなどの表計算ソフトはタブを利用することで3次元的にデータを保管しています。これをPDFにすることで特定のタブのデータだけを選択して、読み出し専用のデータにすることができます。 しかし、PDFからTextを切出したい事があります。不思議なことにPDFのテキスト部分をドラッグ&ドロップでテキストに取れることもあります。しかし、何も操作できないこともあります。少しネットで調べて、PDFからTextの作成方法を実施したのでその内容を記述します。 私の評価は以下の通りです。 (1) PDFには内部にテキスト文書を保存しているものがあります (2) テキスト文書がある場合は、コマンドで簡単に取り出すことができます (3) テキスト文書がない場合、PDFをイメージに変えて、OCRで読み込みます (4) PDFは活字ですが、OCR読み込みは完全ではありません。修正が必要です 2.詳細 (1) PDF内部にText文書がある場合 PDFには種類がありますが、PDF内部にText文書があるものと、そうではないものがあります。PDF内部にText文書があるものは、比較的かんたんにPDFからTextを作成できます。 ubuntuでは、pdftotextコマンドを利用できます。 (2) PDF内部にText文書がなく、イメージファイルの場合 pdftotextを実行しても何も出力されない場合が該当します。 この場合はPDFをイメージファイル(png)に変換して、OCRソフトでTextにします。 PDFをPNGに変更するためには、pdftoppmを利用します pdftoppm -png xxxxxx.pdf yyyyyy yyyyyy.zzzzz.pngが作成されます。 pngをOCRソフトでTextを切り出すには、tesseractを利用します sudo apt install tesseract-ocr sudo apt install tesseract-ocr-jpn tesseract yyyyyy.zzzzz.png output -l jpn output.txtが作成されます。 3.所見 PDF内にTestが存在...

ubuntu/LinuxMintのshellのdash、組込shell変数の利用でbashとの違い

1.概要 ubuntuを長く利用しています。それ以前は、SlackwareとRedhat(centOS)を利用していました。どちらもbash shellを利用していました。shellは選択肢がありますが、私は標準のbash shellを愛用していました。商用Unixと異なりLinuxはbash shellであると思っていました。 shellは貝殻で、中身はkernelとの認識です。kernelと通信する中核に機能を持つものがshellであると私は思っています。Windowsの場合は、エクスプローラーがshellの機能を持ちます。Windowsの場合はmicro kernelが採用されています。 普通Linuxではbash shellを利用しているケースが多いのですが、Ubuntuはdash shellを利用していると聞いたことがありました。あまり大差はないと思って気にしたこともなかったのですが、組込shell変数の利用で差異を認識したので、その内容を記述します。 2.詳細 組込shell変数の$RANDOM利用に関してです。 terminalで処理をします。 $ echo $RANDOM 12014 乱数が普通に表示されます。 これをshell scriptに変更します test.shを作成します #!/bin/bash echo $RANDOM 実行します。 $ sh test.sh 結果は何も表示されません bashを指定して実行します /bin/bash test.sh 1521 乱数が表示されます。 shを調べてみるとdashが利用されています $ which sh /usr/bin/sh $ ls /usr/bin/sh -l lrwxrwxrwx 1 root root 4 12月 11  2024 /usr/bin/sh -> dash $ ls -l /bin/sh lrwxrwxrwx 1 root root 4 12月 11  2024 /bin/sh -> dash $ ls -l /bin/dash -rwxr-xr-x 1 root root 125688  3月 23  2022 /bin/dash $ ls -l /bin/bash -rwxr-xr-x 1 root root 1396...

ubuntu/LinuxMintでcronを利用したshutdown処理

記事の更新日:2026/09/30 評価を加筆 1.概要 ubuntu環境で長時間稼働する環境を構築したのですが、処理の起動と処理の終了を組み込む必要がありました。処理の起動はrc.localを作成して、電源オンをすることで処理の起動を組み込むことができました。処理の終了は時間指定による終了が良いと考えて、cronを組み込むことにしました。 しかし、ubuntu desktop環境を自動でshutdownするために、crontabを作成したのですがうまく行きません。root権限の設定をどのようにすると良いかがわかりませんでした。色々と試してみて実現をすることができたので、その内容と対処方法に関して記述します。 私の評価は以下の通りです。 (1) cronをroot権限で実行した経験がなかったので、はじめての経験でした (2) shtudown処理を利用者権限に設定すると、MTA導入というエラーで悩みました (3) ネットで調べても良い答えがなく、root権限の問題と気が付きました (4) sudo crontab -eの実行に気がつくまでに、少し時間が必要でした 2.詳細 普通にubuntuにloginした状態でcrontab利用し、時間指定でshutdownを動かしてみます。 $ crontab -e 設定内容は以下の通りで、利用者権限でshutdownを利用できるので、15:00にshutdownを実行して停止しそうです。 0 15 * * * shutdown -h now しかし、shutdownは実行されません。/var/log/syslogを参照すると下記ログが記録されています。 (username) CMD (shutdown -h now) (CRON) info (No MTA installed, discarding output) 参考資料を参照するとMTAを導入との記述ですが、違うような気がしました。 そこで、権限不足が理由ではないかと考えて、sudoでcrontabを作成しました。 $ sudo crontab -e 設定内容は1時間変更して、16:00にshutdown実行です。 0 16 * * * shutdown -h now これで想定通りに動作します。 3.所見 crontab内にsudoを記述することを最初に考えたのですが、...

rc.localを利用したubuntu/LinuxMintのPC起動時の処理実行

1.概要 ubuntu環境で長時間稼働する環境を構築したのですが、処理の起動と処理の終了を組み込む必要がありました。処理の終了は時間指定による終了が良いと考えて、cronを組み込むことにしました。処理の起動はrc.localを利用してPCの電源オンに合わせて処理を開始することで実現をしました。 ubuntu-22.04起動時に実行したい処理がある場合、/etc/rc.localにその内容を記述します。ネットを調べて異なる設定ファイルの記述があったのですが、ubuntu-22.04.5で従来方式で動作したのでその内容を記述します。 以前、Slackwareを利用しているときには、/etc/rc.localは既定値が用意されていて内容を修正するだけでした。ubuntuもLinuxなので同じであると思って作業を開始したのですが、/etc/rc.localが規定値で存在しません。別の手段があると考えて、アレコレ調べました。 2.詳細 /etc/rc.localを作成して、その中に実行した処理を記述後、実行権限を与えます。 $ sudo vi /etc/rc.local 内容は以下のテスト事例とします。 #!/bin/bash echo "Test rc.local" 実行権限を与えます $ sudo chmod +x /etc/rc.local /etc/rc.localが実行される背景にはsysytemdの設定が存在します。 最初の参考資料には、下記設定があり上記/etc/rc.localの設定で動作するとのことです。 /lib/systemd/system/rc-local.service 次の参考資料には、下記設定を作成して/etc/rc.localを動かすことができるとのことです。 /etc/systemd/system/myservice.service 私は最初の方式を利用しました。 3.所見 /etc/rc.localは標準で用意されていません。ファイルが存在しないのでどうしたら良いかわかりませんでした。slackwareを利用している頃は頻繁に利用していましたが、既定値で動かしたいアプリが余りなく、手作業で起動することが多かったのだと思います。実際に、やろうとしたとき、あるはずの/etc/rc.localがなかったので、ネットで時間をかけ...

shell scriptを入れ子にした場合のteeの挙動について調べました

 1. 概要 出力を分割できるteeはとても便利です。表示をしながらログファイルに出力する用途が一般的だと思います。shell script単体で処理をしている場合は問題になりませんが、shellを複数組み合わせて、大きな処理として実行する場合にteeがどのように機能するかが気になり、調べることをしました。 teeを利用して実行ログをファイルに保管することを良く実施します。このような処理をすでに組み込んでいるshell全体を更にteeを利用して実行ログをファイル保管するとどのようになるのか調べてみました。結果は、両方の機能が実行されることになり、片方の機能が無効になることはありませんでした。その内容を記述します。 2. 詳細 単純なshellをtest1.shで作成します。 #!/bin/bash echo "test1" | tee test1.log 実行すると、test1.logが出力されて、中身は下記内容になります。 test1 同じ処理をtest2.sh, test3.sh作成します。更に、test.shを下記内容で作成します。 test.shを実行することで入れ子構造でのteeの動作を確認できます。 #!/bin/bash test(){ sh test1.sh sh test2.sh sh test3.sh } test | tee test.log それでは、test.shを実行します。 まず、test.logの内容は以下のようになります。 $ test.sh test1 test2 test3 また、test1.log, test2.log, test3.logも作成されて、中身も想定した内容になります。 3.所見 入れ子(ネスティング)した場合の動作は、動かした場合と異なることがあります。shell内で、入れ子のshellの呼び出し方法にも影響します。今回はshで起動して別プロセスで試してみたので参考にしてください。 どのようなことでも実際に試験をして確かめることは大切なことだと思います。予測しない結果になることもあり、理論的に整理をしたことが間違いであったことに気がつくこともあります。しかし、実行した結果だけで判断することも問題があり、試験のミスもあるのが理由です。その意味で、過程を立てて、実際に試して、結果を見て判断するの...

ubuntu/LinuxMintでmp3 player向けのplaylistの作成

記事の更新日: 2026/08/17 1.概要 mp3 playerを利用していました。mp3 playerを利用する上で、playlistはとても便利なものです。最近あまりmp3 playerを利用していないのですが、知人からmp3のファイルを分割して欲しいとの要望があり、色々と対応する中でplaylistに関して勉強する機会になりました。 mp3 playerの代表格はappleのiTunesだと思っています。その前はカセットテープレコーダのSONYのウォークマンです。ウォークマンは長くヒットし、様々なモデルが販売されました。機器を売るSONYはモデルチェンジで販売を伸ばしたのですが、iTunesは音楽そのものを売る方法を変えてしまいました。 mp3 playerのplaylistは機器の説明書に従って作成をしていました。playlistの中に何が定義されて、どのような仕組みで再生されるかはわからずに使っていました。今回、Rhythmboxを利用して、自作したplaylistで試したので、その内容を記載します。 2.詳細 同好会のアナログ録音テープをデジタルなmp3に変換されたファイルを曲単位に分割したいとのことでした。カセットテープは長時間で劣化して、切れてしまい聞けなくなってしまいます。mp3へアナログからデジタルへ変換により、長期保存が可能になります。 デジタル化すると曲単位に選曲ができるようにしたいものですが、アナログテープには無録音部分がないので、自動分割できないことがわかり、時間で曲を分割することにしました。mp3の時間分割は参考資料を参照しました。 次に、playlistの作成方法を勉強すると、案外簡単に作成することができました。こちらも参考資料に沿って作成をしました。ubuntuのRhythmboxで作成したplaylist.m3uに従って、指定順番に聞くことができることを確認しました。 作成方法 ・拡張子が.m3uのファイルを作成する( playlist.m3u 等) ・上記ファイル内に、mp3ファイル名をフルパスネームで1行単位に記述する ・Rhythmboxなどで確認する 3.所見 mp3のプレイリストが簡単なテキストで構成されているとは知りませんでした。実際にやってみて、仕組みは理解できるものだと思います。Rhythmboxで試しながら実...

lsblkの出力がubuntu/LinuxMintで変わりました

記事の更新日: 2026/09/05 1.概要 この記事は2024年の記事です。丁度、ubuntu 22.04に本格移行をする必要に迫られて、作業を開始した時にlsblkの出力結果がubuntu 20.04と異なることがわかり、運用しているshellの見直しをした時に記述しました。ubuntu 22.04移行でがっかりした時の気持ちを残したいと思って、記事を備忘録に残すことにしました。 ubuntuのVersion移行は定期的な行事と同じです。何らかの問題が普通に起きてしまいます。特に導入手順をshellを利用した自動化を勧めていると、細かい設定がとても気になります。設定が変更されることで自動化したshellの見直しが必要になるためです。 今回はlsblkのコマンドの実行結果表示が1項目増加したために、その結果を利用した自動化shellで問題が起きてしまいました。定期的な行事とは言えますが、shellを見直すことは案外辛い作業です。 ubuntu-20.04からubuntu-22.04へ移行をするための試験PCを準備して環境構築をしています。ubuntu-20.04で利用していたlsblkコマンドを利用していたshellが正しく実行されないので調べてみると、lsblkの表示項目が1項目増えていました。その内容に関して記述します。 私の評価は以下の通りです。 (1) ubuntu 22.04からlsblkにFSVER項目が追加、使われてない気がします。 (2) 本当に必要な項目ならば、ubuntu 20.04等の過去バージョンも揃えてほしい。 2.詳細 lsblk利用してDiskのUUIDを調べていますが、ubuntu-20.04とubuntu-22.04では、FSVER項目が追加されていることに気が付きました。ヘッダー情報を記述します。 具体的なコマンドは以下の通りです。 $ lsblk -f (a) ubuntu-22.04 NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS (b) ubuntu-20.04 NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT FSVERが追加されてことで、UUIDの場所がズレてしまい処理が正しく実行されませんでした。FSVE...

uefiBIOSとLegacyBIOSの両方でbootできるmulti boot USB作成

記事の更新:2026/09/01 1.概要 LegacyBIOSとuefiBIOSではブート手順が異なります。PC機器はuefiBIOSに変わっていますが、CSMを選択できる機能があり、LegacyBIOSも現状では利用できます。2つのBoot方式に別々に対応するとUSBデバイスが増加するので何とか1このデバイスで両方をサポートできないかと考えていました。 ubuntuのresucue用途としてusb bootデバイスを作成して、BIOS PCで利用可能になりました。しかし、uefi-BIOSでは利用できないので、BIOSとuefi-BIOSの両方で利用できるmulti boot USBを作成しました。この内容を記述します。 2.詳細 参考資料にある以前作成したmicroSD方式を利用します。 (a) microSDの初期化 (non-uefi BIOS対応PCでの作業) usb変換アダプターにmicroSDを取り付けます。usb bootのubuntu liveCD(20.04.6 desktop)を利用して、起動をしてからgpartdでmicroSDのpartion tableをmsdos形式で初期化します。今回はmulti bootなので少しパーティション構成を変えます。64GBのmicroSDを設定したUSBデバイスを/dev/sddとします。 gpartdで以下のようにパーティションを作成します。 /dev/sdd1  256MB  fat32 /dev/sdd2  50GB   ext4 (b) ubuntu-20.04.6 install usb bootのubuntu liveCD(20.04.6 desktop)からinstallerを起動して、microSDのext領域(/dev/sdd2)にinstallします。bootは/dev/sddを選択します。問題なくインストールできました。 (c) 起動 non-uefi BIOSでusb boot可能なPC(私の場合は古いNotePCを利用)にusb変換アダプターにmicroSDを取り付けて、BIOSの設定をUSBに変更して起動すると、無事に起動します。 (d) Grubの設定 grub.cfgを/dev/sdd1に作成します。 # mount /de...

ubuntu/MintLinuxのscreen key boardの使い方

記事の更新日: 2026/09/23 評価を記述、参照のリンクを見直し 1.概要 GUIを利用したubuntu login時にスクリーンキーボードを利用してパスワード入力をすることができます。キーボード不調や文字配列を誤って変更した場合などに活用しています。 Loginした後に、スクリーンキーボードを利用したい場合は、ユーザー補助の設定が必要です。スクリーンキーボードの設定は少し難しいので、今回はこの内容を追加記述します。 私の評価は下記の通りです (1) screen key boardはlogin時とlogin後の使い方で異なります (2) login時はkey board設定が異なる場合にパスワード入力の支援になります (3) login後は物理的なkey boardからsoftware keyboardへの移行支援になります (4) UbuntuとLinuxMintで使い方は同じです 2.詳細 (1) login時の利用方法 ( LinuxMint / Ubuntu ) Ubuntuをインストールして再起動すると、GUIのubuntu login画面の右上に人型アイコンがあります。下三角のマークをクリックすると機能を有効化するスイッチが表示されます。今回は、スクリーンキーボードのスイッチをオンにします。見かけ上は何も変わりませんが、ユーザ名を選択するとスクリーンキーボードが表示されて、パスワードを入力できます。 このスクリーンキーボードは特殊文字も入力することができるので、最近のパスワードにも対応できている点です。英語環境の導入をしている時に日本語キーボードを利用するなど、キーボード構成が異なっている場合には、入力できる文字は範囲が広いので有効な手段となります。  (2) login後の利用方法 ( LinuxMint ) 設定→ユーザー補助→キーボードと選択します。仮想キーボードのスクリーンキーボードの有効化をオンにします。初期設定は、表示場所は画面の上部、大きさは画面の1/3、起動方法は手動です。タスクバーにアイコンがあり、「クリックでスクリーンキーボード切り替えます」とメッセージが表示されます。 タスクバーにアイコンが表示されない場合は、タスクバーを右クリック→アプレットを選択して、スクリーンキーボードにチェックが入っているか確認します。チェッ...

ubuntu/LinuxMintでdesktopの背景を変更するコマンドを試しました

1.概要 私はインストール時の設定の自動化をshellで実施しています。その中の項目の一つにデスクトップの背景を変えることをコマンド実行できないかと以前から考えていました。私はマルチブート環境を利用しているので、デスクトップの背景でどの機能を実現するパーティション区画であるかを判断して利用しており、背景をコマンド変更が必要でした。 ubuntu/LinuxMintの背景を変更する方法は、GUIで設定->背景を利用します。これをshellで実行できないかを調べて実現できたのでその内容を記述します。背景を変更するコマンドを記載している情報サイトが見つかりませんでした。しかし、「gsettingsを利用してデスクトップの設定一覧を確認する」を利用して、何が変更されているかを知る手段があることがわかり、この機能を利用して背景変更のコマンドを作成しました。 このコマンドは標準コマンドですが、環境依存の部分があるかもしれません。デスクトップの背景なので大きな影響はないと考えていますが、利用される方は十分な注意をして利用してください。 2.詳細 参考資料の「gsettingsを利用してデスクトップの設定一覧を確認する」に記載されている内容を利用して、background変更前と変更後の設定内容を調べて、diffで差分を取り、実現しました。 実現方法 参考料を参照して、現在のデスクトップの設定一覧をnow.txtに取得します。 $  for s in $(gsettings list-schemas); do gsettings list-recursively $s; done > now.txt 次に、背景を変更して、再度、現在のデスクトップ設定一覧をupd.txtに取得します。 $ for s in $(gsettings list-schemas); do gsettings list-recursively $s; done > upd.txt ここで、差分を確認して変更箇所を確認します。 $ diff upd.txt now.txt 最終的な、変更方法のshellを参考例として記述します。 #!/bin/bash BKGD="Headstock_by_Bernhard_Hanakam.jpg" URL="file:///u...

viewとvi(vim)を利用したHEX dumpの表示と修正方法

記事の更新日:2026/09/30 評価を加筆 1.概要 運用しているシステムがエラーで停止した。普通はエラー発生時のテキストデータを表示しているので、原因の特定は比較的簡単にできます。しかし、見えない文字が存在してエラーになる場合もあります。そんな場合に対処する方法がHEX表示です。 システムを運用していると想定していないデータが入力されてエラーが発生することがあります。テキスト形式のデータは目視確認することができるので、入力データはテキスト形式を多用します。しかし、テキストデータを目視しても見えない文字の影響でエラーとなる場合があります。改行コードがその例です。 目視できない文字を確認するためにはHEX表示を利用します。viやviewを利用して、HEX dump表示や修正を実施できます。viでHEX修正を実施することは滅多にありませんが、viewで内容を読みたいときはあります。操作方法は同じなのでviewを利用して表示する方法を記述します。 私の評価は以下の通りです。 (1) データ処理でエラーが発生した場合、入力データの確認が必要です (2) 入力データはテキストデータであっても、可読できない文字が存在する場合があります (3) そんな時にHEX表示を利用します (4) viを利用するとHEX表示で修正をすることができます 2.詳細 試験用のテキストファイルを作成して、viewで表示後、HEX表示モードへ変更します。更に、HEX表示モードを解除して元の表示に戻します。 (1) テスト用のファイルを作成します $ echo "0123456789" > test.txt viewで参照します。 $ view test.txt [表示内容] 0123456789 (2) HEXモードに変更します ESC :%!xxd W10: 警告: 読込専用ファイルを変更します とメッセージが表示され、HEX表示に変わります。 [表示内容] 00000000: 3031 3233 3435 3637 3839 0a              0123456789. (3) HEXモードを解除します ESC :%!xxd -r 表示が戻ります。 [表示内容] 0123456789 3.所見 データの確認には...

シェル変数にnullが入る場合の対処方法

記事の更新日:2026/09/30 評価を加筆、新しい手法を追加 1.概要 この記事は2023年の記事です。しかし、この記事は、私のシェル・プログラムのスタイルを変えた大切な記事だと思っています。もう一度、読み直し、リライトして備忘録に残すことにしました。 シェル・プログラミングに慣れてくるとVAR=$(pwd)などのように、コマンド実行結果をシェル変数に入れて処理の効率化をします。シェル・プログラミングは即時処理を実行できるので早く結果を出すには最速の方法だと思っています。 しかし、 $(...) の実行結果がNULLになってしまいシェル変数の値をifで参照するとエラーとなります。シェル変数に入っている文字数を調べることが簡単にできることがわかり、シェル変数の値がNULLの対処方法をシェル変数に設定された文字数確認で実施できます。 以前はシェル変数に固定文字を付加して、結果が固定文字と同じであると、シェル変数の値はNULLだと判断する処理をしていました。シェル変数に設定された文字数確認のほうがスマートな気がします。 ネットで調べると新しいNullの調べ方が記載されていました。-z "$VAL"という手法がありました。その内容を追加記述します。 私の評価は以下の通りです。 (1) shellコードの読みやすさは、${#VAL}が優れています (2) abc${VAL} != abcの比較も機能的に問題ありません (3) shellコードは個人ユースの場合、他の方が見ることはありません (4) 仕事でshellコードを書く場合は、${#VAL}を使うほうが良いと考えます (5) -z "$VAL"は、更に新しい手法のようです。こちらも優れています 2.詳細 (1) abc${VAL} != abc を利用する手法 シェル・プログラミングを実施すると、VAL=$(...........)にて処理結果をシェル変数に入れます。しかし、シェル変数(ここでは${VAL})に値が設定できずにNULLとなると、 それ以降に記述するif文でエラーになります。 /dev/sddが存在しない環境で下記シェルを実行します。 VAL=$(lsblk | grep sdd) if  [ ${VAL} = 1 ]; then     echo "...

ubuntu/LinuxMintでwine利用時のdesktop iconの設定方法

記事の更新日:2026/09/23 評価の記述、参照リンク先の見直し 1.概要 Wineを利用してWindows時代のGameを動かしていますが、Terminalを起動してコマンドでGameを起動することは少し面倒です。Windowsになれた方がUbuntuへ移行したときにDesktopのショートカットアイコン作成がマウスクリックだけでできないことに気付いてガッカリされることも多いと思います。ショートカットアイコンの作成方法をネットで見つけたので試してみました。その内容を記述します。 私の評価は以下の通りです。 (1) ショートカット作成はWindowsが楽で優れています (2) Ubuntu/LinuxMintでもショートカットアイコンは作れます (3) しかし、手順が複雑です (4) 作成方法をshell化することで改善はできます 2.詳細 (a) 前提条件 Wineを導入して、usernameで下記コマンドで四川省 for Winを導入されていることを前提とします。 wine Sisen213.exe インストール先を以下のように指定したとします。 C:\Game\Sisen\Sisen.exe Terminalでコマンドラインで実行する場合は以下のようになります。 wine /home/username/.wine/drive_c/Game/Sisen/Sisen.exe これをDesktop上のショートカットアイコンで起動します。 (b) 起動シェル用ディレクトリ作成 mkdir /home/username/game 上記ディレクトリにsisen.shを作成します #!/bin/bash wine /home/username/.wine/drive_c/Game/Sisen/Sisen.exe さらに、実行権限を付与します。 chmod +x sisen.sh (c) Desktop ディレクトリに定義を作成 cd /home/username/Desktop sisen.desktopを作成します。 [Desktop Entry] Name=sisen Comment=game Exec=/home/username/game/sisen.sh Terminal=False Type=Application (d) 起動許可設定 Desktop上にs...

IPアドレスをセグメント記述と数値記述に相互変換する方法

記事の更新日:2026/09/30 評価を加筆 1.概要 この記事は2022年の記事ですが、IPv4に関する情報整理をして、IPv4アドレスのドット区切りと数値IPv4アドレスの相互変換を実現処理を説明しています。IPv4は現実世界で利用されている重要な情報であり、備忘録に残すべきと考えて記事の見直しをしました。 IPアドレスはドットで区切られたIPv4アドレスが良く知られています。しかし、内部処理ではドットで区切られたIPv4アドレスを数値IPv4アドレスに変換されて利用されていることもあります。ドットで区切られた一般的なIPv4アドレスと数値IPv4アドレスの変換について、簡単な処理を作成したので、その内容を記述します。 私の評価は以下の通りです。 (1) IPv4アドレスはドット区切りが一般的ですが、数値のIPアドレスもあります (2) 両者を相互変換する処理を作成しました (3) IPアドレスは国別に配布されています (4) 国別に配布されたIPアドレスの調べ方を記述しています。案外、細かく分かれています 2.詳細 (1) 一般的なIPv4アドレスと数値IPv4アドレスの相互変換(shell版) IPアドレスの配布はセグメント単位です。IPアドレスがIPアドレスセグメントに含まれているかを調べる必要がありますが、IPv4のIPアドレスはドットで分割されたアドレスです。例えば、192.168.10.1などです。しかし、この表記の場合、あるIPアドレスがIPアドレスの範囲(192.168.9.0 - 192.168.10.255)に含まれていることを調べるには不便です。そこで、IPアドレスを10進数に変換してから調べます。 192.168.9.0     =>  3232237824 192.168.10.1    =>  3232238081 192.168.10.255  =>  3232238335 上記結果から数値化することで、大小比較が容易できます。そこで、IPアドレスを10進数に変換する処理をshellで作成しました。今回はその内容を記述します。 作成したshell (a) ipから10進数(ip2dec.sh) #!/bin/bash ip2d...