LS 関数のような SYSTEM コマンドを実行すると​、表示結果が文字化け​するのはなぜですか?

6 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 3 月 25 日
コマンドウィンドウから、LS コマンドを実行しています。作業ディレクトリにあるフォルダやファイルを表示したところ、表示結果にゴミのような文字列が含まれて、正しく表示されません。
フォルダ名やファイル名は英語(アルファベット)です。また、ファイル名は、正しく表示されているようです。
以下の結果は、いずれも、正常ではありません。
ls
!ls
system('ls')

採用された回答

MathWorks Support Team
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 件)

カテゴリ

Help Center および File Exchange言語の基礎 についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!