Je cherche juste one command - rien avec &&
ou |
- qui crée un répertoire puis change immédiatement votre répertoire actuel en répertoire nouvellement créé. (C'est une question que quelqu'un a eu pour ses examens de "linux-usage", il a fait une nouvelle commande qui l'a fait, mais cela ne lui a pas donné les points.) C'est sur un serveur Debian si ça compte.
Je crois que vous recherchez ceci:
mkdir project1 && cd "$_"
définissez un bash fonction à cette fin dans votre $HOME/.bashrc
exemple:.
function mkdcd () {
mkdir "$1" && cd "$1"
}
puis tapez mkdcd foodir
dans votre shell interactif
Donc, stricto sensu, ce que vous voulez réaliser est impossible sans une fonction Shell contenant du &&
(ou au moins un ;
) ... En d’autres termes, le but de l’exercice était de vous faire comprendre pourquoi les fonctions (ou alias) sont utiles dans un shell ....
PS il devrait s'agir d'une fonction et non d'un script (s'il s'agissait d'un script, la variable cd
n'affecterait que le shell [sous-] exécutant le script, et non le shell parent interactif); il est impossible de créer une seule commande ou un seul exécutable (pas une fonction Shell) qui changerait le répertoire du Shell parent appelant (car chaque processus a son propre répertoire en cours, et vous ne pouvez modifier que le répertoire en cours de votre propre processus, pas du processus d’appel Shell).
PPS. Dans les shells Posix, vous devez supprimer le function
keyword et définir la première ligne mkdcd() {
.
Pour oh-my-zsh users: take 'directory_name'
Référence: Officiel oh-my-zsh github wiki
Ajouter ce qui suit dans votre .bash_profile (ou l’équivalent) vous donnera une commande mkcd
qui fera ce dont vous avez besoin:
# mkdir, cd into it
mkcd () {
mkdir -p "$*"
cd "$*"
}
Cet article l'explique plus en détail
Je ne pense pas que cela soit possible, mais pour tous ceux qui se demandent quelle est la façon la plus simple de le faire (à ma connaissance) qui ne vous oblige pas à créer votre propre script est:
mkdir /myNewDir/
cd !$
Ainsi, vous n'avez pas besoin d'écrire deux fois le nom du nouveau répertoire.
!$
récupère le dernier argument ($
) de la dernière commande (!
).
(Il existe d'autres raccourcis utiles comme celui-ci, tels que !!
, !*
ou !startOfACommandInHistory
. Recherchez sur le net pour plus d'informations)
Malheureusement, mkdir /myNewDir/ && cd !$
ne fonctionne pas: il récupère le dernier argument de la commande précédente, pas le dernier de la commande mkdir
.
Peut-être que je ne comprends pas tout à fait la question, mais
>mkdir temp ; cd temp
crée le répertoire temporaire, puis passe à ce répertoire.
mkdir temp ; cd temp ; mv ../temp ../myname
Vous pouvez alias comme ceci:
alias mkcd 'mkdir temp ; cd temp ; mv ../temp ../'