別のアプローチは、この目的専用の独自のコマンドを作成することです。これは、次のような関数を介して実行できます。
$ function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
ここで、(1) mv-special
は関数名です。(2)変数$1
and $2
は、コマンドmv
andで使用される関数の引数cd
です。(3) $(echo $2-)
varの文字列の末尾にワイルドキャット文字を追加し、変数にパスのみが含まれる場合の$2
動作を修正します。(4)はからのパスのみをフィルタリングします。dirname
$2
$(dirname $(echo $2-))
$2
この回答によると、関数は次のようになります。
$ function mv-special { mv $1 $2; cd ${2%/*}; }
ここで:${2%/*}
からのパスのみをフィルタリングし$2
ます。
コマンドとして使用するには、この関数をエクスポートする必要があります。
$ export -f mv-special
使用法:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/file.pdf
または:
$ mv-special file.pdf ../../../Dropbox/sharedfolder/subdirectory/
それに注意してください-両方のバリアントについて-2番目の引数($2
)はファイル名またはスラッシュ(/
)で終わる必要。
新しいコマンドを永続的に使用可能にするには、関数の定義とエクスポートコマンドを以下に追加する必要があります~/.bashrc
。
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd $(dirname $(echo $2-)); }
export -f mv-special
または:
# My custom 'mv-special' command:
function mv-special { mv $1 $2; cd ${2%/*}; }
export -f mv-special
カスタムコマンドを行うことができ、中に配置された実行可能なスクリプトファイル経由~/bin
かに/usr/sbin
:どのように私は(スクリプトを実行する)カスタムターミナルコマンドを作成することができますか?しかし、正直に言うと、私が直面したトラブルの動作とcd
、このシナリオでは。