Je voudrais fréquemment basculer entre les répertoires qui se trouvent dans des chemins totalement indépendants, par exemple, /Project/Warnest/docs/
et ~/Dropbox/Projects/ds/test/
.
Mais je ne veux pas taper cd /[full-path]/
tout le temps. Existe-t-il des commandes de raccourci pour basculer vers des répertoires précédemment travaillés?
Une solution à laquelle je pourrais penser est d’ajouter des variables d’environnement à mes bash
.profile
répertoires fréquemment utilisés et cd
à ceux-ci utilisant ces variables.
Mais y a-t-il une autre solution à cela?
bash
shell
command-line
alias
cd-command
saiy2k
la source
la source
Réponses:
Si vous ne faites que basculer entre deux répertoires, vous pouvez utiliser
cd -
pour aller et venir.la source
Il y a une variable shell
CDPATH
dansbash
etksh
etcdpath
danszsh
:Vous pouvez donc définir dans votre ~ / .bashrc:
Ensuite
cd docs
et vouscd test
mènera au premier répertoire trouvé. (Je veux dire, même si un répertoire portant le même nom existera dans le répertoire actuel, ilCDPATH
sera toujours consulté. SiCDPATH
contient plus de répertoires contenant des sous-répertoires portant le même nom, le premier sera utilisé.)la source
$CDPATH
soit.
(une entrée explicite, c'est-à-dire qu'elle:
fonctionne également). Sinon, vous obtiendrez le comportement étrange où lesCDPATH
répertoires ont priorité sur les répertoires du répertoire de travail actuel, ce que vous ne voulez probablement pas.export
. De cette façon,CDPATH
n’est pas exporté vers des scripts aux effets potentiellement étranges ou nocifs. Voir ici pour plus de discussion et d’exemples.cd
réfère.Vous pouvez également essayer un outil appelé autojump . Il conserve une base de données d'appels à son alias (
j
par défaut) et tente de prendre des décisions intelligentes quant à l'endroit où vous souhaitez aller. Par exemple, si vous tapez fréquemment:Vous pouvez utiliser ce qui suit pour vous y rendre rapidement:
Il est disponible sous Debian et Ubuntu, et inclus par utilisateur dans
~/.bashrc
ou~/.zshrc
par défaut.la source
cd -
soit pratique de savoir si vous ne le connaissez pas déjà, je pense que c'est une bien meilleure solution que la réponse actuelle.apt-get install autojump
dans Ubuntu, mais aussi pour de nombreux autres, comme indiqué sur leur page) pour une installation à l'échelle du système, mais chaque utilisateur doit le charger dans son environnement shell afin de pouvoir remplacer cd afin de garder trace de où vous allezsource /usr/share/autojump/autojump.sh
devrait être ajouté à ~ / .bashrc pour que le saut automatique fonctionne .S'il s'agit d'un petit nombre de répertoires, vous pouvez utiliser
pushd
pour effectuer une rotation entre eux:contrairement à
cd -
, vous pouvez utiliser cela avec plus de deux répertoiresPour donner suite à la suggestion de Noach, j'utilise maintenant ceci:
exemple d'utilisation:
etc. Évidemment, ceci est juste pour faire une rotation dans la pile et ne gère pas l'ajout de nouveaux chemins - je devrais peut-être le renommer.
la source
pushd
etpopd
sur la traversée, mais pas que pushd puisse faire la rotation de ce qui a été utilisé jusqu'à présent ...J'utilise
alias
dans Bashrc pour faire ces cds.tel que:
la source
~/.bashrc
ou/etc/bash.bashrc
. Je ne l'avais pas utilisé.profile
auparavant, alors je ne connais pas la relation entre eux :-(.bash_profile
et cela fonctionne très bien .. thx :)J'ai trouvé un script (généralement appelé acd_funch.sh) qui a résolu ce problème pour moi. Avec cela, vous pouvez taper
cd --
pour voir les 10 derniers répertoires que vous avez utilisés. Ça va ressembler à quelque chose comme ça:Pour aller
~/Music/thirddir
simplement tapercd -2
Références
NOTE: Ce script a été publié à l'origine dans un article de la gazette linux disponible à l' adresse suivante : acd_func.sh - étend le CD de bash pour conserver, afficher et accéder à l'historique des noms de répertoires visités .
la source
Essayez l'
cdable_vars
option shell en bash. Vous l'allumez avecshopt -s cdable_vars
.Ensuite, vous devez définir vos variables
export dir1=/some/path
. et enfincd dir1
, etc. Vous pouvez ensuite le mettre dans votre~/.bashrc
pour le faire coller.la source
Utilisez "pushd -n " (en supposant que vous utilisez bash).
Ajoutez à votre ~ / .bashrc:
ensuite,
cd ~
est ta maison,cd ~1
est~/Dropbox/Projects/ds/test/
cd ~2
est/Project/Warnest/docs/
Vous pouvez utiliser
~1
,~2
etc. exactement de la même manière que~
.la source
Il y a beaucoup de bonnes suggestions ici. Lequel utiliser dépend de si vous avez une petite liste fixe de répertoires avec lesquels vous basculez ou si vous cherchez une solution plus générique.
S'il s'agit d'une petite liste fixe, il serait plus simple d'utiliser des alias simples (comme suggéré par Felix Yan).
Si vous cherchez une solution plus généralisée (c.-à-d. Beaucoup de répertoires différents, évoluant dans le temps), utilisez pushd et popd (comme suggéré par Useless). Personnellement, je trouve le pushd / popd par défaut difficile à utiliser, en particulier lorsque vous commencez à basculer entre plusieurs dossiers; Cependant, j'ai écrit quelques modifications qui me facilitent la tâche. Ajoutez ce qui suit à votre base:
pd
(sous forme abrégée depushd
) pour accéder à un nouveau dossier en vous rappelant où vous vous trouviez.dirs
pour voir la liste des répertoires sauvegardés.pd 3
pour accéder au répertoire numéro 3.Exemple d'utilisation:
la source
Ce qui suit semble fonctionner dans le cas sur lequel je l’ai testé, et vous pouvez simplement supprimer vos noms de répertoire sous forme de liens symboliques dans ~ / Bookmarks:
la source
function
ligne va dans votre .bashrc (vous pouvez la taper dans votre terminal pour tester, mais elle ne sera plus là quand vous fermerez cette fenêtre), les lignes avant de configurer le scénario de test de "testdir" devenant un nom/tmp
, et le La dernière ligne est le test pour voir si cela fonctionne.Vous pourriez faire pire que d'essayer J2 .
Du README:
Je l'utilise abondamment et le recommande.
la source
Je conseillerais d'utiliser zsh , ce shell comme une très bonne complétion de TAB pour les répertoires, les fichiers et même les options de la plupart des programmes cli.
J'utilise cette coquille depuis des années maintenant et la fonctionnalité me manquerait si elle n'existait plus. Écrire un script pour zsh est très amusant aussi, avec un grand nombre de monolignes qui peuvent vous aider au quotidien.
la source
D'après mon expérience, la navigation dans un shell est accélérée par l'utilisation de la fonctionnalité de recherche d'historique. Dans Bash, vous pouvez effectuer une recherche en arrière dans votre historique des commandes en appuyant sur
Ctrl
+R
et en tapant un motif. Ce modèle est ensuite comparé aux entrées précédentes de votre historique - qu’il s’agisse decd
commandes ou d’autres opérations - et des suggestions sont formulées lors de la frappe. Appuyez simplement sur Entrée pour exécuter la commande suggérée à nouveau. Ceci est appeléreverse-search-history
dans Bash et je l' aime. Cela me permet d'économiser beaucoup de frappes au clavier et ma mémoire interne.C’est une bonne chose, car vous n’avez qu’à mémoriser une petite partie d’une commande, comme par exemple,
Drop
ouWa
à distinguer les deux entrées de l’historiquecd ~/Dropbox/Projects/ds/test/
etcd /Project/Warnest/docs/
.la source
J'utilise aussi ces alias (ajoutez-les à ~ / .bashrc):
Il est beaucoup plus rapide d'aller dans le répertoire supérieur avec eux (mais cela ne résout que la moitié de la navigation).
la source
si vous utilisez zsh:
vous n'avez pas à taper
cd
, il suffit de taper le chemin du répertoire (/foo/bar/baz<Enter>
égal àcd /foo/bar/baz<Enter>
)nécessite que l'
auto_cd
option soit définieTab
clé (/u/sh/pi<Tab>
étend à/usr/share/pixmaps
; fonctionne également pour les noms de fichiers)la source
shopt -s autocd
, ce n'est donc plus une bonté zsh.Il existe un outil plutôt intéressant pour les changements rapides dans le répertoire:
xd - changeur de répertoire eXtra fast http://xd-home.sourceforge.net/xdman.html
un peu gênant est que vous devez le mapper dans un profil bash ou similaire, car il ne sort que le répertoire
vous pouvez faire des choses comme:
la source
f() { cd "$(xd -g "$@")"; }
gérer correctement les répertoires espacés et les espaces dans les argumentsxd
(vous n'avez probablement pas besoin du chemin). Si vous n'utilisez jamaisxd
d'une autre manière, vous pouvez alternativement le fairexd() { cd "$(command xd -g "$@")"; }
(alternativement, utiliser/usr/bin/xd
à la place decommand xd
- vous pouvez toujours courircommand xd …
si vous devez le contourner).De toute façon, vous ne devriez jamais taper le chemin complet dans un shell. Vous pouvez toujours utiliser:
au lieu de
la source
P*
que si Project est le seul fichier commençant par P. L'achèvement de la tabulation peut se dérouler de manière cyclique (par défaut dans la plupart des shells; vous devez relier l'onglet àmenu-complete
bash) et résoudre instantanément dans des cas simples. comme ça, rien ne l'attend/P*/W*/*/mydoc*
comme cela pourrait bien fonctionner jusqu’au jour où vous auriez créé un autre fichier qui correspond à ce glob, et tout à coup, vous terminez. en ouvrant les deux à la fois./u*/*/g++
est impressionnant peu de caractères, mais j'espère que rien d'autre dans aucun des sous-dossiers de l'un de mes dossiers racine commençant paru
n'est nommég++
. (Par bon compromis, dans certaines coques, vous pouvez utiliser l'onglet pour développer les globs sur place au fur et à mesure)Il existe également
OLDPWD
une variable d’environnement qui, selon IEEE 1003.1 (POSIX), doit être mise à jour avec le répertoire de travail précédent à chaquecd
changement de répertoire de travail (pour les plus curieux, ligne 80244 de la page 2506 de IEEE 1003.1-2008).la source
Il existe également une application "wcd" créée spécifiquement pour cela (également sur cygwin, puisque je suis dessus). Vous pouvez créer des raccourcis, des signets de répertoires avec elle. Prend également en charge les wild cards. La lecture de la page de manuel & docs dans / usr / share / wcd devrait beaucoup vous aider.
http://manpages.ubuntu.com/manpages/hardy/man7/wcd.7.html
la source
cdargs est l'outil le plus efficace pour ajouter un répertoire à vos favoris: http://www.youtube.com/watch?v=uWB2FIQlzZg
la source
sudo apt-get cdargs
sur Ubuntu. BTW la vidéo youtube est vraiment mauvais mais l'outil est génial.Essayez fastcd ( https://github.com/frazenshtein/fastcd ) Il définit un point d' ancrage qui enregistre les répertoires visités à partir de bash. Et définit le script comme "j" alias, qui vous montre les derniers répertoires visités, avec la possibilité de cd rapidement (commencez à taper pour filtrer les répertoires). Modification de .bashrc est nécessaire pour faire le "j" alias.
Obtenir un outil
Installer les modules requis
Source le fichier set.sh dans votre bashrc
Et mettre à jour bashrc
Ensuite, tapez simplement "j" dans la console
la source
.bashrc
?J'avais la même question et j'ai d'abord trouvé cette réponse . J'ai installé l'utilitaire z ( https://github.com/rupa/z ).
C’est exactement ce que vous recherchez, car z apprend de vos commandes cd et garde la trace des répertoires selon le principe de frécence (fréquente et récente). Donc, après avoir fait les deux commandes cd une fois, vous pouvez faire quelque chose comme:
pour aller à
/Project/Warnest/docs/
et~/Dropbox/Projects/ds/test/
respectivement. Les arguments de z sont des expressions rationnelles, vous n’avez même pas besoin de taper un nom de dossier complet.la source
Mise à jour (2016): J'utilise maintenant FASD pour cela, ce qui permet une recherche floue basée sur vos derniers répertoires.
J'ai créé un outil pour cela, en Ruby. Il vous permet d’utiliser des fichiers YAML pour déclarer vos projets.
J'ai écrit un petit article à ce sujet ici: http://jrnv.nl/switching-projects-terminal-quickly/
J'ai aussi posté la source sur GitHub: https://github.com/jeroenvisser101/project-switcher
la source
J'utilise mon propre utilitaire cdhiste pour gérer cela depuis de nombreuses années. Il alias votre commande cd et conserve automatiquement une pile de répertoires.
la source
Vous pouvez utiliser
export
pour affecter vos chemins de répertoire aux variables, puis les référencer.la source
export
déclarations dans votre~/.bashrc
, et elles seront toujours disponibles.Quelques suggestions ici:
Idée la plus directe, je vais ajouter un alias dans le fichier .profile
Puis utilisez
$ dir1
oudir2
, peut cdSi vous passez toujours dans deux répertoires seulement. utiliser
cd -
va basculer entre eux.la source
La solution que j'utilise pour cette situation est
screen
. Écran d'accueil et créer une fenêtre pour chaque répertoire avecC-a c
et y naviguer. Basculez entre windows / directory avecC-a n
ouC-a p
. Nommez les fenêtres avecC-a A
. Ensuite, vous pouvez faire apparaître une liste de vos fenêtresC-a "
et naviguer en utilisant le numéro ou le nom de la fenêtre. Dans ce casscreen
, vous pouvez vous détacher de la session pour économiser votre espace de travail et vous reconnecter ultérieurement avec la même configuration.la source
Il semble que ce dont vous avez besoin est essentiellement un fichier de projet pour votre flux de travail. Avec des répertoires appartenant à votre activité, comme dans un IDE de programmation. Essayez les outils de navigation Zsh et l’outil
n-cd
ici. Cela vous permettra de naviguer à travers les derniers dossiers visités et de définir unHotlist
répertoire avec votre choix:n-cd
peut être lié à une combinaison de touches avec:la source
TL; DR
Fish
shell interactif que vous donner les moyens immédiatement (fish
>zsh
>bash
).POSIX
/Bash
pour les scripts qui est la syntaxe plus largement pris en charge (POSIX
>Bash
>Zsh
>Fish
).Coquilles
Après avoir testé différents coques, voici mes commentaires (par ordre d’essai / adoption):
Bash
:Zsh
+oh-my-zsh
:cd /e/x1
→cd /etc/X11/
);Fish
+oh-my-fish
(courant) est le meilleur de la boîte:Utilisez des alias significatifs
Chaque shell peut être développé à l'aide de,
function
etalias
voici ceux que j'utilise en rapport avec votre problème (compatible POSIX):Il existe des bases, mais vraiment significatif si facile à retenir et autocomplete.
Connais ta coquille
Configurer
CDPATH
pour ajouter vos répertoires les plus utilisés (par exemple~/projects/
,/etc/init.d/
) afin que vous puissiez passer rapidement à eux.Voir manatwork answer pour plus de détails sur
CDPATH
.Hangout et lire
la source
exit
, vous quittez le shell interactif. Ces "alias significatifs" pourraient simplement êtrealias back='cd -'
etalias up='cd ..'
- mais ne vous inquiétez pas, ces commandes ne renverront jamais de faux (aucun répertoire précédent? Il vous renvoie à la maison! Déjà à la racine? C'est un no-op!) Et par conséquent vous ne quitterez jamais . Pensez égalementalias back='cd $OLDPWD'
(notez les guillemets simples) car il n’aura aucune sortie (cd -
vous indique où il vous envoie, ce qui est probablement inutile, car votre invite contient cette information)anc
est un outil de ligne de commande (terme abrégé pour ancre), qui conserve les signets des répertoires. (jusqu'ici testé uniquement avec bash)Dans ton cas:
cela ajoute les deux répertoires à la liste d'ancrage (pensez aux signets)
Maintenant, si vous voulez aller
/Project/Warnest/docs/
de n'importe où sur votre type de système:et si vous voulez sauter à
~/Dropbox/Projects/ds/test/
taper:En plus de faire correspondre le texte avec les chemins des signets, anc dispose de nombreuses autres méthodes pratiques pour parcourir les répertoires.
démarre le mode interactif, qui répertorie tous les signets par numéro, il vous suffit donc de taper le numéro
Si vous tapez:
une liste correspondant à tous les signets (dans votre cas, les deux signets) est affichée et vous pouvez la sélectionner à l’aide des touches de direction, ceci est un moyen très rapide et intuitif.
Obtenez anc sur la page github du projet: https://github.com/tobimensch/anc
Il y a aussi un fichier README avec un exemple d'utilisation.
Divulgation complète: je suis l'auteur de ce script. J'espère que certaines personnes le trouveront utile.
la source