は、ディレクトリツリー内のディレクトリを上に移動したいです。
これは、スクリプトでは、.bashrcのようでエイリアスますalias up1='cd../' alias up2='cd../../'
を、あなたはそれを複数回スクリプトのみクレート存在しないentrysを実行している場合ように、私は深さ9を制限します。あなたが深さを与えてからスクリプトがこのエイリアスを管理するなら、エントリを削除させることができますか?
あなたが探しているスクリプトではなく、独自のインスタンスで実行しているスクリプトから、現在のシェルに影響を与えることはできません。また、このスクリプトがエイリアスを作成した後で、再度認証するか新しいシェルを開く必要があります。その時点から.bashrcからエイリアスエントリを削除しない限り動作します。
#!/bin/sh
[[ ! $# == 1 ]] && echo "Only one parameter accepted" && exit 1
[[ $(echo $1 | grep -c ^[1-9]$) -eq 0 ]] && echo "parameter must be between 1 and 9" && exit 1
cdcommand=""
for ((i = 1 ; i <= $1 ; i++)); do
cdcommand=$(echo $cdcommand | sed 's/^/\.\.\//g')
[[ $(cat ~/.bashrc | grep -c "alias up$i='cd $cdcommand' ") == 0 ]] &&
echo "alias up$i='cd $cdcommand' " >> ~/.bashrc
done
スクリプトはサブプロセスで実行されます。環境に対する変更は、呼び出し元のシェルには影響しません。 – Barmar
実行可能なスクリプトではなく、[関数](http://zsh.sourceforge.net/Doc/Release/Functions.html)にすることはできますか? –