
スクリプトtest.kshの中で、以下のようなコードを書いています。
mv /hogehoge1/* /hogehoge2/
実行すると以下のようなエラーがでます。
mv: cannot stat '/hogehoge/*' : そのようなファイル、ディレクトリはありません。
ksh -x test.ksh で実行すると、
アスタリスクが展開されて以下のように実行されているようです。
mv /hogehoge/aaa /hogehoge/bbb /hogehoge/ccc /hogehoge2/
どうしたらターミナルで叩いたときと同じようにファイルの移動ができますか?
No.2ベストアンサー
- 回答日時:
> アスタリスクが展開されて以下のように実行されているようです。
> mv /hogehoge/aaa /hogehoge/bbb /hogehoge/ccc /hogehoge2/
というのは、シェルとして正しい動作に思えますが?(/hogehogeの下にaaa,bbb,cccというファイル、またはディレクトリがある、として)
コマンドラインから mv /hogehoge/* /hogehoge2/ としたときも、同じ展開が行われます。通常はそれが表示されないだけです。
unix系のシェルでは、*や?等の「ワイルドカード」を解釈して、該当するファイル名に展開するのは「シェルの仕事」であって、mvやcp等のコマンドではそのような変換やファイル検索は行いません。
> mv: cannot stat '/hogehoge/*' : そのようなファイル、ディレクトリはありません。
というのは
・/hogehoge/*をkshが展開...しようとしたが、該当するファイルが無いので展開されず、そのままmvへ引き渡す
・mv で /hogehoge/* と言う名前のファイルまたはディレクトリを/hogehoge2/へ移動する...つもりが存在しないのでエラー
ということだと思います。
No.1
- 回答日時:
> mv /hogehoge1/* /hogehoge2/
は
mv /hogehoge/* /hogehoge2/
の間違いでよろしいでしょうか。
そして、test.kshはこれで全部でしょうか?
/hogehoge は/で始まる絶対パスですか?それとも実際は相対パスですか?
どっかで set -f や set -o noglob とかで展開が無効になっているとか無いですか?
この回答への補足
mv /hogehoge/* /hogehoge2/
でよいです。絶対パスです。
> どっかで set -f や set -o noglob とかで展開が無効になっているとか無いですか?
それはないです。展開はされていますが、展開されてコマンドが以下のように認識されてしまうようです。
> mv /hogehoge/aaa /hogehoge/bbb /hogehoge/ccc /hogehoge2/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL 【PostgreSQL】行の値の並びを変えるには 1 2023/03/21 16:46
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- JavaScript ifreamをリロードしたい 1 2022/05/03 16:15
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
バッチを用いたフォルダの自動移動
-
Subversionのリポジトリの削除
-
LinuxからNASを使用したときの...
-
getimagesizeを使う場合
-
Smarty includeでテンプレート...
-
CFileDialogの最初のディレクト...
-
JAVA内で複数のファイルを削除...
-
1段目、2段目…とは?
-
C言語でのディレクトリ作成につ...
-
マルチドメインの場合、上階層...
-
COLD FUSION ディレクトリの容...
-
renameでのPermission deniedエ...
-
絶対パス?絶対アドレス?意味...
-
VB.NET 最下位のディレクトリ名...
-
ディレクトリ内の拡張子指定フ...
-
includeが出来ない訳とは?
-
IIS仮想ディレクトリでのみPHP...
-
ファイルの更新日時でのソート
-
kshのスクリプトでワイルドカー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
CFileDialogの最初のディレクト...
-
バッチを用いたフォルダの自動移動
-
visualstudioでc#のdllができない
-
rmdirでフォルダが消せません
-
現在位置より2つ上のディレク...
-
makefile でファイルをコピーす...
-
JAVA内で複数のファイルを削除...
-
http://localhost/に.htaccess...
-
絶対パス?絶対アドレス?意味...
-
VB2008でFTPでのディ...
-
powershell で書いたプログラム...
-
ファイル・ディレクトリ削除を...
-
Subversionで、ファイルをリネ...
-
FTPでのファイルとディレクトリ...
-
Visual C++ 2005 Express Editi...
-
VB.NET 最下位のディレクトリ名...
-
ファイル選択ダイアログで選択...
-
DLL のロードの順序
おすすめ情報