stringsコマンド

はじめに こんにちは!今回はstringsコマンドについて解説します。 stringsは、バイナリファイルから印字可能な文字列を抽出するコマンドです。実行ファイルやライブラリファイルに埋め込まれた文字列を確認できます。 セキュリティ調査やプログラム分析で、めっちゃ活躍しますよ。 stringsコマンドとは stringsは、ファイル内にある人間が読める文字列(ASCII文字)を抽出して表示する外部コマンドです。 主な機能: 文字列抽出 - バイナリファイルから読める文字を抽出 最小長指定 - 最小の長さを指定可能 オフセット表示 - ファイル内の位置を表示 複数フォーマット - 異なるエンコーディングに対応 セキュリティ調査 - マルウェアやプログラムの分析 バイナリファイルの内容を簡単に確認できます。 基本構文 1 strings [オプション] ファイル 標準入力からも読み込み可能。 主なオプション オプション 説明 -n 最小長 指定長以上の文字列のみ表示(デフォルト4) -t 形式 オフセット表示形式(o=8進数、x=16進数、d=10進数) -a すべてのセクションをスキャン -e エンコーディング エンコーディング指定(s=ASCII、S=Unicode等) -f ファイル ファイルリストから読み込む - オフセットを表示しない 使用例 例1: 基本的なファイルスキャン 1 strings /bin/ls | head -20 実行結果: 1 2 3 4 5 6 7 8 /lib64/ld-linux-x86-64.so.2 __cxa_finalize libc.so.6 strrchr abort __libc_start_main __gmon_start__ ... 実行ファイルから見つかった文字列を表示。 ...

2026年1月3日 · 2 分 · 363 文字 · 須藤権限

odコマンド

はじめに こんにちは!今回はodコマンドについて解説します。 odは、ファイルやテキストの内容を8進数(octal dump)や16進数、ASCII文字などで表示するコマンドです。バイナリファイルの内容を確認する時に活躍します。 デバッグやファイルの詳細な確認が必要な時に、めっちゃ便利ですよ。 odコマンドとは odは、ファイルの内容をさまざまなフォーマットでダンプ(表示)する外部コマンドです。 主な機能: フォーマット指定 - 8進数、16進数、10進数、ASCII文字など バイナリ表示 - テキストファイル以外も表示可能 オフセット表示 - ファイル内の位置を一緒に表示 複数フォーマット - 複数の形式を同時表示可能 バイト単位制御 - 特定範囲のみ表示 バイナリファイルの内容を詳細に確認できます。 基本構文 1 od [オプション] ファイル 標準入力からも読み込み可能。 主なオプション オプション 説明 -t 形式 出力フォーマット指定(x=16進数、o=8進数、d=10進数、cなど) -A 形式 アドレス表示形式(x=16進数、o=8進数、d=10進数) -N バイト数 最初のN バイトのみ表示 -j オフセット 開始位置をオフセット指定 -v 同じ行の繰り返しも表示 -c ASCII文字表示(昔のフォーマット) -x 16進数表示(昔のフォーマット) 使用例 例1: 基本的なファイル表示(8進数) 1 2 echo "hello" > test.txt od test.txt 実行結果: 1 2 0000000 150 145 154 154 157 012 0000006 デフォルトは8進数。各バイトが8進数で表示されます。 ...

2026年1月3日 · 3 分 · 453 文字 · 須藤権限

realpathコマンド

はじめに こんにちは!今回はrealpathコマンドについて解説します。 realpathは、ファイルやディレクトリの絶対パスを取得するコマンドです。シンボリックリンクを解決したり、相対パスを絶対パスに変換したりできます。 パスの処理をする時には超便利ですよ。 realpathコマンドとは realpathは、ファイルパスの絶対パス(フルパス)を返す外部コマンドです。 主な機能: シンボリックリンク解決 - シンボリックリンクの実体を追跡 相対パス変換 - 相対パスを絶対パスに変換 パス正規化 - ../や./を解決 存在確認 - ファイルが存在するか確認 複数ファイル対応 - 複数ファイルのパスを一度に処理 スクリプトでパス処理する時にはほぼ必須です。 基本構文 1 realpath [オプション] ファイル... ファイルの絶対パスを返します。 主なオプション オプション 説明 -e, --canonicalize-existing ファイルが存在することを確認 -L, --logical シンボリックリンクを解決しない -m, --canonicalize-missing ファイルが存在しなくても処理 -s, --strip 末尾のスラッシュを削除 -z, --zero NUL文字で区切る --relative-to=BASE BASEからの相対パスで出力 -q, --quiet エラー出力を抑制 使用例 例1: 基本的なパス取得 1 realpath myfile.txt 実行結果: 1 /home/user/myfile.txt 相対パスを絶対パスに変換します。 例2: シンボリックリンクを解決 1 2 ln -s /usr/bin mylink realpath mylink 実行結果: ...

