Grava um comando para mudar para diretórios específicos

1

Eu tenho alguns diretórios que eu tenho que ir com muito mais freqüência do que outros, como para música, trabalho, programação, etc. Então, eu quero ter comandos exclusivos, dizer "gotomusic" ou "gotodropbox" para ir para estes pastas porque senão eu tenho que digitar algo como cd /media/sda9/Work/Dropbox e assim por diante.

É uma boa ideia? Existe uma maneira melhor de obter o mesmo resultado?

Eu tentei escrever o seguinte script "gotomusic"

#!/bin/bash

cd /media/sda8/Music

Mas isso não funciona. O que há de errado em fazer isso?

Obrigado!

    
por user1953384 02.08.2013 / 12:43

3 respostas

1

Acho que você pode encontrar a solução certa em stackoverflow:

change-current-directory-from-a-script

    
por 02.08.2013 / 13:05
1

Você pode fazer isso usando aliases, basta adicionar seu ~/.bashrc

alias gotomusic='cd /home/user/music'
alias gotopics='cd /home/user/pictures'

etc ...

    
por 02.08.2013 / 13:12
0

O problema é que você não pode alterar o diretório de trabalho do processo pai.

Relacionado ao seu problema, o procedimento é o seguinte:

O diretório de trabalho atual do seu shell interativo é $PWD . Então você inicia gotomusic e seu shell interativo (eu chamarei parentbash ) inicia uma nova instância de bash (eu chamo de childbash ) como um novo processo. childbash herda vários atributos de parentbash . Entre outras coisas, ele herda seu diretório de trabalho de parentbash .

Como você instrui childbash a ler os comandos do seu script, ele altera seu próprio diretório de trabalho para /media/sda8/Music e termina.

Neste ponto, parentbash fica ativo novamente com o mesmo estado anterior à execução de childbash .

Para que parentbash invoque seu comando cd builtin, você deve fornecer seu script. Isso é feito facilmente por

source gotomusic

Mas a questão permanece se essa abordagem é adequada para uma rápida mudança de diretório.

Existem várias implementações de sistemas de marcadores de diretórios bashmarks , mas acho que a melhor solução seria escolher facilmente a partir de uma lista dos diretórios mais usados. Eu não sei se existe algo assim para bash , mas se você quiser usar zsh você pode obtê-lo em [ 1 ].

    
por 02.08.2013 / 13:16