🐍
Jupyter Notebookのシェルコマンド!とマジックコマンド%
シェルコマンド!とマジックコマンド%
!(シェルコマンド)は、ファイルシステムの操作や外部プログラムの実行など、シェル経由で行いたい操作に使用します。
%(マジックコマンド)は、Jupyter Notebook 自体の機能や環境を制御するためのコマンドに使用します。これにはディレクトリの変更、環境変数の設定、ノートブックの表示設定の調整などが含まれます。
!cd sample_dataと%cd sample_dataの違い
!cd sample_data
!cd sample_dataをしてもディレクトリの移動は反映されません。! で実行されるシェルコマンドが一時的なサブシェルで実行されるためです。このサブシェルはコマンドが完了すると終了し、その変更(この場合はディレクトリの変更)は呼び出し元の環境(Jupyter Notebook のセッション)には反映されません。

%cd sample_data
一方で、%cd sample_data はマジックコマンドであり、Jupyter Notebook の環境内で直接実行されます。このコマンドは Jupyter Notebook の作業ディレクトリを変更し、その変更は Jupyter Notebook のセッション全体に適用されます。これにより、以降のセルで実行されるコマンドは新しいディレクトリ(この場合は sample_data ディレクトリ)から実行されることになります。

まとめ
そのため、Jupyter Notebook 内で作業ディレクトリを変更したい場合は、マジックコマンドの %cd を使用するのが適切です。
参考
Discussion