Shortcut para mudar para um determinado diretório

11

No terminal do Ubuntu, passo um tempo considerável para mudar para um diretório específico toda vez que o computador é inicializado. Existe alguma maneira de facilitar esse processo? Existe alguma tecla de atalho ou alguma alteração rápida no diretório que eu possa usar (como a discagem rápida em um telefone)?

 eg:
    cd 1:Changes to saved directory one
    
por Developer Android 07.12.2012 / 10:15

12 respostas

11

Existem duas opções:

  1. Se você quiser estar em um diretório específico sempre que abrir um terminal bash, edite seu arquivo ~/.bashrc e apenas adicione a linha cd Directory , por exemplo cd ~/Desktop .

  2. Se você deseja vários atalhos, sempre é possível usar variáveis globais, que podem ser definidas no arquivo ~/.bashrc da seguinte maneira export a=/tmp e, em seguida, você poderá fazer cd $a , que levaria você para /tmp .

Lembre-se que depois de editar seu arquivo .bashrc , você precisa reiniciar o terminal ou abrir um novo.

    
por Dan 07.12.2012 / 10:37
18

Também dê uma olhada em autojump , ele constrói um banco de dados com diretórios visitados anteriormente e então você pode pular para ele. Então, por exemplo, você tem

/home/user/this/long/and/annoyingly/deep/directory/workstuff

então, se você já visitou, você pode pular para ele por

j workstuff

ou até mesmo

j stuff

porque também funciona com correspondências parciais. Se mais de um diretório corresponder a você, vá para o que for mais visitado, se não for o desejado, repita o comando para ir para o segundo.

No entanto, fica melhor! Se você também tem o diretório

/home/user/stuff

e você faz

j stuff 

e depois Tab Separador Separador obtido (na ordem dos mais visitados)

$ j stuff__
stuff__1__/home/user/this/long/and/annoyingly/deep/directory/workstuff
stuff__2__/home/user/stuff

e depois você pode simplesmente pressionar o número do diretório que você quer!

Para instalar, você pode usar apenas sudo apt-get install autojump e, em seguida, precisa adicionar

source /usr/share/autojump/autojump.bash

para o seu ~/.bashrc .

Mais informações aqui: link (também instruções sobre como instalar isso do src, que obtém a versão mais recente)

    
por Gerhard Burger 07.12.2012 / 11:09
5

Os aliases do Bash são úteis para criar atalhos para executar comandos comuns.

  • Em ~/.bashrc , adicione uma linha semelhante à seguinte para criar o alias:

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • Feche e abra o terminal novamente ou execute source ~/.bashrc .

  • A partir de agora, você pode simplesmente executar jump1 para executar esse longo comando cd .

Veja também:

por Flimm 07.12.2012 / 11:20
4

Apesar de já existirem algumas boas respostas, pensei em mencionar que os antigos pushd e popd Bash incorporados permitem que você se mova muito rapidamente entre diretórios em caminhos profundos em seu sistema de arquivos. Em contraste com os marcadores autojump mencionados por burger.ga , a pilha de diretórios criada usando pushd é apenas temporário.

Como as notas do manual do GNU , pushd e popd são construções internas do Bash usadas para construir uma pilha temporária de diretórios que é um

list of recently-visited directories. The pushd builtin adds directories to the stack as it changes the current directory, and the popd builtin removes specified directories from the stack and changes the current directory to the directory removed. The dirs builtin displays the contents of the directory stack.

Demora um pouco para se acostumar, mas há muitos tutoriais úteis por aí no este blog e este este site por exemplo. Não há manpages separadas para os comandos, pois elas estão incluídas na página de manual do Bash, mas para referência rápida você pode ver o GNU Bash página.

A explicação mais clara é este artigo muito útil e é exatamente a maneira que eu uso pushd e popd :

Primeiramente, use dirs ou dirs -l para listar diretórios na pilha e dirs -c para limpar a pilha.

De certa forma, você marca o local onde deseja retornar inserindo

