GNU/Linux >> Linux の 問題 >  >> Linux

テキストエディタでシンボリックリンクを編集することはできますか?

他の人がすでに指摘しているように、直接は不可能ですが、もちろんスクリプトを書くことはできます。たくさんのシンボリックリンクを変更しなければならなかったときに思いついたのがこれです

#! /bin/bash

tmp=$(mktemp)
trap "rm $tmp" EXIT

while [ ! -z "$1" ]; do
    filename="$1"; shift
    if [ ! -h "$filename" ]; then
        echo "Not a symlink: $filename";
        continue
    fi
    stat -c "%N" "$filename" >> $tmp
done
emacs $tmp

while read filename linkname; do
    ln -sf "$linkname" "$filename"
done < <(sed "s/'\(.*\)' -> '\(.*\)'/\1 \2/" $tmp)

それは私にとってはうまくいきましたが、確かに完璧ではないので、自己責任で使用してください...


原則として可能ですが、シンボリック リンクの宛先を読み取るには特別なシステム コール readlink() が必要なため、エディターで特にサポートする必要があります。 .

これを実際に行うエディタを見つけることはほとんどありません。これはあまり有用ではなく、ほとんどのユーザーがシンボリック リンクを開くように求められたときにエディタに求めていること、つまりシンボリック リンクが指すファイルを開くことと矛盾するためです。


シンボリック リンクの保存に従って ウィキペディアの記事シンボリック リンクのセクションでは、シンボリック リンクは inode に保存されます。 .この i ノードは、問題のファイルに関するいくつかの情報を含むデータ構造です。このスレッドによると、touch コマンドを使用して、その値の一部を変更できます。そのため、@Wyzard が言及した問題により、テキスト エディターを使用して変更できない場合がありますが、touch などの他のコマンドライン ツールを使用して変更できる可能性があります。 .

これがお役に立てば幸いです!


はい、Emacs では、これは dired モード、特に wdired (書き込み可能な dired) モードで可能です。

dired と wdired は両方とも組み込みパッケージであることに注意してください。

以下に例を示します...

(ところで:私は Emacs に M-x を与えるために Smex を使用しています コマンドの検索と実行、より人間工学に基づいた UI + ファジー マッチング)


Linux
  1. edを使用してLinuxターミナルのテキストエディタを起動します

  2. ViMテキストエディタ101ガイド

  3. Atom-IDE –ステロイドのAtomテキストエディター

  1. KWriteとKateを使用してLinuxでテキストを編集する

  2. Kateエディタでシステムファイルを編集する方法は??

  3. ローカル エディターを使用したリモート編集 (Linux)

  1. Kdenliveを使用してLinuxでビデオを編集する

  2. LinuxでAudacityを使用してオーディオを編集する

  3. e3Linuxテキストエディタをお試しください