2026年1月3日 · 2 分 · 368 文字 · 須藤権限

mktempコマンド

はじめに こんにちは!今回はmktempコマンドについて解説します。 mktempは、一時ファイルやディレクトリを安全に作成するコマンドです。ファイル名の衝突を避けたり、セキュリティリスクを回避したりできます。 シェルスクリプトで一時ファイルを使う時には、ほぼ必須のコマンドですよ。 mktempコマンドとは mktempは、予測不可能な名前の一時ファイルまたはディレクトリを作成する外部コマンドです。 主な特徴: ユニークな名前生成 - 衝突しない名前を自動生成 セキュリティ - 予測不可能な名前により、セキュリティ脆弱性を回避 ファイル/ディレクトリ対応 - 両方作成可能 テンプレート指定 - 名前パターンをカスタマイズ可能 自動削除オプション - スクリプト終了時に自動削除可能 /tmp下に安全な一時ファイルを作成できます。 基本構文 1 mktemp [オプション] [テンプレート] テンプレートにXXXXXXを含めると、そこにランダム文字が入ります。 主なオプション オプション 説明 -d ファイルではなくディレクトリを作成 -p ディレクトリ 指定したディレクトリに作成 -t テンプレートの最後にXXXXXXを自動追加 -u ファイルを作成しない(名前だけ返す) --suffix=末尾 ファイル名の末尾に文字列を追加 --dry-run 実際には作成せず、名前を表示 --tmpdir=ディレクトリ 作成先ディレクトリ指定 使用例 例1: 一時ファイルを作成 1 2 3 4 temp_file=$(mktemp) echo $temp_file cat $temp_file rm $temp_file 実行結果: 1 /tmp/tmp.XXXXXXXXXX ランダムな名前の一時ファイルを作成します。 例2: 一時ディレクトリを作成 1 2 3 4 temp_dir=$(mktemp -d) echo $temp_dir ls -la $temp_dir rmdir $temp_dir 実行結果: ...

2026年1月3日 · 3 分 · 430 文字 · 須藤権限

scp

はじめに こんにちは!今回はscpコマンドについて解説します。 scpはSSH経由で安全にファイルを転送するコマンド。ローカル↔リモート、さらにはリモート↔リモート間のファイル転送ができます。 cpのSSH版ってイメージですね。セキュアでシンプルだから、ファイル転送の定番です。 scpコマンドとは scpは"Secure Copy"の略で、SSHプロトコルを使用して安全にファイルを転送する外部コマンドです。 昔のrcp(Remote Copy)と違い、通信内容が暗号化されます。リモートサーバーとのファイル転送、バックアップ、設定ファイルの配置など、様々な場面で活躍します。 基本構文 1 scp [オプション] コピー元 コピー先 ローカルファイルは通常のパス、リモートファイルはuser@host:path形式で指定します。 主なオプション オプション 説明 -r ディレクトリを再帰的にコピー -p ファイルの属性(タイムスタンプ・権限)を保持 -P ポート番号を指定(大文字) -C 圧縮を有効にする -v 詳細表示(verbose) -i 秘密鍵ファイルを指定 -o SSHオプション設定 -3 2つのリモートホスト間でコピー(経由ホストを明示) 使用例 例1: ローカルからリモートにファイルをコピー 1 scp file.txt user@example.com:/home/user/ 実行結果: 1 2 user@example.com's password: file.txt 100% 1024 1.0MB/s 00:00 ローカルのfile.txtをリモートホストの/home/user/にコピーします。進捗バーが表示されます。 例2: リモートからローカルにファイルをコピー 1 scp user@example.com:/var/log/app.log ./ 実行結果: 1 2 user@example.com's password: app.log 100% 2048 2.0MB/s 00:00 リモートホストの/var/log/app.logをローカルの現在ディレクトリにコピーします。 ...

2026年1月3日 · 2 分 · 361 文字 · 須藤権限

basename

