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.