シェルスクリプトの作成中によく使用するパスの「エイリアス」を作成しようとしました。私は何かを試しましたが、失敗しました:
myFold="~/Files/Scripts/Main"
cd myFold
bash: cd: myFold: No such file or directory
動作させるにはどうすればよいですか?
ただし、cd ~/Files/Scripts/Main
works。
これは環境変数なので(エイリアスはbash
で異なる定義を持っています)、次のようなもので評価する必要があります。
cd "${myFold}"
または:
cp "${myFold}/someFile" /somewhere/else
しかし、実際には、そのディレクトリに簡単に切り替えたい場合は、realエイリアス(.bashrc
のようなbash
スタートアップファイルのいずれか)を作成する方が簡単です。 、キーストロークを保存できます:
alias myfold='cd ~/Files/Scripts/Main'
次に、使用できます(cd
なし):
myfold
定義を削除するには、unalias
を使用します。次のトランスクリプトは、動作中のこれらのallを示しています。
pax> cd ; pwd ; ls -ald footy
/home/pax
drwxr-xr-x 2 pax pax 4096 Jul 28 11:00 footy
pax> footydir=/home/pax/footy ; cd "$footydir" ; pwd
/home/pax/footy
pax> cd ; pwd
/home/pax
pax> alias footy='cd /home/pax/footy' ; footy ; pwd
/home/pax/footy
pax> unalias footy ; footy
bash: footy: command not found
たぶんリンクを使用した方が良いでしょう
シンボリックリンクまたはソフトリンク(ファイルまたはディレクトリ、より柔軟で自己文書化)
# Source Link
ln -s /home/jake/doc/test/2000/something /home/jake/xxx
ハードリンク(ファイルのみ、柔軟性が低く、自己文書化されません)
# Source Link
ln /home/jake/doc/test/2000/something /home/jake/xxx
ヒント:ホームにリンクを表示する必要がない場合は、ドットで開始できます。 ;デフォルトでは非表示になり、次のようにアクセスできます
cd ~/.myHiddelLongDirLink
まず、「myFold」の値にアクセスして質問内のコードを機能させるには、$
が必要です。
cd "$myFold"
これを簡素化するには、~/.bashrc
にエイリアスを作成します。
alias cdmain='cd ~/Files/Scripts/Main'
現在のbashセッションでエイリアスを使用可能にするために、.bashrc
を一度ソースすることを忘れないでください。
source ~/.bashrc
次を使用して、フォルダに変更できます。
cdmain
必要なパスをbashのハッシュテーブルに追加できます。
hash -d <CustomName>=<RealPath>
これで、cd ~<CustomName>
ができるようになります。永続的にするには、bashrcスクリプトに追加します。
このハッシュテーブルは、コマンドが実行されるたびにコンテンツを検索する必要のないbashのキャッシュを提供するためのものであることに注意してください。したがって、このテーブルはキャッシュを無効にするイベントでクリアされます。 $PATH
を変更しています。
まず、引用符を削除する必要があります。
bashboy@Host:~$ myFolder=~/Files/Scripts/Main
引用符は、シェルがティルドを$HOME
ディレクトリであるという特別な意味に拡張するのを防ぎます。
その後、$myFolder
を使用できます 環境 シェル変数:
bashboy@Host:~$ cd $myFolder
bashboy@Host:~/Files/Scripts/Main$
aliasを作成するには、エイリアスを定義する必要があります。
alias myfolder="cd $myFolder"
その後、この種のコマンドのように扱うことができます:
bashboy@Host:~$ myFolder
bashboy@Host:~/Files/Scripts/Main$
別のオプションは、シンボリックリンクを使用することです。すなわち:
ln -s ~/Files/Scripts/Main ~/myFold
その後、次のような~/myFold
に対する操作を実行できます。
cp some_file.txt ~/myFold
ファイルを~/Files/Scripts/Main
に配置します。元のディレクトリを保持するrm ~/myFold
を使用して、いつでもシンボリックリンクを削除できます。
しかし、ディレクトリの実際のエイリアスも可能です、試してください
myScripts="~/Files/Scripts/Main"
alias myScripts="cd $myScripts"
このように、各ディレクトリ/エイリアスペアに共通の命名規則があり、現在のディレクトリからmyScriptsに何かをコピーする必要がある場合、それについて考える必要はありません。
IHTH