はじめに こんにちは!今回はbasenameコマンドについて解説します。 basenameはファイルパスからファイル名だけを抽出するコマンドです。フルパスが与えられたときに、最後のファイル名部分だけが欲しい時に超便利ですね。 スクリプトを書く時に頻繁に出てくるコマンドなので、これを機にマスターしちゃいましょう! basenameコマンドとは basenameは、フルパスやファイルパスからファイル名の部分だけを取り出す外部コマンドです。 例えば、/home/user/documents/file.txtというパスが与えられたとき、basenameはfile.txtだけを抽出します。シェルスクリプトの中で、ディレクトリパスに関係なくファイル名だけを処理したい時に重宝するコマンドです。 基本構文 1 basename パス [サフィックス] パスはファイルのパス、サフィックス(省略可)は除外したい拡張子です。 主なオプション オプション 説明 -a 複数のパス引数をすべて処理(GNU拡張) -s サフィックスを指定(GNU拡張) -z 出力をNUL文字で区切る(GNU拡張) 使用例 例1: 基本的なパスからファイル名を抽出 1 basename /home/user/documents/file.txt 実行結果: 1 file.txt フルパスからfile.txtというファイル名だけを取り出します。これが基本的な使い方です。 例2: 拡張子を除外する 1 basename /home/user/documents/file.txt .txt 実行結果: 1 file 第2引数に.txtを指定することで、拡張子を除外してfileだけを取り出します。 例3: シンプルなファイル名を処理 1 basename document.pdf 実行結果: 1 document.pdf 既にファイル名だけが与えられた場合は、そのまま返します。 例4: ディレクトリパスも処理 1 basename /var/log/system.log 実行結果: 1 system.log どんなディレクトリ階層からでも、ファイル名だけを取り出します。 例5: サフィックス指定で拡張子削除 1 basename /etc/config/app.conf .conf 実行結果: ...

2026年1月3日 · 2 分 · 246 文字 · 須藤権限

dirname

はじめに こんにちは!今回はdirnameコマンドについて解説します。 dirnameはファイルパスからディレクトリパス部分だけを抽出するコマンドです。先ほど解説したbasenameの逆バージョンって感じですね。 シェルスクリプトでパスを処理する時に、basenameとセットで超よく使われるコマンドです! dirnameコマンドとは dirnameは、フルパスやファイルパスからディレクトリパスの部分だけを取り出す外部コマンドです。 例えば、/home/user/documents/file.txtというパスが与えられたとき、dirnameは/home/user/documentsだけを抽出します。ファイルのディレクトリパスだけが必要な場合に重宝するコマンドです。 基本構文 1 dirname パス パスはファイルやディレクトリのパスです。 主なオプション オプション 説明 -z 出力をNUL文字で区切る(GNU拡張) 使用例 例1: 基本的なパスからディレクトリを抽出 1 dirname /home/user/documents/file.txt 実行結果: 1 /home/user/documents フルパスから/home/user/documentsというディレクトリパスだけを取り出します。これが基本的な使い方です。 例2: 相対パスでの利用 1 dirname ./documents/file.txt 実行結果: 1 ./documents 相対パスでも同じようにディレクトリパスだけを抽出できます。 例3: ファイル名だけが与えられた場合 1 dirname file.txt 実行結果: 1 . ディレクトリ情報がない場合は、カレントディレクトリを意味する.を返します。 例4: ルートディレクトリの場合 1 dirname /etc/passwd 実行結果: 1 /etc ルートに近いパスでも正しくディレクトリを抽出します。 例5: スラッシュで終わるパス 1 dirname /home/user/documents/ 実行結果: ...

2026年1月3日 · 2 分 · 252 文字 · 須藤権限

ddコマンド

はじめに こんにちは!今回はddコマンドについて解説します。 ddは、ファイルやディスク全体をブロック単位でコピー・変換するコマンドです。ディスクイメージのバックアップ、USB起動メディアの作成、ディスク丸ごとのクローンなど、低レベルのデータ操作をする時に使うんですね。 「火力の強い、融通が利くコピーツール」ってイメージです。パワフルですけど、使い方を間違えるとデータ破損のリスクがあるので注意が必要です。 ddコマンドとは ddは、“convert and copy"の略で、ファイルやディスクのデータをブロック単位でコピー・変換する外部コマンドです。 通常のcpコマンドではファイルレベルでしか操作できませんが、ddは低レベルでのディスク操作ができます。ディスク全体のバックアップ、パーティション操作、USB起動メディア作成、ディスククローンなど、システム管理者がよく使う重要なコマンドなんです。 ddの特徴は、細かいオプションでデータ変換(大文字・小文字変換など)ができることと、ブロックサイズを指定してコピーできることです。ただし、パワフルだからこそ、誤った使い方はデータ破損につながるので、慎重に使う必要があります。 基本構文 1 dd [オプション] ddのオプションは、if=(入力ファイル)とof=(出力ファイル)で指定します。 1 dd if=入力ファイル of=出力ファイル bs=ブロックサイズ count=コピーするブロック数 他のコマンドと違う独特の構文なので、最初は戸惑うかもしれませんね。 主なオプション オプション 説明 if= 入力ファイル(input file) of= 出力ファイル(output file) bs= ブロックサイズ(block size) count= コピーするブロック数 skip= 入力ファイルの最初からスキップするブロック数 seek= 出力ファイルの最初からシークするブロック数 conv= データ変換(notrunc, noerror など) status= 進捗表示(progress, none など) ibs= 入力ブロックサイズ obs= 出力ブロックサイズ 使用例 例1: ファイルをコピー 1 dd if=source.img of=destination.img 実行結果: 1 2 3 1024+0 records in 1024+0 records out 524288 bytes (524 kB, 512 KiB) copied, 0.5 s, 1.0 MB/s source.imgをdestination.imgにコピー。出力にはコピーしたブロック数とデータ転送速度が表示されます。 ...

