Existe-t-il un moyen équivalent de se callbacker des directorys sur des volumes montés comme DOS

Il y a quelques time, je suis passé d'un environnement purement Windows à Windows et Mac.

Tandis que je m'habituais lentement à mon Mac et que je l'aimais, il y a quelques choses qui me frustrent.

L'un d'eux est le fait qu'il n'y a qu'un seul directory de travail sur le système de files.

Cela peut sembler étrange à ceux qui ne fonctionnent jamais Unix, mais suivez cela comme mon expérience sur Windows.

J'ai C: (programmes), D: (données), E: (CD / DVD) et F: & G: (keys USB).

Si je tape …

CD /DF:\Dir1\Dir2 CD /DD:\Dir3\Dir4 F: CD D: CD 

en supposant que ce sont tous des paths valides, la sortie sera …

 F:\Dir1\Dir2 D:\Dir3\Dir4 

Cela montre que je peux permuter entre "lecteurs" et je reçois le dernier directory de travail par lecteur.

Ceci est vraiment utile lorsque vous voulez copyr du contenu d'un lecteur à un autre, sans avoir à taper le path entier.

Vous pouvez aller dans le directory, vérifier son contenu, passer au lecteur / directory de destination, puis lancer la copy …

 COPY F:*.* D:. 

par exemple.

Quand il s'agit de mon Mac, alors que je pourrais utiliser l'interface user avec 2 tabs Finder, je voudrais toujours être en mesure d'utiliser la command line.

Existe-t-il un moyen équivalent de faire mémoriser un système de files monté et d'exposer le dernier directory de travail sur ce système de files?

Pour l'instant c'est l'approche "type toute la command complètement".

Votre question concerne les fonctionnalités de bash, qui est probablement le shell que vous utilisez en tant que command line.

Pour la partie de commutation, vous pouvez utiliser cd - pour revenir au directory précédent.

