Quelqu'un peut-il expliquer cette ligne de code / command s'il vous plaît?

Les détails seraient appréciés!

Je sais que c'est censé être un script shell ou quelque chose comme ça, mais ce serait génial si quelqu'un plus expérimenté dans ce domaine peut m'en dire plus à ce sujet.

echo "" >> $HOME/.bashrc && echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc 

" echo " va (comme le nom l'indique) faire écho à une string de text à std (généralement l'écran).

" >> " appenda la sortie de la command précédente à un path de file.

" && " s'exécute (basé sur la sortie réussie de la command précédente) la command successive.

" ; " exécutera (indépendamment de la sortie réussie de la command précédente) la command successive.

" function " créera une fonction qui s'exécutera dans le Bash Shell.

" $ HOME " est une reference (Bash Variable) au directory de base du operating system de l'user créé automatiquement par Bash.

" .bashrc " est un file caché (dans le directory personnel de l'user) qui est exécuté lorsque l'user démarre une session interactive. Il est souvent utilisé pour personnaliser le shell bash au niveau de l'user.

" cd " est un changement de directory, changez le directory de travail.

" ls " répertorie les files dans le directory. Dans ce cas, "–color" est un argument qui accentue certains éléments du directory avec la couleur, plutôt que d'utiliser une seule couleur.

" $ 1 " est utilisé pour permettre à un user de passer un argument à cette command en tant que variable.

Donc, en bref, pour …

 echo "" >> $HOME/.bashrc && echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc 

La première ligne ajoute une ligne "vide" à .bashrc – simplement pour plus de clarté quand quelqu'un regarde le file dans le futur. La seconde ligne ajoute une nouvelle fonction appelée " cdls " qui accepte un argument (un nom de directory), puis change le directory de travail vers cet location, puis exécute immédiatement la command " ls " sur ce directory.

EDIT: S'il vous plaît voir les commentaires de Celada et derobert sur la réponse de Steve.

Testez si $ HOME / .bashrc est accessible en écriture, en essayant d'y append rien:

 echo "" >> $HOME/.bashrc && 

Si le test réussit, le file est inscriptible, ajoutez-lui une fonction. Pour que cdls foo cours d' cdls foo affiche une list de directorys colorés du directory "foo".

 echo "function cdls { cd "$1"; ls --color;}" >> $HOME/.bashrc