web-dev-qa-db-ja.com

タッチとviの使用?

編集する前にタッチでファイルを作成する利点はありますか?

touch foo
vi foo

すぐに編集者に渡すのか?お気に入り:

vi foo

前者(touch、次にvi)を使用したチュートリアルがかなりあります。

55
Fawix

ファイルをtouchingすると、最初に、ファイルシステムが読み取り専用であるか他の問題であるかを確認するためだけにエディターで時間を浪費するのではなく、実際にファイルを作成する能力があることを確認します。

111
DopeGhoti

与えられた回答とは別に、タッチの利点の1つは、他のユーザー/端末がタッチ中に同じファイルを編集しているときに、変更を保存しようとすると警告が表示されることです。

WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?

それ自体は何も変更せず、ファイルに触れただけでも、警告が表示されます。

25
amisax

受け入れられた答えとは別に:

touchはファイルのタイムスタンプを更新するために使用されることに注意してください。存在するファイルでtouchを使用すると、ファイルのタイムスタンプが現在の日時に更新されます。ファイルが存在しない場合は、現在の日時をタイムスタンプとして空のファイルを作成します。

viは、書き込みを行わない限り、新しいファイルを作成しません。

たとえば、vi test.txt、いくつかのメモを入力してから、:q!; test.txtは存在しません。

19
Peschke

touchがないと、viに書き込むように指示するまで、新しいファイルは存在しません。

マルチユーザーシステムを検討してください(おそらく、多くのユーザーがいる多くのシステムで共有されているネットワークマウントファイルシステムを使用している場合)。 touchを実行すると、ファイルが確実に作成され(ファイルに書き込むことができ)、タイムスタンプも更新されます。そのようなファイルを作成したい別のユーザーは、あなたがそれを所有していることを確認します。それがすでに存在していて、別のユーザーがそれを削除または置き換えたい場合は、最近変更されたことがわかり、よく考えます。

8
Adam Katz

最初にtouchingするメリットはありません。 viは、ファイルが存在しない場合に作成します。

受け入れられた答えは、エディターで時間を無駄にする前にそこに書くことができるかどうかをチェックすることです。確かに、今度はtouchを入力する時間を無駄にしてしまいます。どこかに書き込むことができないことは、それが機能する頻度に比べてかなり例外的です(ホームディレクトリまたは/tmp外のファイルのSudoを覚えているか、rootとしてログインしている限り)。

エディターを開いて必要なことを行ってから、ファイルを保存してください。 :w!を使用しても機能しない場合は、別の場所(:w ~/asdf)に保存して、問題を修正してください。修正したら、一時ファイルから元のファイルにファイルの内容をコピーできます:cat ~/asdf > /mnt/example.txt && rm ~/asdfcatまたはmvの代わりにcpを使用する理由は、宛先の権限およびその他の属性を使用するためです。

さらに、より高度なコマンドラインの使用法については、viをバックグラウンドで Ctrl+Z 問題を修正している間(または:suspend、または:susを使用)、最後にもう一度fgを実行して、書き込みコマンドを実行します。

編集: / u/G-Man のコメントに応じて投稿を改善しました。ありがとう!

4
Luc

メリットはありません。 viは、存在しない場合にファイルを作成します。

3
ronakg

特にviで使用する場合編集する前にファイルを作成する必要はありません。viを使用して、新しいファイルを作成および保存できます。ただし、ファイルが存在する必要がある呼び出しコンテキストがあります。たとえば、私のシステム(OS X)では、次のように適切なGUIエディター(ファイルタイプによって決まる)を起動できます。

open foo.txt

これはfoo.txt TextEdit、emacs、またはテキストファイルのエディタとして指定したもので、プロセスを切り離して、プロンプトをすぐに表示します。 (open bar.pyは、IDLE、python editor;など)で開く可能性があります。または、emacsを明示的に要求できます。

open -a emacs foo.txt

ただし、openでは、ファイルがすでに存在している必要があります。それ以外の場合は、エラーが発生します。したがって、emacsを次のシェル関数に定義する必要がありました。これにより、emacs fooemacsが存在しない場合でもfoo GUIを起動します。

function emacs () 
{ 
    if [ -n "$1" -a ! -e "$1" ]; then
        /usr/bin/touch "$1";
    fi;
    open -a emacs "$@"
}
1
alexis

viはビジュアルテキストエディターです(vi = visual)とにかく「ed」と比較するとビジュアルであり、一度に1行のテキストを表示および変更するだけです。

touchコマンドは、既存のファイルのタイムスタンプを更新するか、ファイルがまだ存在しない場合は新しいファイルを作成します。タイムスタンプに大きく依存するものをテストするのに適しています。

ファイルがテキストファイルである場合、またはファイルがまだ存在しない場合は、viで開き、:wqコマンドをviに発行すると、そのファイルを操作した場合と同じ結果になります。これが、2つのコマンドがまったく類似している唯一の方法です。

1
malyy

touchコマンドファイルの日付と時刻を現在のタイムスタンプで変更します。
ファイルが存在しない場合は、日付と時刻で新しいファイルを作成します。

vieditorは、ファイルが存在しない場合にファイルを編集するために使用されます。ファイルを保存しない限り、新しいファイルが作成されます。

0
Premraj

タッチのmanページで、彼の主な仕事はファイルのタイムスタンプを変更することです。
Ofcも現在のタイムスタンプでファイルを作成しているので、ファイルを編集できます。

VIは、テキストの編集、開いた、保存、ファイルの編集などを行うテキストエディターです。

すべてがユーザーとウサギのフレーバーです。次にタッチすると、viまたはvi file.txtと同じものが別の色になります。

0
igiannak

viはユーザーとしてファイルを編集するために使用されますが、touchはファイルにタイムスタンプを設定でき、主にスクリプトなどで使用されます。

ファイルを作成する別の方法は次のとおりです。

>newfile.txt
0
licklake