Para a troca de diretório no Linux, todos definitivamente pensarão em um comando: cd
comando. Este é o comando mais básico no Linux. Se você não conhece esse comando, pode fazê-lo rapidamente.
O comando cd é realmente muito conveniente, mas se você precisar alternar com frequência nos seguintes diretórios, pode ter que duvidar de sua vida:
/home/alvin/projects/blogdemos/linux-system-programming/thread
/home/alvin/projects/blogdemos/diff
/home/harry/study/日本文化/中日交流/影视业/动作片
Se você só pode usar o comando cd, precisa manter o cd até enlouquecer.
Nesse caso, como alternamos diretórios com eficiência? Liang prometeu introduzir três pushd
comandos: popd
, dirs
,.
Esses três comandos são na verdade para 目录栈
operar, e 目录栈
é um diretório para salvar a estrutura da pilha, o topo da estrutura da pilha sempre manteve o diretório atual (bate no quadro-negro, o foco !!).
Há alunos que sabem noções básicas de programação, 栈
trata-se de seguir os 后进先出
princípios. Em outras palavras, na estrutura da pilha, os elementos que são colocados na pilha posteriormente serão retirados da pilha primeiro.
Depois de revisar os conceitos básicos, vamos examinar esses três comandos em detalhes.
Exibe o conteúdo da pilha do diretório: dirs
O primeiro é dirs
. Este comando é muito simples, é mostrar o conteúdo da pilha do diretório. Ele tem as seguintes três opções comuns:
Opções | significado |
---|---|
-p | Exibir um registro por linha |
-v | Exibir um registro por linha e exibir o índice do registro na pilha |
-c | Esvazie a pilha do diretório |
Dentre eles, -p
a -v
diferença entre as opções é que -v
será exibido o índice de cada registro nas opções da pilha, além de ser exatamente o mesmo. Se houver uma pilha de diretório agora, vamos ver o que ela contém:
[alvin@VM_0_16_centos dir2]$ pwd
/home/alvin/test/dir2
[alvin@VM_0_16_centos dir2]$ dirs -v
0 ~/test/dir2
1 ~/test/dir1
2 ~/test/dir3
3 ~/test
Observe que o elemento superior é sempre consistente com o diretório atual. Se você visualizar a pilha do diretório em outro diretório, o primeiro elemento será alterado de acordo. Da mesma forma, se você usar a apresentação de texto pushd
e popd
para operar a pilha de diretórios, o diretório atual para o primeiro elemento de comutação correspondente ao endereço da pilha de diretórios.
Se quisermos limpar a pilha de diretórios, a -c
opção de uso direto .
[alvin@VM_0_16_centos diff]$ dirs -c
[alvin@VM_0_16_centos diff]$ dirs -v
0 ~/projects/blogdemos/diff
Empurre para a pilha de diretório: pushd
Depois que cada comando pushd for executado, um comando dirs será executado por padrão para exibir o conteúdo da pilha do diretório. Os principais usos do pushd são os seguintes:
1. pushd + diretório
Se pushd for usado diretamente com um diretório, ele alternará para esse diretório e o colocará no topo da pilha de diretórios. exemplo:
[alvin@VM_0_16_centos test]$ pushd dir1
~/test/dir1 ~/test
[alvin@VM_0_16_centos dir1]$ pushd ../dir2
~/test/dir2 ~/test/dir1 ~/test
[alvin@VM_0_16_centos dir2]$ pushd ../dir3
~/test/dir3 ~/test/dir2 ~/test/dir1 ~/test
[alvin@VM_0_16_centos dir3]$ dirs -v
0 ~/test/dir3
1 ~/test/dir2
2 ~/test/dir1
3 ~/test
2. pushd (sem quaisquer parâmetros)
O efeito de executar pushd sem nenhum parâmetro é trocar os dois diretórios superiores da pilha de diretórios. Enfatizamos anteriormente que o primeiro elemento da pilha de diretórios está relacionado ao diretório atual, portanto, quando o primeiro elemento for alterado, o diretório atual mudará de acordo e vice-versa.
[alvin@VM_0_16_centos dir3]$ dirs -v
0 ~/test/dir3
1 ~/test/dir2
2 ~/test/dir1
3 ~/test
[alvin@VM_0_16_centos dir3]$ pwd
/home/alvin/test/dir3
[alvin@VM_0_16_centos dir3]$ pushd
~/test/dir2 ~/test/dir3 ~/test/dir1 ~/test
[alvin@VM_0_16_centos dir2]$ pwd
/home/alvin/test/dir2 #对应目录发生改变
[alvin@VM_0_16_centos dir2]$ dirs -v
0 ~/test/dir2
1 ~/test/dir3 #索引 0 和 1 的内容对调
2 ~/test/dir1
3 ~/test
* 3. pushd +/- n *
Pushd +/- n é para mudar diretamente para o diretório correspondente ao valor do índice. Observe que tanto o sinal de mais quanto o sinal de menos podem ser usados aqui. Se for um sinal de mais, contará a partir do topo da pilha de diretórios e, se for um sinal de menos, contará a partir da parte inferior da pilha de diretórios.
A seguir, voltamos à pergunta do início deste artigo: Se quisermos alternar frequentemente entre dois ou mais diretórios com caminhos muito longos, o que devemos fazer?
Primeiro, usamos pushd + directory para adicionar esses caminhos à pilha de diretórios;
Em seguida, use pushd +/- n para alternar rapidamente entre os diferentes diretórios. A demonstração específica é a seguinte:
[alvin@VM_0_16_centos dir2]$ pwd
/home/alvin/test/dir2
[alvin@VM_0_16_centos dir2]$ dirs -v
0 ~/test/dir2
1 ~/test/dir3
2 ~/test/dir1
3 ~/test
[alvin@VM_0_16_centos dir2]$ pushd +2
~/test/dir1 ~/test ~/test/dir2 ~/test/dir3
[alvin@VM_0_16_centos dir1]$ pwd
/home/alvin/test/dir1
[alvin@VM_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test
2 ~/test/dir2
3 ~/test/dir3
Abra a pilha do diretório: popd
Depois de cada comando popd ser executado, um comando dirs será executado por padrão para exibir o conteúdo da pilha do diretório. Os principais usos do popd são os seguintes:
1. popd (sem quaisquer parâmetros)
O efeito da execução do popd sem nenhum parâmetro é exibir o elemento superior na pilha do diretório. Nesse momento, o elemento superior da pilha muda e, naturalmente, o diretório atual muda de acordo.
[alvin@VM_0_16_centos dir3]$ dirs -v
0 ~/test/dir3
1 ~/test/dir1
2 ~/test
3 ~/test/dir2
[alvin@VM_0_16_centos dir3]$ popd
~/test/dir1 ~/test ~/test/dir2
[alvin@VM_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test
2 ~/test/dir2
2.popd +/- n
Exclua o enésimo elemento da pilha de diretórios. Da mesma forma, os sinais de mais e menos indicam se é necessário contar de cima para baixo ou de baixo para cima.
[alvin@VM_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test
2 ~/test/dir2
[alvin@VM_0_16_centos dir1]$ popd +1
~/test/dir1 ~/test/dir2
[alvin@VM_0_16_centos dir1]$ dirs -v
0 ~/test/dir1
1 ~/test/dir2
Finalmente, recentemente, muitos amigos me pediram um roteiro de aprendizagem do Linux , então, com base na minha experiência, passei um mês ficando acordado até tarde em meu tempo livre e compilei um e-book. Quer você esteja em uma entrevista ou em auto-aperfeiçoamento, acredito que isso o ajudará! O diretório é o seguinte:
Dê a todos de graça, basta pedir que você me dê um polegar para cima!
Ebook | Roteiro de aprendizagem de desenvolvimento Linux
Espero também que alguns amigos possam se juntar a mim para tornar este e-book mais perfeito!
Ganho? Espero que os ferros antigos tenham um combo de três golpes para que mais pessoas possam ler este artigo
Leitura recomendada: