私が書いたいbashのヘルプを使うことができます。スクリプトの目的は、複数のプロジェクトを作業するときに開発をスピードアップすることです。コードで気になる部分を表示しておきました。
# is there a way to persist this through working enviornments besides this?
declare -x WORKING=`cat ~/.working`
#alias p='builtin cd $WORKING && pwd && ls'
alias pj='builtin cd $WORKING/public/javascripts && pwd && ls'
function pp {
echo `pwd` > ~/.working
}
# is there a way to close the scope of this function?
function p {
# how do I process flags here?
# -f and -d etc. can exist but may not
# either way I want $1 to be set to the first string if there
# is one
if [ -z "$1" ]
then
echo '*'
builtin cd $WORKING && pwd && ls
return
fi
BACK=`pwd`
builtin cd $WORKING
#f=`find . -iname "$1"`
f=( `echo $(find . -type d -o -type f -iname "$1") | grep -v -E "git|node"` )
#echo ${f[1]}
if [ -z "${f[0]}" ]
then
return
fi
if [ -z "${f[1]}" ]
then
# how can I write this as a switch?
if [ -f ${f[0]} ]
then
vim ${f[0]}
return
fi
if [ -d ${f[0]} ]
then
builtin cd ${f[0]}
return
fi
else
echo "multiple found"
#for path in $f
#do
# sort files and dirs
# sort dirs by path
# sort files by path
#done
# display dirs one color
# display files another color
# offer choices
# 1) open all files
# 2) open a file
# 3) cd to selected directory
# 4) do nothing
fi
# nothing found
builtin $BACK
}
答え1
# is there a way to persist this through working enviornments besides this?
declare -x WORKING=`cat ~/.working`
おそらく次のものを使用できます。
export WORKING=$(cat ~/.working)
再起動するまで環境に追加する必要があります。
後で以下を使用して参照できます。
echo $WORKING
プロンプトで。
答え2
変数の永続性を実現するには、非主なメモリメカニズムが必要です。ファイルが良い選択です。ここではbashショートカットを使用します。$(cat filename)
declare -x WORKING=$(< ~/.working)
そうする必要はありませecho $(pwd)
ん、pwd
function pp { pwd > ~/.working; }
「範囲を閉じる」とは、ローカル変数を関数にローカルに保持することを意味すると仮定します。local
組み込み関数を使用してください。
function p {
local OPTIND OPTARG
local optstring=':fd' # declare other options here: see "help getopts"
local has_f=false has_d=false
while getopts $optstring option; do
case $option in
f) has_f=true ;;
d) has_d=true ;;
?) echo "invalid option: -$OPTARG"; return 1 ;;
esac
done
shift $((OPTIND - 1))
if $has_f ; then
do something if -f
elif $has_d ; then
do something if -d
fi
# ... whatever else you have to do ...
}