エディターを開かずにテキストファイルに行を追加するコマンド


147

エディターを開かずにファイルに追加したい行があると仮定します。

どうすればこの行を追加できますか

alias list='ls -cl --group-directories-first'

このファイルに

config.fish

回答:


237

演算子を使用して、テキストをファイルに追加できます>>

echo "hello world" >> my_file.txt

またはあなたの場合

echo "alias list='ls -cl --group-directories-first'" >> config.fish

引用符の種類に注意してください。


25
エコー自体を使用>しますが、1つだけを指定すると、ファイルは切り捨てられ、追加されません。より安全なコマンドには、sedを使用できます。– sed -i '$a hello world' filename
反転

12
説明:-iファイルを更新し(それ以外の場合は結果をstdoutに出力します)、$ファイルの末尾に一致する正規表現で、ファイルa名に次のテキストを追加します。
反転

echo "hello world" >> my_file.txtで新しい最終行を作成しませんHWが、最終行の文字列に追加します。
ティモ

HW@timo とは何ですか?
wp

たぶん "Hello World" @ 7wp :) echo改行が追加されます(単なる文字列ではなく、行になります)。で改行をオフに切り替えることができ-nます。
ステファノパラッツォ

3

特にUbuntuで利用可能な複数のテキスト処理ユーティリティを介して、テキストエディタを開かずにファイルに追加する方法はたくさんあります。

  • tee -a config.fish <<< "alias list='ls -cl --group-directories-first'"
  • awk 'BEGIN{ printf "alias list=\x27ls -cl --group-directories-first\x27\n" >> "config.fish" }'
  • sed -i '$a alias list='"'"'ls -cl --group-directories-first'"'" config.fish

1

Stefanoの答えに加えて、以下も使用できますcat

  • ヒアドキュメントの使用:

    $ cat >> config.fish <<'EOF'
    > alias list='ls -cl --group-directories-first'
    > EOF
    

    <<'EOF'は、「次の行を入力として取得し、行に到達するまで」を意味しますEOF。引用符は、文字どおり入力を受け取ることを意味します。

  • または、stdinの行を入力します。

    $ cat >> config.fish

    次に、行を貼り付けるか入力し、を押しEnterて新しい行に移動し、Ctrl + Dを押して終了をマークします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.