Às vezes, ao acessar os vários diretórios, acontece na maioria das vezes que me lembro dos nomes ou pelo menos parte dos nomes de um diretório em nosso sistema Linux. Mas alguns dos diretórios são nomeados começando com maiúsculas de primeiro caractere ou um dos caracteres no meio do nome Maiúsculas.
Alguém pode sugerir como posso fazer os argumentos após o cd
caso do comando INSENSITIVE, de modo que, se eu executar cd BackupDirectory
ou cd backupdirectory
puder digitar o nome do diretório BackupDirectory.
É claro que eu não quero estragar tudo para outros usuários. Se isso for possível, é possível que a alteração possa ser aplicada apenas à sessão que estou usando e não afete outros usuários?
Ok, eu tentei, set completion-ignore-case
mas isso simplesmente não funciona. Apenas ajuda se eu digitar cd b
e / Tabou Esc Escpreencher o nome do diretório, ignorando o caso. Mas, o que eu preciso é que, se eu fizer um cd backupdirectory
, simplesmente ignore o caso e entre BackupDirectory
por conta própria.
fonte
backUP
ebackUp
, comobackup
não, para qual diretório deseja ir?mc
ou mudar para uma GUI? Torna a vida muito mais fácil.Respostas:
A ativação
cdspell
ajudará:Na
man
página:fonte
Bater
set completion-ignore-case on
in~/.inputrc
(oubind 'set completion-ignore-case on'
in~/.bashrc
) seria minha recomendação. Se você deseja digitar o nome completo, por que recusar alguns toques na Shifttecla?Mas se você realmente quiser, aqui está um wrapper
cd
que tenta uma correspondência exata e, se não houver, procura uma correspondência que não diferencia maiúsculas de minúsculas e a executa se for única. Ele usa anocaseglob
opção shell para globbing sem distinção entre maiúsculas e minúsculas e transforma o argumento em um globo acrescentando@()
(que não corresponde a nada e requerextglob
). Aextglob
opção precisa ser ativada ao definir a função, caso contrário, o bash não pode nem analisá-la. Esta função não suportaCDPATH
.Ksh
Enquanto estou nisso, aqui está uma função semelhante para o ksh93. A
~(i)
modificação modificada para correspondência sem distinção entre maiúsculas e minúsculas parece ser incompatível com o/
sufixo para corresponder apenas aos diretórios (isso pode ser um bug no meu lançamento do ksh). Então, eu uso uma estratégia diferente, para eliminar não-diretórios.Zsh
Finalmente, aqui está uma versão zsh. Novamente, permitir a conclusão sem distinção entre maiúsculas e minúsculas é provavelmente a melhor opção. A configuração a seguir volta a globbing que não diferencia maiúsculas de minúsculas se não houver uma correspondência exata de maiúsculas e minúsculas:
Remova
''
para mostrar todas as correspondências que não diferenciam maiúsculas de minúsculas, mesmo que exista uma correspondência de maiúsculas e minúsculas. Você pode definir isso na interface do menu decompinstall
.fonte
inputrc
que ele funcione. Assim:echo "set completion-ignore-case on" >> ~/.inputrc
cd:cd:17: no such file or directory: videos
(Eu tenho um dir chamadoVideos
) #emulate -L zsh
paraemulate -LR zsh
? (A propósito, eu apenas consertei um bug, isso deveria ter acontecidoemulate -L zsh
,emulate zsh
caso contrário, isso prejudicaria suas opções de shell.)