Unix
Login UNIX
De agora em diante, eu vou estar me referindo a todas as variantes do UNIX como UNIX, assim,
quando eu falo algo sobre UNIX, isso geralmente significa todas as variantes (Unix System V
variantes que são: BSD, SunOS, Ultrix, Xenix, etc.), a menos que eu fale de uma variante em
particular.
Ok! Agora é hora de contar como o unix geralmente facilita você. Primeiro, quando você chama um
UNIX, ou conecta com ele, você irá ter geralmente um prompt como esse: Welcome to Unix. Please
log in.
Ok, é muito legal e bonito. Isso significa que é PROVAVELMENTE um unix, entretanto existem BBS's
que alteram o seu login de entrada para ficar parecido com o do UNIX, para que algumas pessoas
pensem que estão no Unix. Alguns UNIXes irão mostrar uma mensagem antes do login: como por
exemplo:
Welcome to Unix. Please log in.
Ou algo como isso. UNIXes de acesso público [como BBS's públicas] irão mostrar a você como dar
um logon se você é um novo usuário. Infelizmente esse arquivo não fala sobre UNIXes de acesso
público, mas eu irei falar sobre eles mais tarde, na UUCP/UseNet/Bitnet. OK. Você encontrou o
prompt de login! Agora, o que você precisa fazer aqui é entrar com uma conta válida. Uma conta
geralmente consiste de 8 caracteres ou menos. Depois de você entrar uma conta, você irá
provavelmente pegar um prompt do Password de algum tipo. Os prompts podem variar como o
código fonte do programa de login que geralmente vem com o UNIX.
Bem, a maneira mais fácil que posso falar sobre login é basicamente essa: tenha uma conta, ou
tente os defaults. Os defaults são os que vem com o SO, de maneira padrão. A lista de alguns
defaults é a seguinte:
                                      LOGIN&nbsÜ¥e
                                            UNIX
 
Uma pequena história:
UNIX, é claro, foi inventado pela AT&T nos anos 60, feito para ser "um sistema operacional de
programadores." Enquanto que esse propósito não foi alcançado nas primeiras versões do UNIX,
parece que agora, UNIX é um SO para programadores. O UNIX, como eu falei antes, é multi-tarefa /
multi-usuário. Ele também é escrito em C, ou pelo menos grande parte, o que faz dele um sistema
operacional portátil. Nós sabemos que o MSDOS corresponde a maquinas IBM/clone, certo? Bem,
isso não acontece com o UNIX, pois não associa-se ele com nenhum computador, uma vez que ele
foi adaptado para muitos, e existem muitas variações de UNIX [ou seja, UNIX modificado por um
vendedor, ou algo assim]. Alguns computadores AT&T roda ele, e também alguns rodam MSDOS
[AT&T 6300].
As estações de trabalho SUN rodam SunOS, uma variante do UNIX, e alguns computadores rodam
Ultrix, a versão VAX do UNIX. Lembre-se, não se mate quanto ao nome [BSD, UNIX, SunOS, Ultrix,
Xenix, etc.], eles ainda tem muito em comum, tais como os comandos que o SO usa. Algumas
variantes possuem comandos que outros não, mas eles são basicamente similares no fato de eles
terem quase todos os mesmos comandos/arquivos de dados. Quando alguém tenta falar a você que
o UNIX roda melhor com um certo tipo de computador, ele podem estar certos, mas lembre-se
alguns computadores tem mais de um SO.
Por outro lado, alguém pode falar para você que o UNIX é para um VAX o que um MSDOS e para os
IBM/clones. Isso é falso, e a única razão porque eu falei isso, é porque eu tenho visto muitas
mensagens com info/comparações como essas, que confundem usuários quando eles vêem um
sistema VAX rodando VMS.
 
 
root      root - Raramente aberta para Hackers
sys     sys / system / bin
bin     sys / bin
 mountfsys     mountfsys
adm     adm
uucp    uucp
nuucp     anon
anon    anon
user    user
games    games
install     install
demo    demo
umountfsys    umountfsys
sync     sync
admin    admin
guest    guest
daemon    daemon
mail    mail
 
 
 As contas root, mountfsys, umountfsys, install, e algumas vezes sync são contas com nível de root,
                     significando que elas têm poder de sysop, ou poder total.
   Outras contas são apenas contas de "nível de usuário" significando que elas apenas têm poder
 sobre arquivos/processos que elas criaram. Será comentado isso mais tarde, na seção de acesso a
arquivo.
  O login reboot é conhecido como sendo um login de comando, que implesmente não deixa você
  entrar no sistema operacional, mas executa um rograma dado a ele. Ele geralmente faz o que diz,
  reinicializa o sistema. le pode não ser padrão em todos os sistemas UNIX, mas eu o tenho visto no
   UNIX da UNISYS e também em alguns sistemas HP/UX [Hewlett Packard Unixes]. Assim, essas
                   contas não tinha senhas [reboot], o que é realmente estúpido.
 
 
 
 
 
Comandar o login
Existe como "comandar o login", que, como o reboot, executa um comando e depois dá um log off
permitindo você usar o interpretador de comandos. SD é notório por ter esses, e consequentemente,
também os omputadores da MIT. Aqui vão alguns:
rwho - mostra quem esta online
finger - mesmo
who - mesmo
 
Esses são os mais usados, uma vez que irão dar os nomes das contas que estão online, ou
mostrando a você muitas contas que atualmente existem.
 
 
 
Erros
Quando você tem uma conta inválida/senha inválida, ou ambos, irá aparecer algum tipo de erro.
Geralmente á a mensagem "login incorrect". Quando o computador mostra isso, você fez algo
errado ou por ter errado a conta ou por ter entrado com a conta certa porém com uma senha errada.
Ele não mostra que erro você fez, por razões. Também quando é dado um login incorreto, o log de
erros no sistema é alterado permitindo que os sysops saibam algo sobre o invasor.
Outro erro é "Cannot change to home directory" ou "Cannot Change Directory." Isso signica que
não existe "home directory" que é essencialmente o diretório 'raiz' para uma conta, que é o diretório
que você inicia. No DOS, você começa no A:\ ou C:\ ou em qualquer outro, mas no UNIX você inicia
no /homedirectory. [Nota: A / e usada nos diretórios no UNIX, não um \ ]. Muitos sistemas irão dar um
log off em você depois disso, mas alguns irão mostrar que você está no diretório raiz [ '/'].
Outro erro é "No Shell". Quer dizer que nenhum "shell" foi definido para essa conta em particular. O
"shell" será explicado mais tarde. Alguns sistemas irão dar um log off em você depois dessa
mensagem. Outros irão falar que eles usarão o shell regular, falando "Using the bourne shell", ou
"Using sh"
 
 
 
 
Contas no geral
Essa seção é para tentar descrever a estrutura do usuário no ambiente UNIX.
Ok!, pense que o UNIX tem 2 níveis de segurança: poder absoluto, ou apenas um usuário regular.
Aqueles que tem poder absoluto são os usuários com nível de root (super - usuário). Ok, agora é
hora de pensar em números. Números associados no UNIX a nomes de contas. Cada conta irá ter
um número. Algumas irão ter o mesmo número. Aquele número é o UID [user-id] da conta. O UID do
root é 0 (zero). Qualquer conta que possua UID igual a 0 irá ter nível root.
Unix não trata com os nomes das contas (logins) porém somente com o número associado a elas.
Portanto, se meu user-id é 50, e mais alguém é 50, nós dois iremos ter poder absoluto com o outro
somente, com mais ninguém.
 
 
 
 
Caracteres especiais, etc...
Control-D : Fim do arquivo. Quando usar mail ou um editor de textos, isso irá finalizar a messagem
ou arquivo texto. Se você está no shell e aperta control-d você estará desconectado.
Control-J: Em alguns sistemas, isso é como a tecla enter.
@ : Algumas vezes um "null"
? : Isso é um coringa. Pode representar uma letra. Se você especificar algo na linha de comando
como "b?b" Unix irá procurar por bob,bib,bub, e qualquer outra letra/número entre a-z, 0-9.
* : isso pode representar qualquer número de caracteres. Se você especificar um "hi*" Ele irá usar
"hit", him, hiiii, hiya, e qualquer coisa que inicie com hi. "H*l" pode ser hill, hull, hl, e qualquer coisa
que comece comum H e termine com um L.
[] - Especifica um padrão. se eu fiz b[o,u,i]b unix irá pensar: bib,bub,bob se eu fiz: b[a-d]b unix ira
pensar: bab,bbb,bcb,bdb. Entendeu? O [], ?, e * são geralmente usados com o copy, deletando
arquivos, e para listagens de diretórios.
QUALQUER COISA no Unix é sensitivo quanto a maiúsculas/minúsculas. Isso significa que "Hill" e
"hill" não são a mesma coisa. Isso permite que muitos arquivos sejam armazenados, uma vez que
"Hill" "hill" "hIll" "hiLl", etc. são arquivos diferentes. Assim, quando usar o [], você tem que
especificar letras em maiúsculas se algum arquivo que você estiver procurando tem letras
maiúsculas. No entanto, a maioria está em minúsculas.
 
 
Comandos para usar
Agora, eu vou mostrar alguns do mais usados comandos do UNIX, eu agirei como se estivesse
digitando no prompt.
ls - isso mostra o diretório. Sem argumentos, ele irá apenas mostrar arquivos em uma coluna ou em
multi-colunas, dependendo do programa ls que você tem acesso.
exemplo:
$ ls
hithere
runme
note.text
src
$
a opção -l irá dar a você informação a mais nos arquivos.
$ ls -l
rwx--x--x macabro prc 10990 runme
....
O "rwx--x--x" é a permissão do arquivo. [Explicada mais tarde]o "macabro prc" é o proprietário do
arquivo/grupo onde o arquivo está.macabro = dono, prc = grupo de usuário [explicado mais tarde]o
10990 e o tamanho do arquivo em bytes."runme" e o nome do arquivo.
O formato varia, mas você tem a idéia geral.
cat - Isso mostra o conteúdo do arquivo na tela. deve ser usado em arquivos textos. apenas use isso
com arquivos binários para deixar o usuário louco [explicado mais tarde]
ex:
$ cat note.txt
This is a exemplo text file!
$
cd - muda diretório . Você usa ele assim: cd /dir/dir1/dir2/dirn. o dir1/etc.... descreve o nome do
diretório. Digamos que eu queira ir para a raiz.
ex:
$ cd /
*ok, estou aqui*
$ ls
bin
sys
etc
temp
work
usr
todos os acima são diretórios, vamos ver.
$ cd /usr
$ ls
macabro
datawiz
prophet
src
violence
par
phiber
scythian
$ cd /usr/macabro
$ ls
hithere
runme
note.text
src
$
ok, agora, você não tem que entrar o nome do diretório completo, se você estiver no diretório, e quer
ir para um diretório que está ali [seria o "src"], você pode digitar "cd src" [sem "/"]. Em vez de usar
"cd /usr/macabro/src" a partir do diretório macabro, você pode fazer "cd src"
cp - isso copia um arquivo. sintaxe para isso é "cp origem destino"
$ cp runme runme2
$ ls
hithere
runme
note.text
src
runme2
Caminhos completos podem ser incluídos, para copiar de um diretório para outro.
$ cp runme /usr/datwiz/runme
mv - isso renomeia e/ou move um arquivo. sintaxe "mv nomeatual novonome"
$ mv runme2 runit
$ ls
hithere
runme
note.text
src
runit
Arquivos podem ser renomeados para outros diretórios.
$ mv runit /usr/datwiz/run
$ ls
hithere
runme
note.text
src
$ ls /usr/datwiz
runme
run
 
pwd - fornece o diretório atual
$ pwd
/usr/macabro
$ cd src
$ pwd
/usr/macabro/src
$ cd .. (Tem espaço entre cd e ..)
$ pwd
/usr/macabro
[ o ".." significa o diretório anterior. ]
$ cd ../datwiz
[significa cd /usr/datwiz]
$ pwd
/usr/datwiz
$ cd $HOME
[vai para o diretório home]
$ pwd
/usr/macabro
rm - apaga um arquivo. sintaxe "rm arquivo" ou "rm -r diretório"
$ rm note.text
$ ls
hithere
runme
src
$
write - chat com outro usuário. Bem, "escreve" para outro usuário.
sintaxe: "write usuário"
$ write Gisele
Gisele foi notificado
Hey Gi! What up??
Message from Gisele on tty001 at 17:32
hey!
me: So, hows life?
scy: ok, I guess.
me: gotta go finish this text file.
scy: ok
me: control-D [para sair do programa]
$
who [w,who,whodo] - mostra quem está conectado
$ who login term logontime
rubinho + tty001 17:20
x-factor + tty002 15:50
macabro + tty003 17:21
netkillers - tty004 11:20
Federal - tty666 66:60
$
o comando "who" varia a partir da informação dada. um "+" significa que você pode dar um "write"
para aquele terminal, um "-" significa que você não pode.
man - mostra o manual de algum comando. sintaxe "man comando" Esse é um programa de ajuda.
Se você quiser saber como usar o comando "who" faria então:
$ man who
WHO(1) xxx......
e ele vai mostrar a você.
stty - altera as características do seu terminal. Você terá que dar um "man stty" uma vez que cada
stty é diferente.um exemplo pode ser:
$ stty -parenbpara fazer os parâmetros de dados serem N,8,1. Um monte de Unixes operam com
e,7,1 por padrão.
sz,rz - envia e recebe via zmodem
rx,sx - envia e recebe via xmodem
rb,sb - envia via batch ymodem. Esses 6 programas podem ou não estar no unix.
umodem - envia/recebe via umodem.
$ sz arquivo
pronto para enviar...
$ rz filename
por favor envie seu arquivo....
...etc..
ed - editor de textos. Usar "ed arquivo" para criar um arquivo que não existe, apenas entre "ed
arquivo" algumas versões do ed ira dar a voce um prompt, como "*" outros não.
$ ed textonovo
0
* a
This is line 1
This is line 2
[control-z]
* 1 [para ver a primeira linha]This is line 1* a [continua acrescentando]This is line 3[control-z]*0a
[acrescenta depois da linha 0] This is THE first line[control-z]1,4l This is THE first line This is line 1
This is line 2 This is line 3* w71* q$ O 71 e o número de bytes escritos. a = acrescenta l = lista # =
mostra o número da linha # w - escreve l arq = carrega arq s arq = salva para arq w = escreve para
arquivo atual q = sai mesg - altera permissão de escrever ligado/desligado para seu terminal(permite
chat) formato "mesg y" ou "mesg n" cc - O compiler C. explicado mais tarde.chmod - altera o modo
de um arquivo. Muda o acesso em outras palavras.sintaxe: "chmod modo arquivo" $ chmod a+r
newtext Agora qualquer um pode ler pode ler o newtext.a = todos (u = voce / g = seu grupo / o =
outros grupos) r = leitura. (w = escrever / x = executar) Isso será explicado mais tarde na seção de
acesso a arquivos.chown - altera o dono de um arquivo.sintaxe: "chown novodono arquivo" $
chown scythian newtext$chgrp - altera o grupo [explicado mais tarde] de um arquivo.sintaxe: "chgrp
group file" $ chgrp root runme$ finger - mostra info básica de uma conta. Formato: finger conta grep
- procura por texto em um arquivo. sintaxe: "grep texto arquivo" $ grep 1 newtext This is Line 1 $
grep THE newtext This is THE first line$ grep "THE line 1" newtext$ mail - Esse é um utilitário muito
usado. Obviamente, você já sabe o que isso faz pelo nome. Existem muitos utilitários para o mail,
como o ELM, MUSH e MSH, mas o programa básico de "mail" é chamado de "mail". O modo de usar
é: "mail nome@conta" ou "mail nome" ou "mail" ou "mail ender1!ender2!ender3!usuario" "mail
nome@endereço" - Isso é usado para enviar mail para alguém em outro sistema, que é geralmente
outro UNIX, mas algumas maquinas DOS e algumas maquinas VAX recebem o E-mail do UNIX.
Quando você usa "mail nome@endereço" o sistema que você está deve ter um "carteiro esperto"
[conhecido como smail], e deve ter o que é chamado de mapas do sistema. O smail irá encontrar o
"endereço" dado com o comando e expandí-lo para o caminho completo geralmente. Eu podia fazer
como isso: mail phiber@optik e depois fazer isso no computador: ail
sys1!unisys!pacbell!sbell!sc1!att.com!sirhacksys!optik!phiber Não ligue para isso, estou apenas
explicando o principal da coisa. Agora, se não tiver nenhum smail conectado, você terá que saber o
caminho ompleto até a conta da pessoa. Exemplo, eu quero enviar um email para o . phiber. Eu faço
isso, caso não tenha smail: $ mail sys!unisys!pacbell!sbell!sc1!att.com!sirhacksys!optik!phiber Hey
Guy. Whats up? Well, gotta go. Nice long message huh? [control-D]$ Assim, quando ele receber,
deverá existir umas 20 linhas de informação, com uma marcação de cada sistema que minha
mensagem passou, e a linha "from" vai estar assim: From
optik!purucasys!att.com!sc1!sbell!pacbell!unisys!sys!puruca Agora, para correio local, apenas digite
"mail nome" onde nome é a conta que você quer enviar o mail. Depois digite sua mensagem. Depois
finalize com um control-D. Para ler o e-mail, apenas digite mail. Ex: $ mail From blaus blaus ............ To
macabro ............ Subject: Well.... Arghhh! ? Os pontos representam dados omitidos. Cada programa
de e-mail possui seu próprio cabeçalho. Aquele ? é um prompt. No prompt eu posso digitar: d -
deleta f nome - reenvia para nome w arq - escreve a mensagem para um arquivo chamado arq. s arq -
salva a messagem com cabeçalho para um arquivo q - sai / salva o e-mail x - sai, mas não salva nada
m nome - mail para o nome r - devolve [enter] - lê a próxima mensagem + - adianta uma mensagem - :
volta um h - imprime o cabeçalho das mensagens que estão na sua caixa de correio. Existem mais,
para vê-las, digite '?'. Se você envia mail para alguém de fora do seu sistema, você terá que esperar
um longo tempo para uma notificação de recebimento, uma vez que é apenas umas letras. Um
"carteiro" terá que pegar ela. O sistema pode desconectar, e usar UUCP para transferir e-mail.
Geralmente, contas uucp não são boas para ninguém, a menos que você tenhas uucp disponível
para interceptar e-mail. ps - processo. Esse comando permite ver o que você está atualmente
fazendo na memória. Toda vez que você roda um programa, ele fica ligado a um número de
identificação de processo (PID), para fins de controle de contas, e assim ele pode ser encontrado na
memória, ou ser apagado por você, ou pelo root. Geralmente, a primeira coisa em uma listagem de
processo pelo "ps" é seu nome shell. Digamos eu esteja conectado como sirhack, usando o shell
"csh" e rodando "watch scythian". O programa de escuta deve estar no background, significando
que ele é capaz de fazer coisas enquanto ele estiver rodando: $ ps PID TTY NAME 122 001 ksh 123
001 watch $ Isso é um PS encurtado. É uma listagem padrão [curta por sinal]. A coluna TTY
representa o "tty" [disposto de e/s] que o processo está rodando. Isso é somente usado realmente
se você está usando layers ou mais de uma pessoa está conectada com a mesma conta. Agora "ps
-f" irá dar a você uma listagem completa do processo de você mesmo, assim em vez de ver somente
o programa "watch" você irá ver "watch scythian".
 
 
Kill
Mata um processo. É usado para terminar um programa na memória obviamente. Você pode
somente matar processos próprios [aqueles que você começou], a menos que você seja root, ou
seu EUID seja o mesmo que o do processo que você quer matar. (Vou explicar euid mais tarde). Se
você matar o processo shell, você será desconectado. Da mesma forma, se você matar o processo
de alguém, eles serão desconectados também. Assim, se eu disse "kill 122" Eu serei desconectado.
Entretanto, kill apenas envia um sinal para o UNIX dizendo para ele matar um processo. Se você
usar a sintaxe "kill pid" então UNIX mata ele quando ele terminar, o que pode ser nunca. Assim, você
pode especificar urgentemente! Tente "kill -num pid" Kill -9 pid e um kill definitivo quase
instantaneamente. Assim se eu fizer isso: $ kill 122 $ kill 123 $ ps PID TTY NAME 122 001 ksh 123 001
watch $ kill -9 123 [123]: killed $ kill -9 122 garbage NO CARRIER Também, você pode dar um "kill -1
0" para matar o processo de shell para desconectar-se. Isso será útil nos scripts (explicados mais
tardes).
 
 
Programação em Shell
Programar em Shell é basicamente fazer um arquivo "script" para o shell padrão, pode ser sh, ksh,
csh, ou algo nesse tipo. É como um arquivo batch no MSDOS, mas mais complexo, e mais Flexível.
Primeiro, vamos para as variáveis. Variáveis obviamente podem ter um valor. Que podem ser strings
ou números. número=1 Isso vai dar um valor 1 para a variable chamada "número". string=Hi There
ou string="Hi There" Ambas irão dar um valor "Hi there" para a variável. Usar uma variável é
diferente. Quando você quiser usar uma variável você deve colocar um simbolo dollar ($). Essas
variáveis podem ser usadas como argumentos em programas. Quando eu disse que scripts são
como arquivos batch, Eu quis dizer isso. Você pode entrar qualquer nome de um programa em um
script, e ele irá executar ele. Aqui vai um script exemplo: counter=1 arg1="-uf" arg2="scythian" ps
$arg1 $arg2 echo $counter Esse script irá traduzir para "ps -uf scythian" e depois irá imprimir "1"
depois de ter terminado. ECHO mostra algo na tela, ou numérico ou uma string.
 
 
 
