2

シンボリック リンク

シンボリックリンクを理解するのに苦労しています。私は基本的な前提を理解していると信じています。それは本質的にエイリアスです。

ただし、現在の作業ディレクトリをシンボリックリンクの作成に使用させていると仮定すると、それがどのように機能するかは、作業ディレクトリに依存しますか?

私が使用している現在のコマンドはln -s

シナリオ例

私は GitHub にいくつかのプロジェクトを持っています。そのうちのいくつかは、~/bin に保存する、私が書いた単純な小さなスクリプトです。~/bin は、これらのスクリプトの呼び出しに簡単にアクセスできるように、私の $PATH 環境変数にあります。

$echo $PATH
/Users/me/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin

/usr/local/git/bingit のインストールで、$PATH に追加されているように見えることに気付きました。とりあえず、なかったことにしようと思います。

例:(hist最近使用したコマンドの統計を表示する簡単なスクリプトです

#/bin/bash
history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl |  head -n10

$hist
     1  115  23%    l
     2  58   11.6%  cd
     3  44   8.8%   ls
     4  29   5.8%   git
     5  14   2.8%   sudo
     6  13   2.6%   locate
     7  12   2.4%   open
     8  11   2.2%   wc
     9  10   2%     dt
    10  9    1.8%   rm

このアクションを実行すると:

$cd ~/bin
$pwd
$/Users/me/bin
$ln -s hist ~/Desktop/hist
$ls -la ~/Desktop/
$ls -la | grep hist
lrwxr-xr-x   1 me  staff  4 Sep 15 21:15 hist -> hist
$cd ~/Deskop
$hist

コマンド ワードですが、気になるのはそのリストhist -> histです。実際のソースがどこにあるかについての情報はありません。ファイルを別の場所に移動できるかどうかはわかりませんが、引き続き機能します。

そのため、最近はシンボリック リンクを作成するときに拡張トークンを使用しないようにしています。~no moreなどの意味。

.bash_profileGitHub を使い始め、 、.bashrc、およびのリポジトリを作成していたので、これを開始する必要さえありました.bash_history。に変更を加え、ローカル リポジトリから に変更して.bash_profileから実行するたびに、大変な作業になりました。cp~/binsource ~/bin/.bash_profile

質問

でこれを行うための適切な手順は何ですかln -s、それとも純粋に好みの問題であり、最終結果は常に同じように機能します。

良いニュースは、-F フラグについて学習したlnことです。これにより、宛先であるファイル名をヒットしてもエラーが発生しなくなりました。-F フラグはlnそれを上書きするように指示するのでmv、ファイルを 'ing してからln -sコマンドを実行する時間を節約できます。

参照

これは私の ~/bin が現在どのように見えるかを示しています。シンプルにするために多くを削除しています:

$l
total 56
lrwxr-xr-x  1 me  staff   53 Sep 15 20:40 hist -> /Users/me/Documents/me/git-projects/hist/hist
lrwxr-xr-x  1 me  staff   57 Sep 15 20:41 lcaser -> /Users/me/Documents/me/git-projects/lcaser/lcaser
lrwxr-xr-x  1 me  staff   70 Sep 10 05:12 mate -> /Applications/TextMate 1.x.app/Contents/SharedSupport/Support/bin/mate
lrwxr-xr-x  1 me  staff   56 Sep 15 20:42 tart -> /Users/me/Documents/me/git-projects/tart/tart.sh
lrwxr-xr-x  1 me  staff   69 Sep 15 20:44 watchinstall -> /Users/me/Documents/me/git-projects/watchInstall/watchInstall
4

1 に答える 1