[解決済み!] Bash: cd: 引数が多すぎます / Zsh: cd: 現在のディレクトリ内に文字列がありません

やまと English Français Deutsch Español Português

概要:cd: 引数が多すぎるエラーは、コマンドシェルでcdを実行してデバイス上の相対ディレクトリに移動しようとしたときに表示されます。このiBoysoftの記事では、簡単で効果的な解決方法を紹介します。

「bash: cd: 引数が多すぎる」というエラーコードや「zsh: cd: 引数が多すぎる」というエラーが、ディレクトリに入るためにcdを入力する際にコマンドシェルで発生することに戸惑っているでしょう。

ご心配なく。この記事では、「cd: 引数が多すぎます」が発生する原因と、zsh/bash の「cd: 引数が多すぎます」を5つの簡単な修正方法で解決する方法を説明します。

なぜZsh/Bash: cd: 引数が多すぎるエラーが発生するのですか?

通常、コマンドシェルは、cdコマンドの後にファイルパスを入力することで、直接ディレクトリを開くはずです。ディレクトリ名を引数として受け入れ、現在のシェル環境の作業ディレクトリを指定したディレクトリで置き換えます。

引数が指定されていない場合、cd コマンドは HOME 環境変数で指定されたディレクトリが引数として指定されたかのように動作します。しかし、Unix シェルでは、スペースや特殊文字を含むディレクトリ名を入力すると、それらを複数の引数として認識します。そのため、bash コマンドシェルで cd: 引数が多すぎます というエラーコードが発生します。

 注意: zshコマンドシェルを実行している場合、「cd: string not in pwd」というエラーが、スペースを含むパスにcdしようとした場合に発生する場合があります。

Unix Shell は一度に複数のディレクトリに移動できるのかと疑問に思う方もいるかもしれませんが、答えは「いいえ」です。複数のディレクトリに移動したい場合は、cd コマンドを1つずつ実行する必要があります。

この投稿で、なぜ引数が多すぎるのかという疑問が解消された方は、下の「共有」ボタンをクリックして、より多くの方のお役に立てれば幸いです。

bash: cd: 引数が多すぎるというエラーとzsh: cd: 現在のディレクトリに指定した文字列が存在しないエラーの修正方法

前述の通り、Unixシェルはディレクトリ内に特殊文字やスペースを含む複数の引数があると認識し、ディレクトリへの切り替えに失敗します。このような状況に遭遇した場合は、この記事を読み進めてください。この記事では、cd コマンドを正しく動作させるための4つの簡単な解決策を紹介します。

解決策1: ディレクトリ名を二重引用符で囲む

cdコマンドが特殊なディレクトリに正常に切り替わるための簡単な解決策の一つは、ディレクトリ名を二重引用符で囲むことです。

ステップ1:コンピュータでターミナルを起動します。

ステップ2: cdを入力し、その後に二重引用符の記号を入力します。

ステップ3: 二重引用符でスペースや特殊文字が含まれるファイルパスを入力します。

cd "新しいフォルダ"

ステップ4: Enter/Returnキーを押してcd コマンド ラインを実行すると、ディレクトリが入力したディレクトリに変更され、新しいディレクトリでさらに操作を実行できるようになります。

さらに、ディレクトリへのパス全体を二重引用符で囲むことも、スペースや特殊文字を含むパス構成要素のみを二重引用符で囲むこともできます。

解決策2: スペースを回避するためにバックスラッシュを使用する

ディレクトリ内にスペースが含まれている場合、Unix Shellのcdコマンドラインはそれらを複数の引数に分割します。そのため、バックスラッシュはスペースをエスケープするために使用され、コマンドシェルはスペースをリテラルのスペース文字として扱いますが、引数間の区切り文字としては扱いません。

手順1:マシンでターミナルを起動します。

手順2:cdと入力し、移動先のディレクトリに移動します。

手順3:ディレクトリ名のスペースにバックスラッシュを追加します。スラッシュはパス構成要素間の区切り文字として機能し、バックスラッシュはスペースエスケープツールセットとして機能することに注意してください。

cd desktop/my\ new\ folder

手順4: Return/Enterキーを押してcdを実行し、新しいディレクトリに移動します。

解決策3: Tabキーで自動補完を使用する

