「a.txt」があるとしましょう。ファイルをコピーしたら、VIを使用して新しくコピーしたファイルを開きたいです。
cp a.txt b.txt
vi b.txt
2つのコマンドを1つのコマンドにまとめるには?
答え1
a.txtを開き、内容をb.txtに保存して(効果的にコピー)、b.txtに切り替えてvi自体を使用してコピーできます。
一緒に入れてください:
vi -c 'w b.txt' -c 'e#' a.txt
これは、(内部的に)コンテンツをb.txtというファイルに保存するコマンドを実行したvi a.txt
後に実行するのと同じです。ただし、この時点でviはまだa.txtを編集しているため、「代替ファイルの編集」(または「最後のファイルの編集」)を意味するコマンドを続行し、viがb.txtに触れた場合は次のように切り替えます。文書を編集中です。:w b.txt
vi
:e#
答え2
&&
演算子の使用
cp a.txt b.txt && vi b.txt
答え3
独自の関数を作成して使用できます。次の例では、cp1 をコマンドとして使用します。
例:
$ cat test.txt
function cp1() {
source_file=$1
destination_file=$2
cp "${source_file}" "${destination_file}"
vi "${destination}"
}
$ . ./test.txt
$ cp1 a.txt b.txt
答え4
入力を保存する方法が必要な場合は、bash組み込み機能を使用して前のコマンドの最後の単語を繰り返すことができます。あなたはこれを行うことができますALT+.
> cp a.txt b.txt
> vi ALT+.
非常に便利で、vimのドット演算子を思い出させます。
幸せなゴルフ。