<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>コマンドライン on KnightLiブログ</title>
        <link>https://knightli.com/ja/tags/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3/</link>
        <description>Recent content in コマンドライン on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Fri, 15 May 2026 14:50:11 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/tags/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Ghostty ドキュメント速読：インストール、設定、日常利用の要点</title>
        <link>https://knightli.com/ja/2026/05/15/ghostty-docs-install-config-usage-guide/</link>
        <pubDate>Fri, 15 May 2026 14:50:11 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/15/ghostty-docs-install-config-usage-guide/</guid>
        <description>&lt;p&gt;Ghostty は新しいターミナルエミュレーターだが、単に「また一つ速いターミナル」が増えたという話ではない。公式ドキュメントによると、Ghostty は速度、機能、ネイティブなデスクトップ体験の三つを同時に満たそうとしている。つまり、GPU アクセラレーションと良好なレンダリング性能を目指しつつ、macOS と Linux ではできるだけ本物のローカルアプリのように振る舞い、すべての操作を独自描画 UI に押し込まない設計を目指している。&lt;/p&gt;
&lt;p&gt;iTerm2、Kitty、Alacritty、WezTerm、あるいは OS 標準のターミナルを使っているなら、Ghostty で最も注目すべき点は単一の機能ではない。「すぐ使えること」と「深く設定できること」を同時に備えている点だ。デフォルト設定でもすぐ使える一方、さらに調整したくなったときには、設定ファイル、テーマ、キーバインド、フォント、Shell 統合、ターミナル制御シーケンスまで、公式ドキュメントが一通りの入口を用意している。&lt;/p&gt;
&lt;h2 id=&#34;まず位置づけを見る&#34;&gt;まず位置づけを見る
&lt;/h2&gt;&lt;p&gt;Ghostty の中核的な位置づけは、次の三点にまとめられる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;クロスプラットフォームなターミナルエミュレーターで、現時点では macOS と Linux に重点を置いている。&lt;/li&gt;
&lt;li&gt;プラットフォームネイティブ UI を使う。macOS 版は Swift、AppKit、SwiftUI、Linux 版は Zig と GTK4 を使う。&lt;/li&gt;
&lt;li&gt;ターミナルの中核は &lt;code&gt;libghostty&lt;/code&gt; で、GUI アプリはこの共有コアを中心に構築されている。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この設計は日常体験に影響する。タブ、分割、エラーメッセージ、ウィンドウ状態の復元、システムショートカットなどは、単に「デスクトップアプリらしく見える部品」として作られているのではなく、各 OS の操作習慣にできるだけ近づけられている。macOS と Linux のデフォルトショートカットも、それぞれのプラットフォーム慣習に合わせて分けられている。&lt;/p&gt;
&lt;h2 id=&#34;インストールmacos-は直接的linux-はディストリビューション次第&#34;&gt;インストール：macOS は直接的、Linux はディストリビューション次第
&lt;/h2&gt;&lt;p&gt;公式のプリビルドバイナリは主に macOS 向けだ。もっとも一般的な方法は &lt;code&gt;.dmg&lt;/code&gt; をダウンロードし、開いたあと Ghostty を Applications ディレクトリにドラッグすること。Homebrew ユーザーは、コミュニティが管理する cask も利用できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install --cask ghostty
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux はより分散している。Ghostty のドキュメントでは、ディストリビューションごとのパッケージマネージャー、コミュニティバイナリ、ソースビルドが分けて説明されている。Arch、Alpine、Gentoo、NixOS、Snap、Solus、Void などにはそれぞれの経路がある。公式または信頼できるリポジトリがない場合、ドキュメントは第三者バイナリを気軽に入れるより、ソースからビルドする方向を勧めている。&lt;/p&gt;
&lt;p&gt;これはサーバーや作業用マシンでは特に重要だ。ターミナルエミュレーターは大量の入出力、クリップボード、リンク、SSH セッション、ローカルファイルパスを扱う。インストール元は保守的に選び、公式 macOS パッケージ、ディストリビューションのリポジトリ、自分で出所を確認できるビルド手順を優先したい。&lt;/p&gt;
&lt;h2 id=&#34;設定いきなり大きな-dotfiles-をコピーしない&#34;&gt;設定：いきなり大きな dotfiles をコピーしない
&lt;/h2&gt;&lt;p&gt;Ghostty の設定哲学は「ゼロ設定で使えること」だ。デフォルトフォントには JetBrains Mono が含まれ、Nerd Font もサポートされるため、多くのユーザーは最初に起動した時点で普通に作業できる。ドキュメントでは、主観的ではない設定を変えないと快適でない場合、それはデフォルト動作にすべきではないかと考えることさえ勧めている。&lt;/p&gt;
&lt;p&gt;本当にカスタマイズが必要な場合、Ghostty はテキスト設定ファイルを使う。現在の設定ファイル名は &lt;code&gt;config.ghostty&lt;/code&gt; で、旧バージョンでは &lt;code&gt;config&lt;/code&gt; もサポートされる。代表的なパスは次の通り。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$XDG_CONFIG_HOME/ghostty/config.ghostty
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$XDG_CONFIG_HOME/ghostty/config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$HOME/.config/ghostty/config.ghostty
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$HOME/.config/ghostty/config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;macOS では次の場所も読み込まれる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$HOME/Library/Application Support/com.mitchellh.ghostty/config.ghostty
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$HOME/Library/Application Support/com.mitchellh.ghostty/config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;設定構文はとても直接的で、&lt;code&gt;key = value&lt;/code&gt; という形だ。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;font-family = JetBrains Mono
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;font-size = 14
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;theme = light:Rose Pine Dawn,dark:Rose Pine
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;keybind = ctrl+shift+t=new_tab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;実用的な勧めとして、最初から他人の完全な設定をコピーしない方がよい。まず数日そのまま使い、最初はフォント、フォントサイズ、テーマの三つだけを変える。キーバインド、分割、ウィンドウ、Shell 統合で実際に摩擦を感じてから、必要な設定を一つずつ足していく方が安定する。&lt;/p&gt;
&lt;h2 id=&#34;ドキュメント検索ローカルでも完全な設定を確認できる&#34;&gt;ドキュメント検索：ローカルでも完全な設定を確認できる
&lt;/h2&gt;&lt;p&gt;Ghostty には多くの設定項目があり、公式ドキュメントでは Option Reference にまとめられている。Web ページだけでなく、インストール後はローカルからも設定リファレンスを確認できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +show-config --default --docs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;このコマンドはデフォルト設定とドキュメントを標準出力に出すため、ページャーにつなぐと検索しやすい。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +show-config --default --docs &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; less
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;利用可能なフォントを見るには次を使う。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +list-fonts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;内蔵テーマと利用可能なテーマを見るには次を使う。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +list-themes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;デフォルトキーバインドを見るには次を使う。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghostty +list-keybinds --default
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これらのコマンドは、Web 上の断片をコピーするより信頼しやすい。自分が実際にインストールしている Ghostty のバージョンから出力されるからだ。&lt;/p&gt;
&lt;h2 id=&#34;キーバインドアクションを中心に考える&#34;&gt;キーバインド：「アクション」を中心に考える
&lt;/h2&gt;&lt;p&gt;Ghostty のキーバインド設定形式は次の通り。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;keybind = trigger=action
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;trigger&lt;/code&gt; はキー入力のトリガーで、&lt;code&gt;action&lt;/code&gt; は Ghostty が実行する動作だ。新しいタブを作る、現在の surface を閉じる、設定を再読み込みする、プロンプトへジャンプする、といったものはすべて action になる。このモデルはわかりやすい。何かのメニュー項目を変更しているのではなく、入力シーケンスを一つの動作に紐づけている。&lt;/p&gt;
&lt;p&gt;設定を変更した後は、実行中に再読み込みできる。デフォルトショートカットは次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux：&lt;code&gt;ctrl+shift+,&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS：&lt;code&gt;cmd+shift+,&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ただし、すべての設定が即時反映されるわけではない。新しく作るターミナルにだけ影響するものもあれば、完全な再起動が必要なものもある。「設定を書いたのに変わらない」と感じたら、構文を疑い続ける前に、その項目の説明を確認した方が早い。&lt;/p&gt;
&lt;h2 id=&#34;テーマとフォントまず内蔵を使いその後で微調整する&#34;&gt;テーマとフォント：まず内蔵を使い、その後で微調整する
&lt;/h2&gt;&lt;p&gt;Ghostty は多数のテーマを同梱しており、システムのライトモード、ダークモードに応じて別テーマへ切り替えることもできる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;theme = light:Rose Pine Dawn,dark:Rose Pine
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;テーマはカスタムファイルから読み込むこともできる。ドキュメントの注意は明確だ。テーマファイルは本質的には Ghostty の設定ファイルであり、多くの設定項目を指定できるため、信頼できない出所のテーマを安易に使うべきではない。&lt;/p&gt;
&lt;p&gt;フォントについては、&lt;code&gt;font-family&lt;/code&gt; を複数回指定して fallback フォントを設定できる。多言語環境では便利で、主フォントに英字や記号を担当させ、後続のフォントで中国語、日本語、その他の文字を補える。emoji、太字、斜体、リガチャなどの細部で問題が出たら、Option Reference で対応する項目を確認すればよい。&lt;/p&gt;
&lt;h2 id=&#34;shell-統合ssh-ユーザーは特に確認したい&#34;&gt;Shell 統合：SSH ユーザーは特に確認したい
&lt;/h2&gt;&lt;p&gt;Ghostty は &lt;code&gt;bash&lt;/code&gt;、&lt;code&gt;elvish&lt;/code&gt;、&lt;code&gt;fish&lt;/code&gt;、&lt;code&gt;nushell&lt;/code&gt;、&lt;code&gt;zsh&lt;/code&gt; 向けに shell integration を自動注入できる。有効にすると、いくつかの体験が自然になる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新しいターミナルを前のターミナルの作業ディレクトリから開ける。&lt;/li&gt;
&lt;li&gt;複雑なプロンプトが resize 時に誤って回り込まず、再描画される。&lt;/li&gt;
&lt;li&gt;プロンプトマーカーを使ってコマンド出力の間を移動できる。&lt;/li&gt;
&lt;li&gt;プロンプト上で、編集習慣に合ったカーソル挙動が使える。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自動注入したくない場合は、設定で無効にできる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;shell-integration = none
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;さらに注意したいのは SSH だ。Ghostty は &lt;code&gt;TERM&lt;/code&gt; として &lt;code&gt;xterm-ghostty&lt;/code&gt; を使うが、多くのリモートホストにはまだ対応する terminfo がない。ドキュメントでは &lt;code&gt;ssh-env&lt;/code&gt; と &lt;code&gt;ssh-terminfo&lt;/code&gt; という二つの shell integration 機能が用意されており、デフォルトでは無効だが必要に応じて有効化できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;shell-integration-features = ssh-env,ssh-terminfo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;古いサーバー、コンテナ、踏み台、厳格に管理された本番環境へよく接続するなら、これらを有効にする前に公式の Terminfo と Shell Integration ドキュメントを読んでおきたい。ターミナル能力のネゴシエーションは地味だが、問題が起きると色の異常、ショートカットの不具合、全画面プログラムの表示崩れとして現れることがある。&lt;/p&gt;
&lt;h2 id=&#34;私の試し方&#34;&gt;私の試し方
&lt;/h2&gt;&lt;p&gt;Ghostty が自分に合うかだけを判断したいなら、次の順で試すとよい。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;インストール後、設定を書かずに一日そのまま使う。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;font-family&lt;/code&gt;、&lt;code&gt;font-size&lt;/code&gt;、&lt;code&gt;theme&lt;/code&gt; だけを調整する。&lt;/li&gt;
&lt;li&gt;まず他人のショートカット表を取り込むのではなく、&lt;code&gt;ghostty +list-keybinds --default&lt;/code&gt; でデフォルトを確認する。&lt;/li&gt;
&lt;li&gt;SSH をよく使うなら、リモートホストの terminfo 互換性を先に確認する。&lt;/li&gt;
&lt;li&gt;最後に分割、ウィンドウ、透明度、タイトルバー、背景画像などの見た目やワークフローの好みを調整する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ghostty のドキュメントはかなりエンジニアリング寄りで、「宣伝ページ」ではなく「設定リファレンスマニュアル」として読むのに向いている。多くのユーザーにとって、本当の判断基準は単純だ。デフォルト体験がすでに快適か、日常のエディタ、Shell、SSH、tmux、Zellij が安定しているか。このあたりがうまくいくなら、Ghostty は長期的なターミナル候補に入れる価値がある。&lt;/p&gt;
&lt;h2 id=&#34;参考リンク&#34;&gt;参考リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ghostty Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/about&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;About Ghostty&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/config&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/config/keybind&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Custom Keybindings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/install/binary&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prebuilt Ghostty Binaries and Packages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ghostty.org/docs/features/shell-integration&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Shell Integration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>fdupesで削除順を制御する方法：ディレクトリ優先度で重複ファイルを残す</title>
        <link>https://knightli.com/ja/2026/05/06/fdupes-delete-duplicates-by-directory-priority/</link>
        <pubDate>Wed, 06 May 2026 09:23:09 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/06/fdupes-delete-duplicates-by-directory-priority/</guid>
        <description>&lt;p&gt;&lt;code&gt;fdupes&lt;/code&gt; で重複ファイルを削除するとき、&lt;code&gt;a&lt;/code&gt;、&lt;code&gt;b&lt;/code&gt;、&lt;code&gt;c&lt;/code&gt; の3つのディレクトリがあり、優先的に &lt;code&gt;a&lt;/code&gt; を残し、次に &lt;code&gt;b&lt;/code&gt; を残し、&lt;code&gt;c&lt;/code&gt; の重複ファイルから削除したい場合、重要なのは複雑なルールではない。ディレクトリの入力順だ。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fdupes&lt;/code&gt; は非対話の削除モードでは、各重複グループで最初に見つかったファイルを残し、後から見つかった重複項目を削除する。そのため、ディレクトリ引数は「保持優先度が高いものから低いものへ」の順に並べる。&lt;/p&gt;
