vimで開くファイルをコマンドラインで編集する方法

March 31,2020 11:55 PM
Category:[Linux]
Tag:[Linux, vim]
Permalink

vimで開くファイルをコマンドラインで編集する方法を紹介します。

1.はじめに

vimは実行できるけど画面上で編集できないという環境なのですが、編集する方法が分かりません。

ということで、vimで開くファイルをコマンドラインで編集する方法を紹介します。

2.vimで開くファイルをコマンドラインで編集する

vimで開くファイルをコマンドラインで編集するには、"-c"オプションを使用します。

フォーマット

vim -c {Command} -c {Command} ... File

または

vim +{Command} +{Command} ... File

"+"または"-c"は、最初のファイルが読み込まれた後に{command}を実行するオプションです。"+"または"-c"は、最大10個まで使用できます。

{Command}はExコマンドとして解釈されます。{Command}にスペースが含まれている場合はダブルクォーテーションで囲む必要があります(使用するシェルに依存)。

vim "+set si" main.c

3.サンプル

次の内容をtest.txtで保存します。

foo
foo
foo

次のコマンドを実行します。

# vim -c '/foo' -c 's/foo/bar/' -c ':wq' test.txt

コマンドラインには何も表示されず、test.txtは次の内容になります。

bar
foo
foo

"-c"オプションで実行している内容は次の通りです。

  1. "foo"を検索(してその行に移動)
  2. ヒットした行の"foo"を"bar"に変換
  3. 終了

最後の終了を実行しない場合、vimが開いた状態で止まります。

一括置換したい場合は、

# vim -c ':%s/foo/bar/g' -c ':wq' test.txt

とすればOKです。

Comments [0] | Trackbacks [0]

多段ssh接続が必要なサーバ上のファイルをvimで直接編集する方法

March 17,2020 11:55 PM
Category:[Linux]
Tag:[Linux, ssh]
Permalink

多段ssh接続が必要なサーバ上のファイルをvimで直接編集する方法を紹介します。

1.問題点

リモートサーバ上にファイル(test.txt)があります。

ここでは「SSHポートフォワーディング(トンネリング)とは」のウェブサーバ(10.10.10.123)上にあるものとします。

このファイルをクライアントサーバから編集する場合、

# ssh 10.10.10.10
# ssh 10.10.10.123
# vi test.txt

とします。

が、クライアントサーバからウェブサーバのファイルを直接編集する方法が分かりません。

ということで、多段ssh接続が必要なサーバ上のファイルをvimで直接編集する方法を紹介します。

2.多段ssh接続が必要なサーバ上のファイルをvimで直接編集する

多段ssh接続が必要なサーバ上のファイルをvimで直接編集するには、まず、1つめの画面でポートフォワーディングを実施します。

# ssh -N -L 10000:10.10.10.123:22 10.10.10.10

ここまでは通常のsshポートフォワーディングと同じです。なお、ポート番号はsshの「22」を指定しておきます。

そして、2つめの画面でvimを起動します。

# vim scp://root@localhost:10000//home/foo/test.txt

これで、多段ssh接続が必要なサーバ上のファイルのvim画面が開きます。

3.解説

vimは次のように指定することで、リモートサーバのファイルを編集することができます。

# vim scp://<ユーザ>@<リモートサーバのIPアドレス>//<編集対象ファイル>

今回は、この「リモートサーバのIPアドレス」にsshポートフォワーディング情報「localhost:10000」を与えます。

# vim scp://<ユーザ>@localhost:10000//<編集対象ファイル>

この設定により、多段ssh接続せずにvimの起動が行えます。

4.参考サイト

参考サイトは下記です。ありがとうございました。

Comments [0] | Trackbacks [0]

Linuxシェルでコマンド実行結果を入れた変数の改行を出力する方法

March 4,2020 11:55 PM
Category:[Linux]
Tag:[Linux]
Permalink

Linuxシェルでコマンド実行結果を入れた変数の改行を出力する方法を紹介します。

1.問題点

次のようなシェルスクリプト(test.sh)を作りました。

#!/bin/bash
 
result=`ls -l`
echo $result

このスクリプトを実行すると、

# ./test.sh
合計 16 -rw-r--r--. 1 root root 8 2月 13 17:40 2020 aaa -rw-r--r--. 1 root root 8 2月 13 17:40 2020 bbb -rw-r--r--. 1 root root 8 2月 13 17:40 2020 ccc -rwxrwxr-x. 1 root root 41 2月 13 17:38 2020 test.sh

となり、改行が失われますが、対処方法が分かりません。

ということで、シェルでコマンド実行結果を入れた変数の改行を出力する方法を紹介します。

2.コマンド実行結果を入れた変数の改行を出力する

コマンド実行結果を入れた変数の改行を出力するには、echoするときの変数をダブルクォーテーションで括ればOKです。

#!/bin/bash
 
result=`ls -l`
echo "$result"

これで改行が反映されます。

# ./test.sh
合計 16
-rw-r--r--. 1 root root  8  2月 13 17:40 2020 aaa
-rw-r--r--. 1 root root  8  2月 13 17:40 2020 bbb
-rw-r--r--. 1 root root  8  2月 13 17:40 2020 ccc
-rwxrwxr-x. 1 root root 41  2月 13 17:38 2020 test.sh
Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages