rm -rf symlink/して不幸になりたくなければ unlinkを使えばいい
シンボリックリンクをrm -rf symlink/すると不幸になる - かーねる・う゛いえむにっき
ですが、ディレクトリを消してしまうというリスクをそもそもなくして
しまえばいいですよね。その答えが unlinkコマンドです。
unlinkコマンド
ファイルだけ消せる rmコマンドのように思っていただければよいかと
思います。ディレクトリは消せません。オプションもほとんどありません。
coreutilsだと rmとソースは違いますが、FreeBSDだと rmのハードリンクです。
ついでにソースは以下のような感じでした。(FreeBSDの bin/rm/rm.cより抜粋)
if (strcmp(p, "unlink") == 0) { while (getopt(argc, argv, "") != -1) usage(); argc -= optind; argv += optind; if (argc != 1) usage(); rm_file(&argv[0]); exit(eval); }
例
ファイルしか消せないので、うっかり後ろにバックスラッシュをつけても
大丈夫です。
% ln -sf somedir symdir % unlink symdir/ # NG unlink: cannot unlink `symdir/': Not a directory % unlink symdir # OK %
おわりに
私も含め、ファイル・ディレクトリを削除は rmコマンドに慣れきっていると
思うんですが、シンボリックリンクを消すときは unlinkって覚えておけば、
不幸に機会を一つ減らせるのではないでしょうか.