.TH SUBST 1 local "25 Feb 1990" .SH NAME subst \- 替換文件中的定義 .SH "總覽 (SYNOPSIS)" .B subst [ .B \-e editor ] .B \-f substitutions victim ... .SH "描述 (DESCRIPTION)" .I Subst 能夠 替換 文件 的 內容, 適用於 針對 本地情況 定製 軟件. 它 根據 .I substitutions 的 內容, 修改 每一個 .I victim 文件. .PP 在 .I substitutions 文件 中, 每個 替換說明(substitution) 佔用 一行. 每一行 包含 兩個域, 用 一個或多個 tab 符 隔開. 第一個 域 是 替換說明 的 \fI名字(name)\fP, 第二個 域 是 它的 \fI值(value)\fP. 兩者 均不應該 包含 ``#'' 字符; 而使用 文本編輯器 的 轉義符, 如 ``&'' 和 ``\e'', 也是 不明智地; 名字 最好 限制在 字母和數字 中; 以 ``#' 開始 的 行 是 註釋, 將被 忽略. .PP 在 \fIvictim\fP 文件 中, 每一個 需要 替換 的 行 (\fI目標行\fP) 必須 跟在 \fI原形行(prototype line)\fP 後面. 原形行 應該 有 這樣 的 限制: 將來 其他 程序 處理 這個文件 的 時候, 它 被視爲 註釋. 原形行 必須 包含 目標行 的 "原形", 該 "原形" 用 ``=(\&)<'' 和 ``>(\&)='' 括起來, 這一行 的 其他內容 都被 忽略掉. .I Subst 將 分析 這個原形, 尋找 替換說明 中 名字域 的 所有 實例, 名字實例 是用 ``@\&<'' 和 ``>\&@'' 括起來的, 把 它們 改變成 對應的值, 然後 用這個 結果 替換 目標行. .SH "選項 (OPTIONS)" .TP .B \-e 替換 操作 由 .IR sed (1) 編輯器 完成, 它 必須 放在 .I /bin 或 .I /usr/bin 目錄 下面. 用 ``\-e'' 開關 可以 指定 一個 不同位置 的 執行程序. .SH "示例 (EXAMPLE)" .PP 如果 \fIsubstitutions\fP 文件內容 是 .PP .RS .nf .ta \w'SECOND'u+4n FIRST 111 SECOND 222 .fi .RE .PP 而 \fIvictim\fP 文件 是 .PP .RS .nf x = 2; /* =(\&)\&@ + @\&\&@;>(\&)= */ y = 88 + 99; z = 5; .fi .RE .PP 那麼 ``\fBsubst \-f \fP\fIsubstitutions victim\fP'' 命令 把 \fIvictim\fP 改變成: .PP .RS .nf x = 2; /* =(\&)\&@ + @\&\&@;>(\&)= */ y = 111 + 222; z = 5; .fi .RE .SH "文件 (FILES)" .ta \w'\fIvictimdir\fP/substtmp.old'u+4n \fIvictimdir\fP/substtmp.new 建立出來的新版本文件 .br \fIvictimdir\fP/substtmp.old 經過改名的老版本文件 .SH "另見 (SEE ALSO)" sed(1) .SH "診斷 (DIAGNOSTICS)" 如果 subst 無法 創建 臨時文件, 或者 臨時文件 已經 存在, 程序 中止 並 報錯. .SH "歷史 (HISTORY)" Henry Spencer 寫於 U of Toronto. .PP Rich $alz 在 1991 年 7 月 增加了 ``\-e'' 選項. .SH BUGS 當 創建 準備 用 \fIsubst\fP 處理的 文件 時, 很容易 忘記 在 原形行 後面 插入 一個 要命的 目標行; 如果 你 忘了 目標行, \fIsubst\fP 最終 會 刪掉 原形行 下面一行, 不管 那行 是 什麼. .SH "[中文版維護人]" .B 徐明 .SH "[中文版最新更新]" .BR 2004/02/28 .SH "《中國Linux論壇man手冊頁翻譯計劃》" .BI http://cmpp.linuxforum.net .SH "跋" .br 本頁面中文版由中文 man 手冊頁計劃提供。 .br 中文 man 手冊頁計劃:\fBhttps://github.com/man-pages-zh/manpages-zh\fR