編集する前にタッチでファイルを作成する利点はありますか?
touch foo
vi foo
すぐに編集者に渡すのか?お気に入り:
vi foo
前者(touch
、次にvi
)を使用したチュートリアルがかなりあります。
ファイルをtouch
ingすると、最初に、ファイルシステムが読み取り専用であるか他の問題であるかを確認するためだけにエディターで時間を浪費するのではなく、実際にファイルを作成する能力があることを確認します。
与えられた回答とは別に、タッチの利点の1つは、他のユーザー/端末がタッチ中に同じファイルを編集しているときに、変更を保存しようとすると警告が表示されることです。
WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?
それ自体は何も変更せず、ファイルに触れただけでも、警告が表示されます。
受け入れられた答えとは別に:
touch
はファイルのタイムスタンプを更新するために使用されることに注意してください。存在するファイルでtouch
を使用すると、ファイルのタイムスタンプが現在の日時に更新されます。ファイルが存在しない場合は、現在の日時をタイムスタンプとして空のファイルを作成します。
vi
は、書き込みを行わない限り、新しいファイルを作成しません。
たとえば、vi test.txt
、いくつかのメモを入力してから、:q!
; test.txt
は存在しません。
touch
がないと、vi
に書き込むように指示するまで、新しいファイルは存在しません。
マルチユーザーシステムを検討してください(おそらく、多くのユーザーがいる多くのシステムで共有されているネットワークマウントファイルシステムを使用している場合)。 touch
を実行すると、ファイルが確実に作成され(ファイルに書き込むことができ)、タイムスタンプも更新されます。そのようなファイルを作成したい別のユーザーは、あなたがそれを所有していることを確認します。それがすでに存在していて、別のユーザーがそれを削除または置き換えたい場合は、最近変更されたことがわかり、よく考えます。
最初にtouch
ingするメリットはありません。 vi
は、ファイルが存在しない場合に作成します。
受け入れられた答えは、エディターで時間を無駄にする前にそこに書くことができるかどうかをチェックすることです。確かに、今度はtouch
を入力する時間を無駄にしてしまいます。どこかに書き込むことができないことは、それが機能する頻度に比べてかなり例外的です(ホームディレクトリまたは/tmp
外のファイルのSudo
を覚えているか、rootとしてログインしている限り)。
エディターを開いて必要なことを行ってから、ファイルを保存してください。 :w!
を使用しても機能しない場合は、別の場所(:w ~/asdf
)に保存して、問題を修正してください。修正したら、一時ファイルから元のファイルにファイルの内容をコピーできます:cat ~/asdf > /mnt/example.txt && rm ~/asdf
。 cat
またはmv
の代わりにcp
を使用する理由は、宛先の権限およびその他の属性を使用するためです。
さらに、より高度なコマンドラインの使用法については、vi
をバックグラウンドで Ctrl+Z 問題を修正している間(または:suspend
、または:sus
を使用)、最後にもう一度fg
を実行して、書き込みコマンドを実行します。
編集: / u/G-Man のコメントに応じて投稿を改善しました。ありがとう!
メリットはありません。 vi
は、存在しない場合にファイルを作成します。
特に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 foo
emacs
が存在しない場合でもfoo
GUIを起動します。
function emacs ()
{
if [ -n "$1" -a ! -e "$1" ]; then
/usr/bin/touch "$1";
fi;
open -a emacs "$@"
}
vi
はビジュアルテキストエディターです(vi = visual)とにかく「ed」と比較するとビジュアルであり、一度に1行のテキストを表示および変更するだけです。
touch
コマンドは、既存のファイルのタイムスタンプを更新するか、ファイルがまだ存在しない場合は新しいファイルを作成します。タイムスタンプに大きく依存するものをテストするのに適しています。
ファイルがテキストファイルである場合、またはファイルがまだ存在しない場合は、viで開き、:wq
コマンドをviに発行すると、そのファイルを操作した場合と同じ結果になります。これが、2つのコマンドがまったく類似している唯一の方法です。
touch
コマンドファイルの日付と時刻を現在のタイムスタンプで変更します。
ファイルが存在しない場合は、日付と時刻で新しいファイルを作成します。
vi
editorは、ファイルが存在しない場合にファイルを編集するために使用されます。ファイルを保存しない限り、新しいファイルが作成されます。
タッチのmanページで、彼の主な仕事はファイルのタイムスタンプを変更することです。
Ofcも現在のタイムスタンプでファイルを作成しているので、ファイルを編集できます。
VIは、テキストの編集、開いた、保存、ファイルの編集などを行うテキストエディターです。
すべてがユーザーとウサギのフレーバーです。次にタッチすると、viまたはvi file.txtと同じものが別の色になります。
viはユーザーとしてファイルを編集するために使用されますが、touchはファイルにタイムスタンプを設定でき、主にスクリプトなどで使用されます。
ファイルを作成する別の方法は次のとおりです。
>newfile.txt