pushd /home/mike/Pictures/Canon/2012_07_01

e, em seguida, você pode adicionar mais diretórios à pilha, de modo a obter uma listagem de diretórios conforme abaixo, que inclui três pastas designadas e sua pasta inicial ~ :

dirs
~/Downloads/folder/interest ~/Music/artist/album ~ ~/Pictures/Canon/2012_07_01

Na verdade, você não precisa usar popd imediatamente, pois isso remove diretórios da pilha; A melhor coisa a fazer é usar pushd para girar a pilha, para que você possa alternar entre os diretórios e encomendá-los como quiser. Para mais informações sobre essa rotação útil de pilha, consulte a página de manual do Bash .

Se você tiver exatamente a disposição da pilha mostrada na listagem dirs acima, pushd +3 mudará para a pasta Imagens específica e colocará a parte superior da pilha (é +3 e não +4, pois você não conte seu ~ na pilha de diretórios):

pushd +3
~/Pictures/Canon/2012_07_01 ~/Downloads/folder/interest ~/Music/artist/album ~

Então, o prompt diz:

~/Pictures/Canon/2012_07_01$

Você pode continuar fazendo isso sem removê-los da pilha, embora quaisquer pastas para as quais você cd , além daquelas adicionadas à pilha de diretórios com pushd , alterem sua pilha de diretórios.

Quando a pilha de diretórios estiver organizada na ordem desejada, você poderá usar popd para percorrer rapidamente os diretórios e retornar à pasta inicial; por exemplo, de Pictures , podemos retornar a Downloads :

popd
~/Downloads/folder/interest ~/Music/artist/album ~

e o prompt lê

~/Downloads/folder/interest$

Em geral, a beleza disso é que você pode configurar a pilha de diretórios e a ordem dos itens dentro dela com pushd e, em seguida, digamos que você tenha três arquivos para editar em cada um desses diretórios, você pode retornar instantaneamente para cada um com popd ao removê-los da pilha de diretórios. Então, com seu último popd , você retornará para ~ . Ele se torna particularmente útil quando você tem diretórios particularmente profundos e pode usá-lo para configurar a pilha de diretórios para se mover rapidamente entre eles.

Além disso, esta questão contém algumas dicas que você pode achar útil ao trabalhar na linha de comando:

por user76204 08.12.2012 / 13:52
2

Mesmo que exista alguma maneira de fazer isso com mais rapidez, eu pessoalmente recomendaria o uso de uma extensão do Nautilus chamada nautilus-open-terminal .

Primeiro instale o pacote nautilus-open-terminal e marque suas pastas favoritas com o Nautilus. No Nautilus 3.6. *, Você terá que entrar no menu de roda dentada e selecionar Bookmark this Location .

Emseguida,useosfavoritosdoNautilusparairmaisrápidoemseusdiretóriosfavoritosecliquecomobotãodireitoemumespaçovazioeselecioneAbrirnoTerminal.

Agora, você pode ter acesso rápido de linha de comando e gerenciador de arquivos aos seus diretórios favoritos.

    
por remjg 07.12.2012 / 10:53
2

anc foi projetado exatamente para esse caso de uso.

link

Aqui está um trecho do README.md:

# make the current directory the default anchor:
$ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

Divulgação completa: sou o autor do anc.

    
por Tobi 06.06.2016 / 09:52
1

Eu criei um conjunto de funções bash para isso e o adicionei ao meu .bash_profile

Script

goto(){
    cd $(getFolders $1)
}

gf(){
    getFolders $1
}

getFolders (){

    local folderList=(
     'alias'
     'Description of alias'
     '/path/to/alias/folder'
     'alias2'
     'Description of alias2'
     '/path/to/alias2/folder'
    )
    local moved="0"
    local count=0

    # Returns the path to the project
    while [ "${folderList[count]}" != "" ]
    do
        if [ "$1" == "${folderList[count]}" ]; then
            echo ${folderList[$(( $count + 2 ))]}
            moved="1"
        fi
        count=$(( $count + 3 ))
    done

    # Returns all project names
    if [ "$moved" != "1" ]; then
        count=0
        while [ "${folderList[count]}" != "" ]
        do
            echoc 6 ${folderList[count]}
            echo - ${folderList[count+1]}
            count=$(( $count + 3 ))
        done
    fi
}

