シェルコマンドのエイリアスを使用して、シェルコマンドの入力をPythonスクリプトに渡したいと思います。
test.py:
import sys
print(sys.argv)
ニックネーム
alias foo='echo $(python test.py $1)'
$ python cd_alias_test.py hello
すべての引数が印刷されるので、この['test.py', 'hello']
エイリアスは同じことをしたいと思います。ただし、標準出力は
['test.py'] hello
これは、入力文字列がスクリプトの引数ではなく標準入力に渡されることを意味します。
希望の効果をどのように取得できますか?
答え1
alias test='echo $(python test.py $1)'
$1
エイリアスとして定義されていません。エイリアスはシェル機能ではありません;彼らは単なるテキスト置換なので、あなたのものはに拡張され、拡張さtest hello
れecho $(python test.py ) hello
ますecho ['test.py'] hello
。
シェル機能が必要な場合は、作成してください! (そして関数やエイリアスを呼び出さないでくださいtest
。名前はすでにシェルで論理評価のために予約されています。)
function foo() { echo $(python test.py $1) }
foo hello
test.py
しかし、人々は不思議です。単に実行可能ファイル(たとえばchmod 755 test.py
)を作成し、#!/usr/bin/env python3
その中に最初の行を含めるとしたらどうでしょうか?それから直接実行してください。
./test.py hello darkness my old friend
答え2
あなたの質問は混乱していますが、スクリプトに引数を渡してエイリアスを作成したいようです。
私はこれがあなたが望むものだと思います。
alias runtest='python test.py'
他に述べたように、シェル関数はエイリアスよりも優先されるので、ささいな引数処理が可能です。
したがって、この例では次のようになります。
function runtest() { python test.py "$1" ; }