通常、私は物事を別々のアクションに分割し、出力をコピーして別の入力に貼り付けます。
$ which git
/usr/local/bin/git
$ sudo mv git-credential-osxkeychain /usr/local/bin/git
出力を入力に変換する簡単なハックはありますか? 何かのようなもの:
$echo which wget | sudo mv git-credential-osxkeychain
set -vx
myGit=$(which git)
gitDir=${myGit#/git} ; gitDir=${gitDir#/bin}/git
echo sudo mv git-credential-osxkeychain ${gitDir}
set -vx
これで必要なアクションが確実に実行される場合は、最後の行のと を削除しecho
ます。
必要なキーストロークの数を減らすことはおそらく可能ですが、このバージョンは、どのような手法が使用され、どのように機能するかを理解しやすいと思います.
IHTH
パイプ構文を使用する場合は、を参照してくださいxargs
。
うまく$echo which wget | sudo mv git-credential-osxkeychain
いかないのは、パイピングが前のコマンドの stdout を次のコマンドの stdin にリダイレクトするためです。この場合、move
stdin からの入力は受け取りません。
興味深いのはwhich git
、
/usr/local/bin/git
しかし、あなたはに移動git-credential-osxkeychain
しています
/usr/local/git/bin/
あの二人は似合わない。タイプミスか何かですか?
コマンド置換を使用する$(command)
sudo mv git-credential-osxkeychain $(which git)
これにより、コマンドがその出力に置き換えられます。http://tldp.org/LDP/abs/html/commandsub.htmlですべてを見つけることができます