segunda-feira, 30 de maio de 2011

Substituindo comandos digitados de forma errada

Essa vai ser rápida. Às vezes quando estamos digitando no terminal Linux, acabamos errando uma letra em um comando grande. Por exemplo:

cptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 3000 ! -s 10.0.2.0/24 -j DNAT --to-destination 10.17.153.201:3389


Nesse caso, a palavra iptables está errada, está escrita cptables. Para não precisarmos voltar ao início do texto e consertá-lo, podemos usar uma facilidade do terminal que é o ^. Com ele podemos substituir o que temos pelo que queremos. Seria dessa forma:

[root@desktop ~]# cptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 3000 ! -s 10.0.2.0/24 -j DNAT --to-destination 10.17.153.201:3389
-bash: cptables: command not found

[root@desktop ~]# ^c^i
iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 3000 ! -s 10.0.2.0/24 -j DNAT --to-destination 10.17.153.201:3389

O uso acima não faz muito sentido porque a letra digitada está no início do comando, bastando apertar a tecla HOME e trocar o c pelo i. Mas se a letra errada (ou até a palavra inteira) estivesse no meio do texto, então seria mais útil. Algo como:

[root@desktop ~]# iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 3000 ! -s 10.0.2.0/24 -j DNAT --to-destination 10.17.153.201:3389

No caso acima, ao invés de tcp, você queria que fosse udp também, então o comando para executar outra regra seria esse:

[root@desktop ~]# ^tcp^udp
iptables -t nat -A PREROUTING -p udp -i ppp0 --dport 3000 ! -s 10.0.2.0/24 -j DNAT --to-destination 10.17.153.201:3389