Comment puis-je déplacer un fichier vers un chemin d’argument?

Dis que j’avais le code suivant,

mkdir $1 # Output that the folder was created and the name echo "The folder was created and name is: `echo $1`" touch $2 # Output that the file was created and the name echo "The file was created and name is: `echo $2`" 

Comment pourrais-je déplacer le fichier créé dans le dossier d’arguments créé?

Votre besoin d’utiliser la commande mv

ie mv $2 $1

 touch "$1/$2" 

Cela suppose que $2 est un nom simple. Ou, si vous devez utiliser mv , alors:

 touch "$2" && mv "$2" "$1" 

Ou:

 touch "$2" && mv "$2" "$1/$2" 

Vous devrez peut-être réfléchir à ce qui se produirait si $2 n’est pas un nom de fichier simple mais contient des informations sur le chemin. Dans ce cas, la première combinaison «toucher et déplacer» est plus sûre. Notez que ces versions vérifient que le touch réussit avant de déplacer le fichier créé. Notez également que le touch fonctionne correctement si le fichier existe déjà et que ce fichier sera déplacé vers le répertoire cible. Si le fichier n’est pas supposé exister (encore), vous devez travailler encore plus fort. C’est le problème avec ces questions – il y a beaucoup de circonstances qui pourraient devoir être traitées, mais probablement pas pour une question de devoirs (mais devraient être considérées dans quelque chose de plus près «code de production»).

Sinon, si $2 pourrait être un nom avec des informations sur le chemin:

 mkdir "$1" || exit 1 base=$(basename "$2") touch "$1/$base" || exit 1 

Ou, si vous voulez déménager, alors:

 mkdir "$1" || exit 1 touch "$2" || exit 1 mv "$2" "$1" 

Notez les guillemets autour des noms de fichiers. ils fonctionneront même si les noms contiennent des espaces ou d’autres caractères maladroits. Notez également que si $2 spécifie un répertoire, la version mv des choses déplacera tout le répertoire sous le répertoire (nouvellement créé) $1 .

Est-ce que mv $2 $1 serait ce que vous cherchez?

 mv $2 $1 echo "The file $2 was moved to $1" 

Notez que vous n’avez pas besoin du deuxième echo dans chacune de vos commandes:

 echo "The folder was created and name is: $1" 

Vérifiez quelles commandes peuvent être utilisées pour la copie ou, dans ce cas, déplacez les fichiers que vous avez créés. En outre, qu’est-ce qui vous empêche de créer le fichier directement dans le dossier créé?