Como você cd na primeira pasta disponível sem digitar o nome?

18

Eu estava recentemente em uma situação em que estava dentro de uma pasta e queria cd para uma pasta de subdiretórios. Havia apenas uma pasta dentro dessa pasta e era um nome muito longo.

Home (I am here)
 |
 |
  --> /reallylongnamefolder

Existe alguma maneira de entrar nessa pasta em vez de digitar:

 cd reallylongnamefolder
    
por Arian Faurtosh 24.04.2014 / 20:20

6 respostas

30

Eu aconselho a digitar as primeiras letras e pressionar a tecla . Bash tem recurso de autocomplete que é realmente útil. Se for apenas diretório no caminho atual, apenas pressionando tab preencherá o diretório inteiro.

Digitar cd e pressionar tab duas vezes irá mostrar todas as opções no diretório atual.

A aba é geralmente muito útil no bash, já que você acessa quase todos os executáveis em um ou dois pressionamentos de tecla.

cd * como sugerido acima funciona apenas se o diretório for o primeiro na listagem e não oculto. Se houver arquivo em ordem alfabética antes de seu diretório, esse cd não mudará seu diretório.

    
por masozravapalma 24.04.2014 / 20:35
9

Eu acho que realmente descobri realmente

cd * 
cd */

Mas eu não testei se há vários arquivos e uma pasta!

Como @Rinzwind mencionado nos comentários!

Digamos que você tenha três pastas longas:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Se você digitar a primeira letra do arquivo, clique na aba para completar automaticamente o nome do arquivo! MALDITO LOUCO!

Portanto, no exemplo acima, você pode digitar: t tab e preencherá automaticamente o máximo que puder: cd thisislongfolder (digite o número você mesmo).

Ou você pode usar cd t*1 em thisislongfolder1

Obrigado Rinzwind!

    
por Arian Faurtosh 24.04.2014 / 20:21
7
cd $(ls -d */|head -n 1)

ls -d */ lista os diretórios, head -n 1 fornece o primeiro da lista.

    
por ace 25.04.2014 / 12:12
1

Eu tenho uma boa configuração para isso, isso me permite não apenas cd para ~ / somereallylongfoldername, mas também cd para lá, mesmo quando estou na pasta /

a primeira coisa que eu uso é zsh com oh-my-zsh isso também permitirá que você grave sem ter que se preocupar com o caso ou mesmo sem digitar cd

  1. instale o git e o zsh
sudo apt-get install zsh git
  1. instale o Oh My ZSH
  

curl -L link | sh

  1. Altere o shell padrão para ZSH
chsh -s /bin/zsh

abra e edite seu arquivo .zshrc que está localizado na sua pasta pessoal e não está oculto

nano ~ / .zshrc

adicione a seguinte linha ao final do arquivo   export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Se você gosta do meu tema, também pode alterar a linha #ZSH_THEME="robbyrussell" para ZSH_THEME="pygmalion"

Salve e feche o arquivo e reinicie, ou seja, feche e reabra o shell ou simplesmente abra uma nova aba e experimente-a

você não pode usar a tecla tab para completar os nomes e no ZSH você nem precisa ter o caso certo, você pode digitar docu e pressionar tab e ele irá transformá-lo em ~ / Documents

    
por zeitue 30.04.2014 / 04:27
0

Você pode alterar o diretório pelo número do inode.
primeiro encontramos o inode com ls -il .
então

cd $(find -inum directory_inode_number)
    
por user257256 25.04.2014 / 12:06
0

Se você precisar fazer isso em um script ou para suportar diretórios com nomes indecisos:

cd $(python -c $'import os\nfor entry in os.listdir(b"."):\n if os.path.isdir(entry):\n  os.write(1, entry);break\nelse: os.write(1, b".")')

Funciona se houver arquivos no diretório, independentemente de sua ordem de classificação em relação aos diretórios.
Ele funciona para diretórios ocultos quando cd */ falha. Ele funciona se o nome não puder ser representado na localidade atual quando ls imprimir somente ?? em vez de um nome.

    
por jfs 30.04.2014 / 13:19