LS 関数のような SYSTEM コマンドを実行すると、表示結果が文字化けするのはなぜですか?
6 ビュー (過去 30 日間)
古いコメントを表示
コマンドウィンドウから、LS コマンドを実行しています。作業ディレクトリにあるフォルダやファイルを表示したところ、表示結果にゴミのような文字列が含まれて、正しく表示されません。
フォルダ名やファイル名は英語(アルファベット)です。また、ファイル名は、正しく表示されているようです。
以下の結果は、いずれも、正常ではありません。
ls
!ls
system('ls')
採用された回答
MathWorks Support Team
2013 年 3 月 25 日
Release 2013a (R2013a) にて、機能拡張されました。それ以前のリリースに関しては、以下の記述をご確認ください。
これは、MATLAB の SYSTEM コマンドと、Linux に内蔵のシェル間でのやりとりで発生している問題です。特に、いくつかのターミナル設定では、Unix シェルを呼ぶことにより、付随的なテキストが
表示される可能性があります。
この問題を回避する方法として、以下の方法をお試しください。
1. MATLAB_SHELL 環境変数の値を \bin\sh に変更します。
setenv('MATLAB_SHELL', '\bin\sh');
2. 問題のあるコマンドを実行し、正しい結果が表示されるか、確認します。
3. シェルの設定ファイル .bashrc/.cshrc ファイル内で、 MATLAB_SHELL 環境変数を \bin\sh に設定します。
ただし、上記 1 にて設定を行っても、改善されない場合もあります。その場合には、以下の手順にて直接シェルの設定ファイルを書き換えてください。
1. MATLAB を終了します。
2. シェルの設定ファイル .bashrc/.cshrc ファイル内で、 MATLAB_SHELL 環境変数を \bin\sh に設定します。
3. 新規 Linux ターミナルを開きます。
4. MATLAB を起動します。
5. 問題のあるコマンドを実行し、正しい結果が表示されるか、確認します。
上記のいずれの方法でも改善されない場合には、SYSTEM コマンド、もしくは ! 演算子を使って、Linux コマンドを以下のように実行することをお試しください。
通常の実行:
>> [a, b] = SYSTEM('ls')
変更後:
[a, b] = SYSTEM('ls < /dev/null')
< /dev/null リダイレクトは、MATLAB からのインタラクティブな入力を無効にし、出力からの不要な文字列を削除します。
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!