INTRO TO BASH SHELL on MAC part 2

In the part 1 of this learning topic you had one introductory approach to BASH in this part we will go deeper in the knowledge of BASH in MAC OS

Now that we know how to open a terminal window in a MAC we will need to confirm that we are really running bash on that window.
For that it is required to execute a simple command.

The command bellow will check if we are running bash.

echo $BASH

Notice that if you do not use the capitals in “BASH” you will not get the return.

If your output is not “/bin/bash” then install and enable BASH in your machine.

Command Arguments

A command is a word that is written in the shell.

In the previous example the command is “echo”.

Everything that comes after the command is called argument.

In the previous example “$BASH” is the argument for the command echo.

Options

If an argument starts with a  ” – ” then it is considered an option.

Examples:

  • ls -a
  • ls -l
  • ls -la

In this example the command is “ls” that corresponds to list and the -a is the option that instructs ls command to list all the files including the ones that are hidden, -l is the option that instructs the command to list the files in long format.

Help

The commands might have several options available. To list those options or to know how to use the commands we can call the manual for that command.

For that we use the command “man” and then as argument the name of the command that we wish to receive help for.

This will open the manual page for the specified command.

Space key will move down a page, “b” will move back a page.

Search will be done with the “/” and exit with “q”

Test this new commands and pay attention to the differences in the output.

Comando Start? Nos vários Windows…

Com o surgimento dos múltiplos processadores no Windows começamos a ter alguns problemas por vezes com aquelas aplicações que não sabem bem como lidar com a fartura. Algumas tornam-se gananciosas e roubam todos os ciclos de processamento possíveis em todos os processadores.
Por incrível que pareça esta situação pode ser facilmente controlada reservando os recursos necessários ao nosso sistema.
Imaginemos que se quer correr um notepad apenas a ocupar recursos de um processador especifico…

Para isto apenas necessitamos de abrir uma janela cmd e escrever o seguinte comando:

start /affinity 1 notepad.exe

Este comando dá indicações para inicializar o processo notepad a ocupar o CPU com o ID 0.
Pode ser validado abrindo o taskmanager e observando qual a afinidade de processadores,  apenas o CPU 0 está a a ser utilizado pelo programa.

Sabendo isto pode-se usar esta vantagem das mais diversas formas, exemplo: criar um atalho que arranca a aplicação com estes parâmetros, um ficheiro batch etc. A imaginação é o céu 🙂

Aqui fica um conjunto de possibilidades do comando start que passa à maioria das pessoas despercebido mas que é muito importante.

START

Starts a separate window to run a specified program or command.

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] 
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] 
      [/AFFINITY ] [/WAIT] [/B] [command/program] 
      [parameters]

 “title” – Titulo a colocar na barra de Windows.

path – Directoria de inicio.

B – Iniciar a aplicação sem criar uma nova janela

I – O novo ambiente será o ambiente original passado para o cmd.exe e não o ambiente que está a correr no momento.

MIN – Iniciar a janela minimizado.

MAX – Iniciar a janela maximizado.

SEPARATE – Iniciar o programa de 16-bit numa zona de memória separada.

SHARED – Iniciar um programa de 16-bit numa zona de moeria comum.

LOW – Iniciar a aplicação numa forma de “IDLE priority class”.

NORMAL – Iniciar a aplicação com prioridade normal.

HIGH – Iniciar a aplicação com prioridade Alta.

REALTIME – Iniciar a aplicação com prioridade em tempo real.

ABOVENORMAL – Iniciar a aplicação com prioridade acima do normal.

BELOWNORMAL – Iniciar a aplicação com prioridade a baixo normal.

AFFINITY – A nova aplicação terá a afinidade para o processador especificado deve ser expressa como um numero decimal.

WAIT – Iniciar uma aplicação e esperar que ela termine.

Batch Commands

Comandos Batch.

Aqui fica alguma informação extra que pode ser util.

@ - Previne que uma linha seja mostrada no ecrã quando escrito no inicio da linha.
ECHO [offon] - Activa ou desactiva o echo de ecrã.
ECHO "menssagem" - Mostra a "mensagem" no ecrã.
if [not] Errorlevel num cmd - Executa o cmd se o valor de erro for superior ao "num" o not inverte o sentido.
if [not] Exists file cmd - Executa o cmd se o ficheiro existir. Not inverte o sentido.
if [not] txt1 == txt2 - Executa o cmd se o ficheiro txt1 for igual ao txt2 Not inverte o sentido.
goto label - Salta para a label
:label - Identifica a label.
for %%var in (set) do [cmd] %% var - Executa um loop pelo conteúdo de set correndo o cmd por cada intem do set.
shift - Faz um shift aos parâmetros uma casa ficando os parâmetros %2 em %1 e %3 em %2.
call batch args - Chama um ficheiro batch e passa argumentos voltando ao código quando o ficheiro batch acaba de executar.
setlocal - define variáveis locais ao programa que está a correr.
endlocal - Faz com que as variáveis locais sejam conhecidas pelo sistema. Ficam activas no sistema quando o batch encerra a sua execução.
pushd path - Grava a pasta local num stack e altera a path
popd - Muda para a ultima pasta colocada na pilha pelo pushd e remove-a da pilha.
pause - suspende o programa até uma tecla ser pressionada.
title - Define o titulo da janela de comandos.