Programação em Ruby. Terminal para principiantes - parte 2
Damian Watroba
Software Engineer
Olá! Desta vez, preparámos outro conjunto de comandos úteis para o ajudar a familiarizar-se com a utilização do terminal. A primeira parte do tutorial pode ser encontrada aqui: Terminal para principiantes - parte 1.
Terminal - Teoria
Onde é que eu estou?
data - Se tivermos essa necessidade e desejo, podemos verificar a data atual no terminal.
damian@rubydev:~$ date
wto, 7 sty 2020,
Inscrição e listagem
gato (concatenar) - este comando tem muitas utilizações, mas a mais popular é mostrar o conteúdo dos ficheiros.
No exemplo abaixo, pode ver dois ficheiros - ruby_1.txt e rubi_2.txt - juntamente com o seu conteúdo. Os cat [nome do ficheiro] mostra o conteúdo de um único ficheiro, enquanto o comando cat [nome do ficheiro 1] [nome do ficheiro 2] apresenta o conteúdo de ambos os ficheiros na ordem correta.
Há mais uma coisa que podemos fazer com o gato comando - redirecciona a saída padrão para um novo ficheiro utilizando o comando > sinal. Isto significa que o conteúdo apresentado no ecrã será redireccionado para um ficheiro declarado. Se o ficheiro indicado não existir na localização especificada, será criado automaticamente.
O que é que temos aqui?
ps (status do processo) - imprime informações básicas sobre os processos no sistema. Este comando é comparável ao Gestor de Tarefas do Windows, onde existe uma lista de todas as aplicações e processos em execução. Cada aplicação, programa ou comando em execução torna-se um processo com o seu identificador único, o chamado PID (Process IDentifier).
Como se pode ver, o ps o comando não mostrou nós muito. Para verificar todos os processos activos, teremos de chamar ps com um aux argumento.
Por isso, os processos de sistema são baseados em BSD:
ps ax
ps axu
matar - Por vezes, uma aplicação ou programa deixa de responder. É neste caso que matar é muito útil. Para matar um processo, tudo o que tem de fazer é completar o matar com o seu PID.
Como é que encontra o PID desse processo? O melhor é utilizar a função ps aux comando. Pode acontecer que matar por si só não é suficiente porque o processo está à espera que outro processo dependente termine. Portanto, matar também é frequentemente utilizado com o -9 opção. Significa o fim imediato do processo em execução, por isso, antes de utilizar esta opção, certifique-se de que todas as alterações importantes foram guardadas. Vamos dar uma olhadela a um exemplo de um comando deste género:
damian@rubydev:~$ kill -9 1234
Echo!
eco - este é o comando que devolve o texto que lhe foi confiado. À semelhança do caso do gatopode direcionar o texto introduzido para um ficheiro com a ajuda da função eco comando.
Pode ser útil
Quando se pretende ver o histórico dos comandos introduzidos anteriormente, podemos utilizar o comando história comando.
Se quiser limpar a janela do terminal, precisa do comando claro comando.
O saída como o nome indica, fecha o terminal ou o separador atualmente aberto.
O início e o fim
O cabeça apresenta o início de um ficheiro ou saída padrão. O valor padrão é as primeiras dez linhas. Pode personalizá-lo com o comando -n opção onde pode colocar qualquer número inteiro em n. Para melhor ilustrar este facto, utilizarei um exemplo.
Vamos precisar de um ficheiro de texto. Vamos utilizar o já mencionado história e o comando de redireccionamento > carácter.
damian@rubydev:~$ history > history.txt
Desta forma, foi criado um ficheiro com todo o histórico de comandos. Depois, usando head -15 history.txté possível visualizar os primeiros quinze comandos introduzidos no terminal.
Do mesmo modo, o cauda mostra-nos as últimas linhas do ficheiro selecionado.
Pesquisar
grep (impressão de expressão regular global) é utilizado para procurar no texto uma cadeia de caracteres que corresponda a uma dada expressão regular (RegExp). É utilizada muitas vezes para encontrar uma expressão específica num ficheiro ou "filtrar" o resultado obtido. Para este efeito, vamos utilizar a expressão regular histórico.txt e verificar com que frequência o ficheiro ps foi utilizado até à data:
damian@rubydev:~$ grep ps history.txt
82 echo "Lorem ipsum rubydev 1" > ruby_1.txt
84 echo "Lorem ipsum rubydev 2" > ruby_2.txt
92 ps
93 ps aux
94 ps --help
95 man ps
96 ps -h
98 ps --help
99 ps -ejH
100 ps aux
101 man ps
102 ps -aux
103 ps aux
109 history | grep ps
113 echo "lorem ipsum rubydev" > rubydev.rb
Como se pode ver, grep também encontrou palavras que contêm a frase ps. A expressão utilizada no nosso exemplo foi ps apenas. Tenciono escrever um artigo separado sobre expressões regulares, mas por agora encorajo-o a explorar o tópico por si próprio. De momento, os conhecimentos básicos são suficientes.
Combinação de comandos
| (pipe) é um símbolo que nos permite combinar vários comandos (processos) e iniciá-los ao mesmo tempo. Especificamente, podemos combinar a saída (stdout) de um comando com a entrada (stdin) de outro. Trata-se de uma funcionalidade muito útil.
A saída (stdout) do história será pesquisado pelo comando grep e devolve todas as cadeias de caracteres com a correspondência ps expressão.
histórico | cauda -5
Neste caso, utilizando o cauda com o comando -5 exibirá as últimas cinco linhas da saída (stdout) do história comando.
Esta combinação é especialmente útil quando se procura o PID do processo que se pretende terminar. Lembre-se que executar o comando grep também criará um processo, pelo que normalmente verá o PID do grep na última linha.
Aceder a ficheiros e diretórios
Antes de passarmos ao comando que altera o tipo de permissões de acesso, vale a pena mencionar que cada sistema operativo tem os chamados direitos de acesso. Isto significa que cada diretório ou ficheiro contém metadados sobre quem tem acesso a ele. A primeira coluna do "output" seguinte diz-nos tudo sobre isso (informação de saída apresentada na janela do terminal):
histórico | cauda -5
O acesso a ficheiros e diretórios é definido por três componentes. O primeiro (utilizador) refere-se a um único utilizador, o segundo (grupo) a um grupo, enquanto o terceiro (outro) se aplica a todos os outros utilizadores.
d - determina se se trata de um diretório ou de um ficheiro (d - diretório, f - ficheiro)
rwx - direitos do utilizador
r-x - permissões para o grupo
r-x - autorizado para todos os outros utilizadores
Para simplificar, pode dividi-lo em três partes:
Passemos agora ao significado exato destes direitos:
r (ler) - permite-lhe ler o conteúdo
w (escrever) - permite-lhe modificar o conteúdo
x (executar) - permite-lhe executar um ficheiro ou abrir um diretório
As permissões de ficheiros ou diretórios podem ser alteradas utilizando o comando chmod (modo de alteração). A forma mais fácil de alterar as permissões é utilizar o sistema incorporado e fornecer o número da permissão para o utilizador, grupo e outros.
Para pôr este conhecimento em prática, vamos alterar as permissões para os ficheiros vídeo para grupos e outros utilizadores - retire todas as permissões a estes dois, mas deixe a permissão completa apenas para o utilizador individual. De acordo com a tabela acima, "sem direitos" é indicado pelo número 0. Imediatamente após o chmod tem de inserir três dígitos, cada um especificando os direitos para a categoria dada (utilizador - grupo - outros). No final, indique o nome do ficheiro ou diretório. O comando deve ter o seguinte aspeto:
damian@rubydev:~$ chmod 700 Wideo
damian@rubydev:~$ ls -l | tail -1
drwx------ 2 damian damian 4096 sty 6 17:41 Wideo
Resumo
Há uma série de outros comandos e a forma mais fácil de os dominar é praticar a resolução de problemas específicos. Se quiseres saber mais sobre eles, Recomendo o léxico de comandos do Linux de bolso. Na minha opinião, é uma forma agradável de passar algum tempo nos transportes públicos.