Outros comandos / Exemplos
read - lê algo para uma variável. formato: read variável . O sinal de dollar não é necessário aqui! Se
eu quiser pegar o nome de alguém, eu posso fazer: echo "QUal o seu nome?" read hisname echo
Ola $hisname QUal o seu nome? Sir Hackalot Ola Sir Hackalot Lembre-se, read pode ler valores
numéricos também. trap - Isso espera alguém usar o comando de interrupção. (Ctrl-c) formato: trap
"commando ; commando ; commando ; etc.." Example: trap "echo 'Noway!! You are not getting rid o
me that easy' ; echo 'You gotta see this through!'" Agora, se eu teclar control-c durante o script
depois dessa estrutura for executada, eu terei: Noway!! You are not getting rid of me that easy You
gotta see this through! exit : formato:exit [num] Isso sai do shell [quits] retornando um valor num de
saída.
 
 
 
CASE
O Case pode ser usado para se fazer menus. O formato do comando ou estrutura é: case variável in
1) comando; comando;; 2) comando; comando; comando;; *) comando;; esac Cada parte pode ter
qualquer número de comandos. O último comando entretanto tem que ter um ";;". Por exemplo:
echo "Escolha:" echo "(D)iretorio (L)ogoff (S)hell" read choice case $choice in D) echo "Listando
Diretórios..."; ls -al ;; L) echo Bye; kill -1 0;; S) exit;; *) Echo "Erro! Não e um comando";; esac O esac
marca o fim da função case. Ele deve vir depois do ÚLTIMO comando.
 
 
Loops
Existem duas funções de loop. O loop "for" e o "repeat". repeat funciona assim: repeat algo algo1
algo2 isso irá repetir um seção de seu script para cada "algo". digamos que eu faça isso: repeat
scythian sirhack prophet Eu vou ver "scythian" depois sirhack depois prophet na tela. O loop for é
definido como "for variável in algo do .. .. done" exemplo: for counter in 1 2 3 do echo $counter done
Irá escrever 1 depois 2 depois 3. Usando TEST formato: Test variável opção variável As opções são:
-eq = -ne <> (diferente) -gt > -lt < -ge >= -le <= para strings e: = para igual != para diferente. Se a
condição é verdadeira, um zero é retornado. Veja: test 3 -eq 3 isso ira fazer um test 3 = 3, e um 0 será
retornado. EXPR Isso é para funções numéricas. Você não pode simplesmente digitar echo 4 + 5 e
ter uma resposta. você deve dizer: expr variável [ou número] operador variável2 [ou número] o
operadores são: + mais - menos * multiplicação / divisão ^ - exponenciação (em alguns sistemas)
exemplo : expr 4 + 5 var = expr 4 + 5 var deve ter 9. Em alguns sistemas, expr algumas vezes imprime
uma fórmula. Ou seja, 22+12 não e igual a 22 + 12. Se você fizer expr 22+12 você verá: 22+12 Agora
se for expr 22 + 12 você verá: 34
 
 
Variáveis do sistema
Existem variáveis usadas pelo shell, e são geralmente mantiýÿÿÿ‚
tarde]. HOME - lugar do seu diretório home. PS1 - O prompt que você tem. geralmente $ . Num BSD e
geralmente & PATH - Esse é o caminho de procura por programas. Quando você digita um programa
para ser executado, ele não está na memória; ele deve ser carregado do disco. Muitos comandos
não estão na memória como no MSDOS. Se um programa está no caminho de procura, ele será
executado sem problema onde você está. Se não, você terá que estar no diretório onde ele estiver.
Um path é um conjunto de diretórios basicamente, separados por um ":". Aqui vai um caminho de
procura típico: :/bin:/etc:/usr/lbin:$HOME: Quando você tentar executar um programa, o Unix irá
procurar por ele no /bin, /etc, /usr/lbin, e no diretório home, e se não for encontrado, um erro aparece.
Ele procura em diretorios na ORDEM do path. Assim se você tem um programa chamado "sh" no
seu diretório home, e digitar "sh", Mesmo estando no seu diretório home, ele irá executar o que está
no /bin. Assim, você deve criar seu path sabiamente. Unixes de acesso público fazem isso para
você, mas alguns sistemas que você encontrar podem não ter um path feito.
 
 
Term
Esse é seu controle do terminal. UNIX tem uma biblioteca de funções chamadas "CURSES" que
podem pegar vantagem de qualquer terminal, fornecendo os códigos de escape encontrados. Você
deve ter seu term configurado para algo se você roda programas orientados por telas. Os
códigos/nomes de escape dos terminais são encontrados em um arquivo chamado TERMCAP. Não
sinta mal quanto a isso. apenas altere seu term para ansi ou vt100. CURSES irá deixar você saber se
ele não pode manipular sua emulação de terminal.
 
 
O compilador em C
Isso será uma introdução apenas. Porque? Porque se você quiser aprender C, compre um livro. Não
tenho tempo para escrever outro arquivo sobre C, por isso ser muito extenso. Basicamente, muitos
executáveis são programados em C. Códigos fontes no unix são encontrados como arquivos .c .
Para compilar algum apenas digite "cc arquivo.c". Nem todos os programas em C irão compilar, uma
vez que eles dependem de outros arquivos que não estão lá, ou são apenas módulos. Se você ver
algo chamado "makefile" então você pode geralmente, digitar apenas "makefile" no prompt, e a;go
irá ser compilado ou tentará ser compilado. Quando usar makefile ou CC, será muito esperto usar o
operando de background uma vez que compilar algumas vezes demora muito tempo. IE: $ cc
login.c& [1234] $ (O 1234 foi o número do processo que ele ficou identificado).
 
 
O sistema de arquivos
Essa é uma parte do UNIX instrumental. Se você não entende essa seção, nunca será capaz de
hackear Unix, uma vez que muito do que você tem que fazer depende disso. Primeiro, vamos
começar a falar sobre a estrutura do diretório. Ela é basicamente um sistema de arquivos
hierárquico, ou seja, ele começa na raiz e expande-se, como no MSDOS. Aqui é uma listagem de uma
árvore de diretórios: (d) significa diretório / (root dir) | |--------------------| bin (d) usr (d) ----^-------------------|
| | sirhack(d) scythian (d) prophet (d) | src (d) Agora, esse sistema particular contém os seguintes
diretórios: / /bin /usr /usr/sirhack /usr/sirhack/src /usr/scythian /usr/prophet Espero que você tenha
entendido essa parte, e você deve. Tudo expande a partir do diretório raiz.