&lt;p&gt;つまり、「先に c を削除し、次に b を削除し、できるだけ a を残す」には、次のように書く。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;スキャン順は &lt;code&gt;a -&amp;gt; b -&amp;gt; c&lt;/code&gt; になる。3つのディレクトリに同じファイルが存在する場合、&lt;code&gt;a&lt;/code&gt; のファイルが先に見つかって保持され、&lt;code&gt;b&lt;/code&gt; と &lt;code&gt;c&lt;/code&gt; の重複ファイルが削除される。&lt;code&gt;b&lt;/code&gt; と &lt;code&gt;c&lt;/code&gt; だけに重複がある場合は、&lt;code&gt;b&lt;/code&gt; が保持され、&lt;code&gt;c&lt;/code&gt; が削除される。&lt;/p&gt;
&lt;h2 id=&#34;パラメータの意味&#34;&gt;パラメータの意味
&lt;/h2&gt;&lt;p&gt;よく使うパラメータは次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-r&lt;/code&gt;：サブディレクトリを再帰的にスキャンする。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-d&lt;/code&gt;：重複ファイルを削除する。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-N&lt;/code&gt;：&lt;code&gt;-d&lt;/code&gt; と組み合わせて使い、対話確認を行わず、各重複グループの最初のファイルを残して残りを削除する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そのため、重複ファイルを自動削除する基本形式は次のようになる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN 目录A 目录B 目录C
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ディレクトリが前にあるほど保持優先度が高い。後ろにあるほど、重複ファイルが削除されやすくなる。&lt;/p&gt;
&lt;h2 id=&#34;削除前にプレビューする&#34;&gt;削除前にプレビューする
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;-dN&lt;/code&gt; を直接使うとファイルが削除されるため、まず重複ファイルのグループを確認するのがよい。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -r a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;出力は重複ファイルごとにグループ化される。各グループで前に表示されるファイルが、非対話削除時に保持されやすいファイルだ。&lt;/p&gt;
&lt;p&gt;統計情報を見ることもできる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rm a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;データが重要な場合は、結果を保存して手動で確認する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -r a b c &amp;gt; duplicates.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;各重複グループの並び順が期待通りであることを確認してから、次を実行する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;サブディレクトリの扱い&#34;&gt;サブディレクトリの扱い
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;-r&lt;/code&gt; を有効にすると、&lt;code&gt;fdupes&lt;/code&gt; は渡されたディレクトリ配下のすべてのファイルを再帰的にスキャンする。保持優先度を決めるのは、やはりコマンド内でパスが登場する順序だ。&lt;/p&gt;
&lt;p&gt;例えば次のように実行する。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN dir_a dir_b dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは次の意味になる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dir_a&lt;/code&gt; の優先度が最も高い。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dir_b&lt;/code&gt; がその次。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dir_c&lt;/code&gt; が最も低い。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;dir_a/sub1/file.txt&lt;/code&gt; と &lt;code&gt;dir_c/sub1/file.txt&lt;/code&gt; の内容が同じなら、&lt;code&gt;dir_a&lt;/code&gt; 配下のファイルが保持される。&lt;code&gt;dir_a/x/y/file.txt&lt;/code&gt; と &lt;code&gt;dir_c/file.txt&lt;/code&gt; の内容が同じ場合も、&lt;code&gt;dir_a&lt;/code&gt; 配下のファイルが優先される。&lt;code&gt;fdupes&lt;/code&gt; が比較するのはファイル内容であり、ファイル名やディレクトリ階層が完全に一致する必要はない。&lt;/p&gt;
&lt;h2 id=&#34;サブディレクトリの優先度を細かく制御する&#34;&gt;サブディレクトリの優先度を細かく制御する
&lt;/h2&gt;&lt;p&gt;親ディレクトリだけを渡す場合、サブディレクトリ内部のスキャン順は &lt;code&gt;fdupes&lt;/code&gt; の走査ロジックに従う。多くの場合はこれで十分だ。ただし、特定のサブディレクトリにより高い優先度を与えたい場合は、そのサブディレクトリを明示的に前へ書く。&lt;/p&gt;
&lt;p&gt;例えば、まず &lt;code&gt;dir_a&lt;/code&gt; を残し、次に &lt;code&gt;dir_b/special&lt;/code&gt; を残し、その後 &lt;code&gt;dir_b&lt;/code&gt; の残りを処理し、最後に &lt;code&gt;dir_c&lt;/code&gt; を処理したい場合は次のようにする。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN dir_a dir_b/special dir_b dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これにより、&lt;code&gt;dir_b/special&lt;/code&gt; は &lt;code&gt;dir_b&lt;/code&gt; より先にスキャンされる。その後 &lt;code&gt;dir_b&lt;/code&gt; がスキャンされる時点では、&lt;code&gt;special&lt;/code&gt; 内のファイルはすでに記録されているため、&lt;code&gt;dir_b&lt;/code&gt; の他の部分より高い優先度を持つ。&lt;/p&gt;
&lt;p&gt;この書き方は次のような需要に向いている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt; が最も重要な基準ディレクトリ。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b&lt;/code&gt; の中の特定サブディレクトリが、&lt;code&gt;b&lt;/code&gt; の他の内容より重要。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;c&lt;/code&gt; は主に低優先度のバックアップディレクトリ。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;パス順はさらに拡張できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b/important b c/keep-first c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ルールは変わらない。前にあるほど優先的に保持される。&lt;/p&gt;
&lt;h2 id=&#34;ディレクトリが多い場合はリストを使う&#34;&gt;ディレクトリが多い場合はリストを使う
&lt;/h2&gt;&lt;p&gt;ディレクトリやサブディレクトリが多い場合、長いコマンドを手で書くと間違えやすい。優先度順にパスを &lt;code&gt;folders.txt&lt;/code&gt; のようなテキストファイルへ書いておくとよい。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_b/sub_important
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_c/sub_1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;その後、&lt;code&gt;xargs&lt;/code&gt; で &lt;code&gt;fdupes&lt;/code&gt; に渡す。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat folders.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs fdupes -rdN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;パスに空白が含まれる可能性がある場合は、NULL文字区切りを使うほうが安全だ。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tr &lt;span class=&#34;s1&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt; &amp;lt; folders.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs -0 fdupes -rdN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;注意すべき境界&#34;&gt;注意すべき境界
&lt;/h2&gt;&lt;p&gt;第一に、&lt;code&gt;fdupes&lt;/code&gt; が比較するのはファイル内容であり、ファイル名ではない。ファイル名が完全に違っていても、内容が同じなら重複ファイルとして扱われる。&lt;/p&gt;
&lt;p&gt;第二に、&lt;code&gt;a&lt;/code&gt; ディレクトリ内部に重複ファイルがある場合、&lt;code&gt;fdupes -rdN a b c&lt;/code&gt; によって &lt;code&gt;a&lt;/code&gt; 内部で後から見つかる重複項目も削除される可能性がある。このコマンドが表すのは「全体のスキャン順で最初に出たファイルを残す」ということであり、「a の中のファイルを絶対に削除しない」という意味ではない。&lt;/p&gt;
&lt;p&gt;第三に、デフォルトでは &lt;code&gt;fdupes&lt;/code&gt; はシンボリックリンクをたどらない。シンボリックリンク関連のファイルを処理する必要がある場合は、&lt;code&gt;-s&lt;/code&gt; が必要かどうか、またそれがデータ安全上の期待に合うかを確認する。&lt;/p&gt;
&lt;p&gt;第四に、&lt;code&gt;fdupes&lt;/code&gt; は重複ファイルだけを削除し、空ディレクトリは削除しない。削除後に &lt;code&gt;b&lt;/code&gt; や &lt;code&gt;c&lt;/code&gt; に空フォルダが残った場合は、次を実行できる。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find b c -type d -empty -delete
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;より安全な操作習慣&#34;&gt;より安全な操作習慣
&lt;/h2&gt;&lt;p&gt;ディレクトリ内のデータが重要な場合、いきなり &lt;code&gt;-rdN&lt;/code&gt; を実行するのは避けたい。より安全な流れは次の通り。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;まず &lt;code&gt;fdupes -r a b c&lt;/code&gt; を実行して重複グループを見る。&lt;/li&gt;
&lt;li&gt;各グループで先頭にあるファイルが本当に保持したいファイルか確認する。&lt;/li&gt;
&lt;li&gt;その後 &lt;code&gt;fdupes -rdN a b c&lt;/code&gt; を実行して自動削除する。&lt;/li&gt;
&lt;li&gt;削除後、空ディレクトリの整理が必要か確認する。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;a&lt;/code&gt; 内のファイルを誤って削除するのが非常に心配な場合は、低優先度ディレクトリだけを小さい範囲で先に整理するか、結果を出力して手動で絞り込むとよい。&lt;code&gt;fdupes&lt;/code&gt; のディレクトリ順は便利だが、権限分離ルールではない。スキャン対象に含まれたパス内の重複ファイルは、削除判断に参加する可能性がある。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;fdupes&lt;/code&gt; で優先度に従って重複ファイルを削除する核心は、「残したいディレクトリ」を前に置き、「優先的に削除したいディレクトリ」を後ろに置くことだ。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;a&lt;/code&gt; を残し、次に &lt;code&gt;b&lt;/code&gt; を残し、&lt;code&gt;c&lt;/code&gt; を優先的に削除するなら次のようにする。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;特定のサブディレクトリの優先度を高くしたいなら、親ディレクトリより前に単独で書く。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b/important b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;覚えることは一つでよい。&lt;code&gt;fdupes -dN&lt;/code&gt; は先に現れた重複ファイルを残し、後に現れた重複ファイルを削除する。ディレクトリ順こそが保持優先度だ。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>FFmpeg の `-map` パラメータの詳細な説明: ビデオ、オーディオ、および字幕ストリームの正確な選択</title>
        <link>https://knightli.com/ja/2026/04/02/ffmpeg-map-parameter-guide/</link>
        <pubDate>Thu, 02 Apr 2026 23:14:03 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/04/02/ffmpeg-map-parameter-guide/</guid>
        <description>&lt;p&gt;マルチオーディオ トラックおよびマルチ字幕ビデオ処理では、&lt;code&gt;-map&lt;/code&gt; は FFmpeg の最も重要で最も誤用されやすいパラメータの 1 つです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-map&lt;/code&gt; を明示的に指定しない場合、FFmpeg はデフォルトのルールに従ってストリームを自動的に選択するため、多くの場合、期待した結果が得られません。例えば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;エクスポートすると字幕が失われる&lt;/li&gt;
