web-dev-qa-db-ja.com

長い道のりの「エイリアス」を作るには?

シェルスクリプトの作成中によく使用するパスの「エイリアス」を作成しようとしました。私は何かを試しましたが、失敗しました:

myFold="~/Files/Scripts/Main"
cd myFold

bash: cd: myFold: No such file or directory

動作させるにはどうすればよいですか?
ただし、cd ~/Files/Scripts/Mainworks。

78
bashboy

これは環境変数なので(エイリアスは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
101
paxdiablo

たぶんリンクを使用した方が良いでしょう

ソフトリンク

シンボリックリンクまたはソフトリンク(ファイルまたはディレクトリ、より柔軟で自己文書化)

#      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
8
Mahmoud Bahnasy

まず、「myFold」の値にアクセスして質問内のコードを機能させるには、$が必要です。

cd "$myFold"

これを簡素化するには、~/.bashrcにエイリアスを作成します。

alias cdmain='cd ~/Files/Scripts/Main'

現在のbashセッションでエイリアスを使用可能にするために、.bashrcを一度ソースすることを忘れないでください。

source ~/.bashrc

次を使用して、フォルダに変更できます。

cdmain
5
hek2mgl

必要なパスをbashのハッシュテーブルに追加できます。

hash -d <CustomName>=<RealPath>

これで、cd ~<CustomName>ができるようになります。永続的にするには、bashrcスクリプトに追加します。

このハッシュテーブルは、コマンドが実行されるたびにコンテンツを検索する必要のないbashのキャッシュを提供するためのものであることに注意してください。したがって、このテーブルはキャッシュを無効にするイベントでクリアされます。 $PATHを変更しています。

5
Rodrigo Martins

まず、引用符を削除する必要があります。

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$
5
David W.

別のオプションは、シンボリックリンクを使用することです。すなわち:

ln -s ~/Files/Scripts/Main ~/myFold

その後、次のような~/myFoldに対する操作を実行できます。

cp some_file.txt ~/myFold

ファイルを~/Files/Scripts/Mainに配置します。元のディレクトリを保持するrm ~/myFoldを使用して、いつでもシンボリックリンクを削除できます。

4
dvj

しかし、ディレクトリの実際のエイリアスも可能です、試してください

 myScripts="~/Files/Scripts/Main"
 alias myScripts="cd $myScripts"

このように、各ディレクトリ/エイリアスペアに共通の命名規則があり、現在のディレクトリからmyScriptsに何かをコピーする必要がある場合、それについて考える必要はありません。

IHTH

2
shellter