プロンプトマークの変更
> $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