Windows、Linux、および macOS のコマンドラインプログラムでは、Tabキーを押すことでコマンドを自動補完できます。例えば、Unixコマンドプロンプトでは、別のディレクトリに素早く切り替えるのに便利です。

ステップ1: デバイス上でコマンドシェルを開きます。

ステップ2: 移動したいパスを入力し始めます。

ステップ3: キーボード上のTabキーを押すことで、自動補完機能を簡単に利用できます。

似たような名前のフォルダが複数ある場合は、移動先のフォルダを特定するために、名前の最初の数文字を入力する必要があります。自動補完が機能しない場合は、指定したパスが存在しないことを意味します。

解決策4:保存先ディレクトリでターミナルを開く

コマンドシェルでディレクトリを開いて作業を進めるのが目的なので、cd と入力するだけではいけません。保存先ディレクトリでターミナルを開いても同じ効果が得られます。

Linuxを実行している場合は、以下の手順に従ってください:

ステップ1:エクスプローラでディレクトリを開きます。

ステップ2:右クリックしてターミナルで開くを選択し、コマンドシェルに戻って処理を続行できます。

macOSデバイスを実行している場合は、次のステップに従ってください:

ステップ1:Finder ウィンドウを開き、目的のフォルダに移動します。Finder ウィンドウの下部にパスバーが表示されない場合は、「表示」>「パスバーを表示」を選択します。

ステップ2:移動先のフォルダディレクトリを右クリックし、「フォルダで新規ターミナル」を選択します。

すると、ターミナルが指定したディレクトリに切り替わることが確認できます。

解決策5:フォルダをターミナルウィンドウにドラッグする

上記の解決策がすべてお好みでない場合、試してみる価値のある最終的な解決策は、フォルダディレクトリをターミナルウィンドウにドラッグするだけです。ターミナルを起動し、フォルダディレクトリをウィンドウにドラッグして左クリックすると、新しいディレクトリパスに移動します。

bash: cd: 引数が多すぎる/zsh: cd: 文字列はpwdに存在しませんの問題を解決した場合は、この記事を共有して他の人を助けましょう。

ボーナスのヒント:cdの最良の利用方法

コマンドシェル初心者の方、あるいはターミナルに強い関心と好奇心をお持ちの方にとって、この記事で紹介されている様々な cd コマンドラインはきっと役立つでしょう。以下で簡単に確認してみてください。

  • cd: cd それ単体または cd ~ は常にユーザーをホームディレクトリに配置します。
  • cd . : cd . は現在のディレクトリにユーザーを残します(つまり、現在のディレクトリは変更されません)。これは、ユーザーのシェルの内部コードが再作成されたディレクトリに対応できない場合に便利です。 cd . を実行すると、シェルは再作成されたディレクトリに配置されます。
  • cd ~username: cd ~ username はユーザーをusernameのホームディレクトリに配置します。
  • cd dir(/ なし): cd dir はユーザーをサブディレクトリに配置します。たとえば、/usr にいる場合、cd bin を入力すると、/usr/bin に配置されますが、cd /bin を入力すると、/bin に配置されます。
  • cd ..: cd.. はユーザーを1つ上のディレクトリに移動します。したがって、/usr/bin/tmp にいる場合、cd .. は /usr/bin に移動しますが、cd ../.. は /usr に移動します(つまり、2つ上に移動します)。ユーザーはこの間接的な方法を使用してサブディレクトリにもアクセスできます。したがって、/usr/bin/tmp から、cd ../../local を使用して /usr/local に移動できます。
  • cd -: cd - は前のディレクトリにユーザーを切り替えます。たとえば、/usr/bin/tmp にいて /etc に移動した場合、cd - を入力すると、/usr/bin/tmp に戻ることができます。ユーザーはこれを使用して、pushd および popd を使用せずに2つのディレクトリ間を切り替えることができます。

まとめ

「cd: 引数が多すぎます」エラーは、想像するほど恐ろしいものではありません。この記事では、このエラーを解消するための5つの簡単な解決策をご紹介します。cdコマンドを使って相対ディレクトリに移動する方法を、お好きなように試してみてください。さらに、この記事ではcdコマンドラインの使い方についても詳しく説明しています。

MacでZshパーミッションが拒否される理由と、Macのパーミッション拒否エラーの修正方法(Mac上の権限の変更も含む)について説明します