Uso

getFolders

Usando getFolders, você tem uma lista de abreviações, descrição e localização para cada pasta. Quando você usa getFolders com uma abreviação, ele exibe o local da pasta. Você pode obter uma lista de pastas disponíveis e suas descrições simplesmente chamando getFolders sem um parâmetro

Exemplo de como obter o caminho da pasta

getFolders alias

saídas

/path/to/alias/folder

Exemplo de como obter pastas disponíveis.

getFolders

saídas

alias
- Description of alias
alias2
- Description of alias2

gf

gf é um atalho para getFolders

gf alias2

saídas

/path/to/alias2/folder

goto

goto é uma maneira simples de criar um cd para a pasta selecionada.

goto alias

saída

cd foi executado em / path / to / alias / folder

/ caminho / para / alias / pasta >

Por que várias funções

No coração do Unix e Linux você tem funções reutilizáveis simples que podem ser encadeadas. Eu prefiro esse método, pois ele não apenas o move para um local selecionado, mas é uma função que, por alias, retorna um caminho. Você pode usar essa função para fazer qualquer coisa daquele ponto, como cd, nesse caminho.

    
por 25.07.2018 / 18:06
0

Você pode colocar um alias no seu arquivo .bashrc (ou no arquivo de configuração do seu shell favorito - eles geralmente estão no seu diretório pessoal):

alias cd1="cd directory/directory/my_destination/"

Um link de informações úteis sobre o uso de aliases no bash é aqui .

    
por haziz 08.12.2012 / 07:28
0

Considere definir a CDPATH variável de ambiente em seu .bashrc ou .bash_profile. O CDPATH usa o mesmo formulário delimitado por dois pontos que outras variáveis iguais a PATH usam e permite que cd use atalhos para localizar seus diretórios. Por exemplo:

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz
    
por kojiro 28.06.2016 / 15:20
0

você pode configurar seu próprio atalho para um diretório específico. Por exemplo, você quer ir para o diretório aninhado, geralmente você faz

cd /home/dir-1/dir-2/dir3/dir4/dir5/dir6/dir-target

você geralmente usa o comando cd e digita todos os nomes de diretório ou pode pular a digitação (usando o botão TAB), mas ainda leva alguns minutos.

Então, para economizar seu tempo , você pode criar um alias no terminal. Sua tarefa única para configurar o alias.

alias dir-target = '/home/dir-1/dir-2/dir3/dir4/dir5/dir6/dir-target'

Agora, você precisa apenas usar o nome do alias ( dir-target ) para mover para o diretório de destino.

    
por sanjay mundhra 06.07.2016 / 13:30
0

A maneira mais rápida que encontrei foi o xd , um programa "eXchange Directories" escrito por um holandês chamado Frank B. Brokken.

Funciona encontrando todos os caminhos em seu sistema de arquivos que podem resolver para uma abreviação que você digitou, por exemplo, ulb poderia representar /usr/local/bin se essa pasta existe no seu sistema:

% cx ulb
Multiple Solutions:
 1: /usr/lib/binfmt.d/
 2: /usr/local/bin/

Ao pressionar 2, você está em /usr/local/bin .

É um software muito antigo e não está mais disponível no local original, sem contato com o autor, por isso, para evitar que ele seja perdido, eu o coloco no repositório do Github:

link

    
por LetMeSOThat4U 20.07.2017 / 22:38
-1

Eu uso o DirB (Bookmarks do diretório) para fazer isso. Muito agradável! link

Modifiquei o meu para se adequar ao meu gosto e ser mais fácil de usar e claro.

    
por fstephens 12.12.2012 / 18:55