« ^ »

xonsh tips

所要時間: 約 1分

プロンプトマークの変更

> $PROMPT='xonsh$ '
xonsh$
xonsh$

標準出力への出力を1行ずつ処理する

bashで次のようにすると `ls` の出力を1行ずつ処理できます。

$ for ii in `ls`
for> do
for>    echo $ii;
for> done

xonshでは `$(ls)` で `ls` の実行結果が1つの文字列として返されるので.split('\n')することで1行ずつに分割されたlistとして扱えます。

xonsh$ for ii in $(ls).split('\n'):
......     print(ii)
......

shellへの変数展開

変数として定義したものはそのままxonshで使えません。

xonsh$ count = 1
xonsh$ echo count  # echoはコマンドだがcountはpythonの変数なので展開されない
count
xonsh$ echo $count  # pythonの変数はshell変数としては展開されない
$count

@() でPythonの変数を囲むことでshellコマンド実行時に変数展開できます。

xonsh$ echo @(count)
1