2026年1月3日 · 3 分 · 485 文字 · 須藤権限

umountコマンド

はじめに こんにちは!今回はumountコマンドについて解説します。 umountは、マウント済みのファイルシステムをアンマウント(切断)するコマンドです。mountコマンドの逆の操作ですね。USBドライブを取り外す前とか、ストレージの接続を終了したい時に使うんです。 「パソコンからUSBを安全に取り外す」をコマンドでやるってイメージです。これもめっちゃ重要ですよ。 umountコマンドとは umountは、マウント済みのファイルシステムをアンマウント(切断)する外部コマンドです。 Linuxでは、マウント中のファイルシステムに対するI/O操作は即座に実行されるわけではなく、バッファリングされています。そのため、デバイスを物理的に取り外す前にumountできちんとアンマウントする必要があります。データの破損を防ぐためにも重要なコマンドなんです。 umountを実行すると、キャッシュがディスクにフラッシュされ、ファイルシステムが切断されます。その後初めて、安全にデバイスを取り外したり、別の場所に再マウントできるわけです。 基本構文 1 umount [オプション] マウントポイント または 1 umount [オプション] デバイス マウントポイント(ディレクトリパス)またはデバイス名を指定してアンマウントします。 主なオプション オプション 説明 -l lazy unmount(すぐにアンマウント表示するが、後で切断) -f force unmount(強制的にアンマウント) -r アンマウント失敗時に読み取り専用にする -n /etc/mtabを更新しない -v 詳細表示(verbose) -a /etc/mtabのすべてをアンマウント -t 指定されたファイルシステムタイプのみアンマウント 使用例 例1: 基本的なアンマウント 1 sudo umount /mnt/usb 実行結果: 1 (成功時は何も表示されない) /mnt/usbにマウントされているファイルシステムをアンマウントします。これが最もシンプルな使い方です。 例2: デバイス名でアンマウント 1 sudo umount /dev/sdb1 実行結果: 1 (成功時は何も表示されない) マウントポイントの代わりに、デバイス名を指定してアンマウント。結果は同じです。 例3: 詳細表示でアンマウント 1 sudo umount -v /mnt/usb 実行結果: ...

2026年1月3日 · 2 分 · 355 文字 · 須藤権限

mountコマンド

はじめに こんにちは!今回はmountコマンドについて解説します。 mountは、ファイルシステムをマウント(接続)するコマンドです。USBドライブやハードディスク、ネットワークストレージなど、様々なストレージをLinuxシステムに接続する時に使うんですね。 「パソコンにUSBをつなぐ」的な操作をコマンドでやるってイメージです。めっちゃ重要なコマンドですよ。 mountコマンドとは mountは、ファイルシステムをマウント(接続)する外部コマンドです。 Linuxでは、ハードディスク、USB、ネットワークストレージなど、あらゆるストレージをファイルシステムとしてツリーに接続することで、ユーザーが統一的にアクセスできるようになっています。mountはその接続作業を行うコマンドなんです。 マウントをすることで、デバイスの内容がディレクトリツリーの特定の場所から見えるようになります。例えば/mntや/mediaといったディレクトリにマウントすると、そこからそのデバイスのファイルにアクセスできるわけです。 基本構文 1 mount [オプション] デバイス マウントポイント mount単体で実行すると、現在マウント済みのファイルシステムを表示します。デバイスとマウントポイントを指定することで、新しくマウントができます。 主なオプション オプション 説明 -t ファイルシステムの種類を指定(ext4, ntfs, vfat など) -o マウントオプションを指定(comma区切りで複数可) -r 読み取り専用でマウント(read-only) -w 読み書き可能でマウント(read-write、デフォルト) -a fstabに記載されているすべてのファイルシステムをマウント -n fstabを読まずにマウント -v 詳細表示(verbose) -l ラベル別にマウント -U UUID別にマウント --bind ディレクトリを別の場所にマウント 使用例 例1: 現在マウント済みのファイルシステムを表示 1 mount 実行結果: 1 2 3 4 5 /dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,stripe=4) devtmpfs on /dev type devtmpfs (rw,relatime,size=1234567k,...) tmpfs on /run type tmpfs (rw,nosuid,nodev,...) /dev/sda2 on /home type ext4 (rw,relatime) ... システムに接続されているすべてのファイルシステムと、その詳細情報が表示されます。 ...

2026年1月3日 · 2 分 · 316 文字 · 須藤権限