Si vous voulez referencer ce directory précédent dans une command, vous pouvez utiliser $OLDPWD comme ceci:

  cp $OLDPWD/* . 

Jetez également un coup d'oeil à l' help pushd , help popd et généralement l' man bash .

Vous devez être conscient que la méthode Windows (en fait, plutôt la méthode DOS) est une conséquence d'un mappage ssortingct avec les "périphériques" de bas niveau représentés par des caractères ( A: C: etc.).

Unix a (essentiellement) un seul tree de directory et vous y accédez plus uniformément que sur DOS. Vous avez différentes possibilités pour accéder au système de files. Celui que vous pouvez connaître dans le monde DOS est graphique, orienté window; voir par exemple xfe pour un candidat. L'autre access, plus "natif", passe par le shell. Les différentes coquilles ont des capacités différentes. Vous pouvez utiliser (pour un usage interactif lourd) dans tcsh , mais dans les shells POSIX couramment utilisés ( bash , ksh , zsh ), vous avez en effet le concept d'un directory de travail . Vous pouvez naviguer entre les directorys avec cd et une variante spécifique est cd - pour passer au précédent. Depuis un directory, vous pouvez accéder à la précédente en utilisant soit les variables shell prédéfinies $OLDPWD soit l' expression tilde respective ~- (qui ressemble au cd - ). Avec ceux que vous pouvez, disons, cp ./* ~- . Le ksh a encore un cd plus puissant qui permet de sauter facilement entre les mêmes sous-directorys de différents trees de version; par exemple, cd gawk-3.1.6 gawk-4.1.2 saute de l'intérieur d'un sous-directory de ces variantes à l'autre. Dans certains shells, il y a aussi deux commands pushd et popd disponibles (en mode natif ou via une bibliothèque) pour mémoriser les directorys que vous voulez revoir. Ensuite, il y a le concept de CDPATH , vous permettant de sauter vers les directorys couramment utilisés sans spécifier entièrement les paths complets. – J'ai écrit tout ça sur la modification des directorys car c'est la base pour faire le meilleur usage du $OLDPWD ou resp. ~- que j'ai mentionné auparavant dans vos commands shell. La description ne serait pas complète sans les fonctions de command et d'achèvement du path mentionnées; en général avec la touche Tab vous pouvez compléter les commands, de sorte que même si vous "écrivez" explicitement les paths, le shell vous aidera à le faire très rapidement. Et last but not least, il y a l'histoire de la shell; vous avez access à des commands précédemment tapées, vous pouvez les modifier et / ou les ré-invoquer comme vous le souhaitez.

Je vais append une autre option / astuce.

Il utilise des liens symboliques, ceux-ci sont très utiles. Ils ressemblent un peu à des raccourcis mais, à bien des égards, ils sont meilleurs (sauf lorsque les raccourcis sont utilisés en tant que scripts d'encapsulation, auquel cas les scripts d'enveloppe sont meilleurs).

Il utilise également la variable CDPATH de bash.

 cd ~ mkdir drive-letters cd drive-letters ln -s / c: ln -s "$HOME" h: ln -s /media/cdrom/ e: CDPATH=".:~/drive-letters" # you will have to put this one in your ~/.bashrc to make it persistent 

Maintenant vous pouvez faire:

 cd c: cd e: 

Je vais suggérer une solution qui ne résoudra pas tous vos problèmes, mais vous aidera à changer de voie plus rapidement !!

La solution utilise autojump .

Installez-le sur Mac en utilisant:

  brew install autojump 

Ensuite, ce que autojump fait est-il se souvient de tous vos directorys que vous avez visités précédemment. Il garde le score pour différents directorys, de sorte que le directory le plus visité obtient un score plus élevé.

Ensuite, vous basculez rapidement vers un directory en utilisant une command simple de la façon suivante:

 #Say you want to visit this: cd /media/windows/users/myuserdir #Instead do this: j myuserdir 

Comment cela fonctionne-t-il correspond au mot-key myuserdir avec un directory contenant le mot-key et ayant le meilleur score. Même si vous faites une erreur d'orthographe, il essaiera de find la meilleure correspondance en fonction de votre historique.

Si vous faites reference à des partitions physiques, celles-ci sont montées sur /Volumes/PartitionName sur le Mac.

Votre F: \ Dir1 \ Dir2 serait /Volumes/PartitionName/Dir1/Dir2/ 'NIX ne se souvient pas du "directory courant" de chaque volume, mais vous pouvez les save dans des variables d'environnement

 CD_1=`pwd` 

saveait le directory actuel auquel vous pouvez accéder avec $ CD_1

Une autre option consiste à créer des symlinks vers des directorys d'intérêt.

Les systèmes Unix rendent la séparation entre les volumes aussi transparente que possible. Très peu de programmes se soucient du volume (sous quel sharepoint assembly) d'un file. Ce n'est pas pertinent.

Il y a beaucoup d'équipements pour "se souvenir" de plusieurs directorys. Recherchez les fonctions associées aux directorys, ou aux strings en général, et non aux fonctions associées à plusieurs volumes: ces installations ne se soucient pas de savoir quels volumes sont les directorys.

Une fonction de «mémorisation» très générique consiste à définir une variable. Cette variable peut contenir le path d'access à un directory ou toute string que vous souhaitez mettre là. Sur un shell Bourne (zsh, bash, ksh, etc.):

 f=/media/usb1/dir1/dir2 d=~/dir3/dir4 cp $f/* $d/* 

Si les valeurs contiennent des espaces ou \[*? , méfiez-vous des shells de type Bourne autres que zsh, vous avez besoin de guillemets doubles autour des substitutions de variables:

 cp "$f"/* "$d"/* 

Vous devez toujours utiliser des guillemets doubles dans les scripts, mais sur la command line, puisque vous savez généralement ce qui se trouve dans la variable, vous pouvez les omettre sauf si vous savez que la variable contient des espaces.

Pour naviguer rapidement entre plusieurs directorys, vous pouvez utiliser la stack de directorys . Exemple:

 cd /media/usr1/dir1/dir2 ls pushd ~/dir3 # Remember /media/usr1/dir1/dir2 and go to ~/dir3 ls cd dir4 # Go to ~/dir3/dir4, /media/usr1/dir1/dir2 is still remembered dirs # Show the directory stack cp ~1/* . # Copy files from /media/usr1/dir1/dir2 popd +1 # Forget /media/usr1/dir1/dir2 

Unix et Windows mettent tous deux des files à certains endroits.

Le file des programmes va au même endroit. données dans un autre, datatables de lecteur USB dans un autre. Les deux systèmes prennent en charge l'access aux données / périphériques pour les différents usages.

La différence est exactement comment .
Sous Windows, vous bénéficiez d'un access direct aux périphériques physiques. Sous Unix / Linux, il n'y a qu'une seule arborescence du système de files, puis les directorys et autres – plusieurs – périphériques y sont mappés. Ainsi / dir / x / y et / dir / x / z peuvent être sur des appareils totalement différents. En outre, tous les périphériques bruts tels que les disques durs et les keys USB sont également disponibles dans le directory / dev.

Quelques exemples «traduits»:

 Windows Linux Mac c:\Program Files /bin /bin e:\ /home /home f:\ (usb) /media/my-usb-drive /Volumes/my-usb-drive 

pour répondre à vos autres questions – copyr de 'c' à 'e' est tout aussi simple sous Linux – vous copyz (copyr) de /some/location vers /media/my-usb-drive

Si vous voulez faire reference au directory de travail actuel, vous pouvez utiliser $PWD et si vous voulez vous référer à un directory dans $OLDPWD vous étiez juste, vous pouvez utiliser $OLDPWD

Vous devrez peut-être en apprendre davantage sur:

  • Formats de disque – ce qui fonctionnerait sur les deux systèmes *
  • Formatage d'une key USB
  • Zipping de gros files pour le transfert entre les systèmes

* regardez dans NTFS – https://superuser.com/q/45130/95115

Votre titre mentionne "une façon de les mémoriser".

Vous pouvez utiliser des alias: Si vous tapez

 alias p='cd /bin' 

ou

 alias programs='cd /bin' 

alors vous pouvez simplement taper p [return] ou les programmes [return] pour aller dans ce directory.

Le dernier directory de travail est également OLDPWD, par exemple

 $ cd tmp $ cd ~ $ echo $OLDPWD /home/durrantm/tmp