&lt;li&gt;間違ったオーディオトラック言語が選択されました&lt;/li&gt;
&lt;li&gt;不要なデータストリームが混入している&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この記事では、最も一般的なシナリオを使用して、&lt;code&gt;-map&lt;/code&gt; の使用方法を説明します。&lt;/p&gt;
&lt;h2 id=&#34;まずは流れとは何かを理解する&#34;&gt;まずは「流れ」とは何かを理解する
&lt;/h2&gt;&lt;p&gt;通常、コンテナー ファイルには複数のコンテンツ ストリーム (ストリーム) が存在します (&lt;code&gt;mp4&lt;/code&gt;、&lt;code&gt;mkv&lt;/code&gt; など)。一般的なものには次のようなものがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ビデオストリーミング (&lt;code&gt;v&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;オーディオ ストリーム (&lt;code&gt;a&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;字幕ストリーム (&lt;code&gt;s&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;添付ファイル/データ ストリーム (フォント、表紙、章など)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まず &lt;code&gt;ffprobe&lt;/code&gt; を使用して、ファイル内にどのようなストリームがあるかを確認できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffprobe -hide_banner input.mkv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;-map-の基本構文&#34;&gt;&lt;code&gt;-map&lt;/code&gt; の基本構文
&lt;/h2&gt;&lt;p&gt;最も一般的な書き方は次のとおりです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-map input_index[:stream_type][:stream_index]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例えば：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0:v&lt;/code&gt;: 1 番目の入力ファイルのすべてのビデオ ストリーム&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0:a:0&lt;/code&gt;: 入力ファイル 1 のオーディオ ストリーム 1&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1:s:1&lt;/code&gt;: 2 番目の入力ファイルの 2 番目の字幕ストリーム&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例証します:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;input_index&lt;/code&gt; は &lt;code&gt;0&lt;/code&gt; から始まり、&lt;code&gt;-i&lt;/code&gt; のシーケンスに対応します。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;stream_index&lt;/code&gt; も &lt;code&gt;0&lt;/code&gt; で始まります&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;実践例&#34;&gt;実践例
&lt;/h2&gt;&lt;h3 id=&#34;1-ビデオは-a-から音声は-b-から来ます&#34;&gt;1) ビデオは A から、音声は B から来ます
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i english.mp4 -i french.mp3 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -map 0:v:0 -map 1:a:0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -c:v copy -c:a aac &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  french.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;意味：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;english.mp4&lt;/code&gt; の最初のビデオ ストリームを取得します&lt;/li&gt;
&lt;li&gt;&lt;code&gt;french.mp3&lt;/code&gt; の最初のオーディオ ストリームを取得します&lt;/li&gt;
&lt;li&gt;結合された出力は &lt;code&gt;french.mp4&lt;/code&gt; です。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-最初の入力のすべてのストリームを保持し追加のオーディオ-トラックを追加します&#34;&gt;2) 最初の入力のすべてのストリームを保持し、追加のオーディオ トラックを追加します。
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i english.mp4 -i french.mp3 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -map &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; -map 1:a:0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -c copy &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  english-french.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;意味：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-map 0&lt;/code&gt; まず、すべてのストリームを最初の入力ファイルに取り込みます&lt;/li&gt;
&lt;li&gt;2 番目の入力の最初のオーディオ ストリームを追加します&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;非常に実践的な-2-つの高度なテクニック&#34;&gt;非常に実践的な 2 つの高度なテクニック
&lt;/h2&gt;&lt;h3 id=&#34;1-ネガティブ-マッピング-不要なフローを除外します&#34;&gt;1) ネガティブ マッピング: 不要なフローを除外します。
&lt;/h3&gt;&lt;p&gt;たとえば、最初の入力のすべてのストリームを保持しますが、2 番目のオーディオ ストリームを削除します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i input.mkv -map &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; -map -0:a:1 -c copy output.mkv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-オプションのマッピング-ストリームは存在せず中断されません&#34;&gt;2) オプションのマッピング: ストリームは存在せず、中断されません。
&lt;/h3&gt;&lt;p&gt;一部のファイルには字幕がない場合があります。その場合は、&lt;code&gt;?&lt;/code&gt; を使用できます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i input.mp4 -map 0:v -map 0:a -map 0:s? -c copy output.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;0:s?&lt;/code&gt; は、「字幕がある場合はマップし、字幕がない場合はスキップし、エラーは報告されない」ことを意味します。&lt;/p&gt;
&lt;h2 id=&#34;一般的なピットの位置&#34;&gt;一般的なピットの位置
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;-map&lt;/code&gt; を使用すると、FFmpeg はデフォルトでストリームを自動的に選択しなくなるため、必要なものをすべて書き出す必要があります。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c copy&lt;/code&gt; は、トランスコーディングを行わずにカプセル化とコピーのみを行います。ターゲット コンテナが特定のエンコーディングをサポートしていない場合でも、失敗します。&lt;/li&gt;
&lt;li&gt;複数の入力を入力するときに最もよくある間違いは、シリアル番号を入力することです。シリアル番号は &lt;code&gt;-i&lt;/code&gt; の順序にのみ依存することに注意してください。&lt;/li&gt;
&lt;li&gt;安定したスクリプトを作成したい場合は、まず &lt;code&gt;ffprobe&lt;/code&gt; を作成し、次に手書きよりも安定した &lt;code&gt;-map&lt;/code&gt; を生成します。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;要約する&#34;&gt;要約する
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;-map&lt;/code&gt; の中核は 1 つの文です。「どの入力から、どのタイプのストリームを取得し、どのストリームを取得するか」を FFmpeg に明確に指示します。&lt;/p&gt;
&lt;p&gt;マスタリング後は、複数のオーディオトラック、複数の字幕、ファイル間の結合などの複雑なシーンを安定して処理できるようになり、「エクスポート結果が間違っているが原因がわからない」という問題を回避できます。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
