Você está na página 1de 72

bash - GNU Bourne-Again SHell

Tambm pode usar sh que um link pra bash:

ls -la /bin/sh

lrwxrwxrwx 1 root root 4 2004-07-31 12:03 /bin/sh -> bash

ksh - Public domain Korn shell

tcsh - C shell with file name completion and command line editing

Bash um interpretador de comandos compatvel com sh, que executa

comandos lidos da entrada padro ou de um arquivo. Bash tambm

incorpora caractersticas teis das shells Korn e C (ksh e csh).

Bash tem sido desenvolvido para ser uma implementao compatvel

com a especificao IEEE Posix para shells e ferramentas (IEEE

Working Group 1003.2).

Em sistemas GNU/Linux tem una interface pra linha de comando chamada de

console, shell, terminal, modo texto e referencias semelhantes, existem

diversas interfaces pro usurio intergir com o sistema, tais como,

bash, csk, ksh, sh e outras....

So ferramentas com muitos recursos amigaveis, o modo texto acaba por

assustar os iniciantes, mas pode acreditar, com o uso destas ferramentas

voce faz muito mais, mais rapidamente e melhor, lembre que pode usar em

conjunto ou alternando entre o ambiente grfico e o shell pra explorar

as facilidades que cada uma lhe oferece, alm das inumeras teclas de

atalho o mouse tambm funciona pra selecionar, copiar e colar, faa um

teste agora, copie esta linha:

cat ~/.bash_history

1
Agora abra um terminal, posicione o cursor do mouse dentro da janela

do terminal e clique com boto do meio, boto auxiliar ou com as

teclas SHIFT+INSERT, uma destas aes vai colar a linha de comando no

terminal e mostrar seu historico de comandos.

Neste documento tem varios exemplos de comando, mensagens da lista Linux-


br,

mas no esgota o assunto, explore as pesquisas no Google, pra consultar o

manual, no terminal digite:

man bash

man ksh

man tcsh

bash --help

bash -c help

bash -c "help set"

man hash

isto mesmo hash com "h"

refinar pequisa no manual do bash, help <recurso_bash>

Exemplos para pesquisar somente sobre echo e eval

help echo

help Redirecting

somente help no prompt retorna as opes de uso.

2
Pra redirecionar a saida pra arquivo acrescente ">" arquivo.txt,

exemplo: bash -c help > helpbash.txt

Consulte o dicionario do google, na caixa de pesquisa digite:

define:bash

define:ksh

define:csh

define:tcsh

Pesquisas no google, acrescente: +bash ~linux

Exemplo, ajuda sobre while, coloque na caixa de pesquisa:

while +bash ~linux

while +ksh ~linux

while +csh ~linux

Informaes sobre os diversos consoles, conferir qual pacote pertencem

e como instalar:

Pra instalar e obter mais informaes dos pacotes:

O pacote que instala o bash tem o nome de bash

3
O pacote que instala o ksh tem o nome de pdksh

rpm -qa | grep ksh

pdksh-5.2.14-44471cl

O pacote que instala o csh tem o nome de tcsh

rpm -qa | grep csh

tcsh-6.12.00-55232cl

Em escripts pode escolher o interpretador, claro que respeitando a

compatibilidade dos comandos, indique isto na primeira linha do script,

pra invocar o bash pode usar bash ou o link dele sh:

#!/bin/bash

Ou #!/bin/sh

Pra interpretador ksh:

#!/bin/ksh

Pra interpretador perl:

#!/usr/bin/perl -w

Veja outros arquivos de configurao do bash, execute ls -la no seu home


para

listar todos, exemplo;

.bash_history

.bash_logout

.bash_profile

.bashrc

4
********************************************************************

Dica - acessar via ambiente grfico arquivos ocultos (que iniciam com
ponto).

Abra o konqueror e clique no botao da casinha (home), na URL (linha


localizao )

do konqueror acrescente /.nome-do-arquivo ou diretrio, exemplo para


acessar o

.bash_history do usurio zago;

file:/home/zago/.bash_history

********************************************************************

Indicaes de sites, material pra consulta e download:

lista de bash (shell-script) em portugues

http://groups.yahoo.com/group/shell-script

http://aurelio.net/shell/canivete.html

Canivete Suo do Programador Shell (bash)

Cdigos de Retorno de Comandos

Excelentes dicas, exemplos, tabelas diversas e etc..

http://aurelio.net/doc/sem-mouse-HOWTO.html

Sem Mouse HOWTO

E o que esse sem-mouse-HOWTO?

Este documento descreve como trabalhar em um computador desprovido

5
de mouse, rodando o sistema operacional Linux.

BASH Programming - Introduction HOW-TO

Em ingles, muitas dicas e exemplos de script.

http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-
formats/html_single/Bash-Prog-Intro-HOWTO.html

http://www.linux.com/guides/abs-guide/

Advanced Bash-Scripting Guide

Extensa e detalhada documentao pra comandos e programao em

bash, download, modelos de scripts e muito mais -> em ingles.

Advanced Bash Scripting Guide.

Download:

http://personal.riverusers.com/~thegrendel/abs-guide-2.8.tar.bz2

pagina do autor:

http://personal.riverusers.com/~thegrendel/software.html

http://www.tldp.org/LDP/abs/html/index.html

http://tldp.org/LDP/abs/html/

Advanced Bash-Scripting Guide

Tutorial em ingles, programao em shell script, com muitos exemplos

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

excelente tutorial sobre bash uso e programao - (em ingls)

Bash Prompt HOWTO

http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/index.html

6
Advanced Bash-Scripting Guide

http://www.tldp.org/LDP/abs/html/index.html

Algumas indicaes de pginas em portugues com dicas sobre

atalhos e bash em geral.

http://br-linux.org/tutoriais/002229.html

Atalhos de teclado no Bash

http://www.linuxdicas.com.br/sections-viewarticle-52.html

Linha de comando/Bash (parte 1)

Curiosidade - webserver escrito em BASH.

http://lrp.steinkuehler.net/Packages/weblet.htm

********************************************************************

Executar script ou comandos junto com o boot, tem algumas diferenas


entre as distros, veja na documentao de sua distro, CL10 pode colocar
no /etc/rc.d/rc.local, comandos ou script exclusivo de um usuiro deve
colocar no .bashrc que fica dentro do home do usurio.

Cuidado, o .bashrc executado quando entra no shell, quando faz login

em ambiente grfico, KDE, Gnome ou outro qualquer, o .bashrc no

executado, ou melhor, ser executado somente quando abrir um terminal

shell.

Alteraes no ./bashrc valem a partir da proxima vez que entrar no shell

Pra valer na sesso atual, basta executar o comando:

bashrc

7
********************************************************************

As configuraes do usurio em ~/.bash_profile vale somente pra login

em modo texto, quando se faz logim em modo grfico elas no so

executadas, pra personalizar configuraes pra ambiente grfico procure

nas ferramentas do prprio ambiente em uso.

Historico de comandos.

Os ultimos comandos executados no bash (shell) ficam armazenados em


.bash_history

dentro do home do usurio, algumas distro vem configurado para guardar os


ultimos

1000, outras os ultimos 500, para ver a configurao da sua instalao,


ver quantas

linhas esto sendo salvas, execute;

echo $HISTSIZE

Modifique o valor da varivel para o limite desejado.

O ~/.bash_history atualizado quando encerra a sesso, durante a sesso


fica

somente na memria, para gravar em disco durante a sesso, atualizar o


arquivo

history -w

Limpar historico da maquina

8
history -c

ou editar e fazer as correes, use seu editor preferido ou com "vi":

vi ~/.bash_history

Alguns comandos teis e relacionados:

veja mais detalhes no manual:

man history

history --help

Listar todos os comandos executados:

history

Scroll look, rolar linhas ou telas m modo prompt.

Mantenha pressionada a tecla SHIFT e pressione PageUP PageDown.

A tecla Shift juntamente com as teclas de Up ou Down permite voltar a


tela

pra ver comandos ou resultados que j no esto visiveis na tela.

PESQUISAR NO HISTORICO

pesquisar comando executado:

Digite CTRL+R e inicie a digitao da linha de comando ou qualquer

parte dela at aparecer a linha desejada, enter executa a linha em

evidencia, setas de direo continua exibindo as linhas proximas,

CTRL+C sai da pesquisa, novo CTRL+R reinicia a pesquisa.

9
history | grep comando

Este comando filtra no historico pra exibir somente as linhas que contm
a

palavra indicada, digitando somente history listar todas as linhas do

historico, nestes resultados as linhas so numeradas, executar uma

linha de comando que consta no historico, digite no prompt somente "!"

(sinal de exclamao) mais o numero da linha, exemplo para listar linhas

de comando que utilizou scp:

history | grep scp

Pegar uma linha do resultado e executar sem alteraes, digite o sinal de

exclamao "!" mais o numero da linha, executar sem alterao a linha 53

basta digitar:

!53

Execuo automatica da ultima linha do ~.bash_history

!! executa a ultima linha de comando, cuidado que no tem pergunta,

ao digitar exclamao duas vezes e enter ser executada a ultima linha

de comando automaticamente, dependendo da linha (rm, mv ...) j sabe....

Mantenha o .bash_history organizado, use seu editor preferido para

remover, incluir ou editar.

Editar a linha de comando em tempo de execuo, use CTRL+R para

localiza-la, use as setas de direo para sair da pesquisa e fixar a


linha no

prompt, continue usando as setas para levar o cursor na posio desejada,

faa as alteraes e enter para executar.

10
Use CTRL+R pra digitar e completar ou com mouse...

Ou copiar e colar com mouse, selecione a linha que deseja executar e

clique com boto auxilar ou boto do meio, as teclas shift+insert tambm

cola.

OBS.

Em ambiente texto, selecionar e copiar com mouse, basta manter o boto


acionador

pressionado e passar o ponteiro do mouse sobre a parte desejada, para


colar

pressione o boto auxiliar ou boto do meio, isto depende da configurao

do mouse.

Em terminal aberto a partir do ambiente grafico, clique com boto


auxiliar

e selecionar copiar.

Em qualquer ambiente, para colar no terminal funciona tambm as teclas

shift+insert, no terminal _no_ funcionam a combinao CTRL+C e CTRL+V.

Mas pode desviar os resultados para um arquivo, importar comandos de

um arquivo e outras facilidades, veja no site do Aurelio, tem muitas

dicas para quem quer acabar com o rato, veja a indicao:

Sem Mouse HOWTO

Dica.

Faa copia do .bash_history para outro nome e abra com kwrite, no editor
use

CTRL+F e F3 (pesquisar), facilita nas alteraes da linha de comando e

copiar, no shell cole com SHIFT+INSERT ou boto auxiliar.

Quando a linha no requer alterao, pressione a tecla F11 (Kwrite

11
numerar as linhas), no shell utilize o sinal de exclamao mais este
numero

para executar a linha de comando.

Scroll look, rolar linhas ou telas em modo prompt, a tecla Shift


juntamente

com as teclas de Up ou Down permite voltar a tela pra ver comandos ou

resultados que j no esto visiveis na tela.

Colocar titulo na janela do Konsole, quando abre uma tela no konsole via

KDE, pra colocar como titulo da janela o diretrio atual, coloque em seu

arquivo ~/.bashrc:

'export PS1=$PS1"\[\e]0;\H:\w\a\]'

alterar o prompt pra exibir hora corrente, nome da maquina, usurio e

caminho completo do diretrio atual, altere /etc/bashrc, comente a

linha "PS1="[\u@\h \W]\\$ "" e acrescente

export PS1='\[\033[01;33m\]\t \[\033[01;32m\]\u@\h [\033[01;34m\]\w \$


\[\033[00m\]'

veja as alteraes no /etc/bashrc.

#PS1="[\u@\h \W]\\$ "

export PS1='\[\033[01;33m\]\t \[\033[01;32m\]\u@\h [\033[01;34m\]\w \$


\[\033[00m\]'

exemplo de como fica o prompt:

00:51:00 zago@intranet [/srv/www/default/html/programas $

Somente pra usurios especificos.

alteraes em /etc/bashrc vale pra todos os usurios da maquina, pra

configurar usurios especificos, altere somente no home do usuiro,

12
acrescente no final do arquivo .bash_profile esta linha:

export PS1='\[\033[01;33m\]\t \[\033[01;32m\]\u@\h [\033[01;34m\]\w \$


\[\033[00m\]'

TMOUT - Fechar terminal inativo.

No bash a varivel "TMOUT", define um tempo de inatividade pra dar um

timeout no console, quando o console permanecer inativo pelo tempo em

segundos definido no ${TMOUT}, o terminal automaticamente encerrado.

Para definir o tempo em segundos, exemplo pra 60 segundos, execute:

TMOUT=60

Para desfazer esta configurao, zerar, remover esta configurao


execute:

unset TMOUT

Executar comando em outro diretrio e voltar, exemplo pra executar ls -la

dentro de /tmp, tem que colocar entre parenteses:

(cd /tmp && ls -la)

********************************************************************

Configurao do console

shopt

********************************************************************

Configurao geral.

13
/etc/skel

Quando criamos um novo usurio o sistema cria um diretorio para este

usuario dentro de /home/ e copia para o home deste novo usurio vrios

aquivos que depois podemos ajustar para as necessidades de cada user.

Quando esta configurao precisa ser feita para todos os usuarios o


servio

pode ser simplificado e alterando estes arquivos em /etc/skel/ assim


quando

o sistema fizer a copia para o home do usurio durante a criao deste,

os arquivos j vem ajustados.

COMPLETAR COMANDO COM A TECLA TAB.

No conectiva tem o pacote bash_completion, na digitao de comandos,


nomes

de arquivos ou diretrios, basta teclar tab pra completar, quando

existe mais de uma opo pressione tab 2 vezes pra exibir as possveis

alternativas, procure no synaptic por ele.

********************************************************************

RESUMO

Tem muitas opes e teclas de atalhos, aqui tem um resumo das teclas de

atalho e dicas que mais utilizo, na documentao tem muito mais....

Quando operando como usurio normal exibe no prompt o sinal ($), ex.:

[zago@faqcl10 tmp]$

Quando operando como root exibe no prmpt o sinal (#), ex.:

[zago@faqcl10 tmp]#

Copiar e colar com mouse, pra selecionar o procedimento o mesmo que se

14
utiliza no ambiente grfico, mantenha o boto acionador pressionado e

movimente o mouse.

A ao de copiar tem comportamente diferente quando se opera em modo

texto e quando opera em um terminal aberto a partir do ambiente grfico.

Trabalhando totalmente em modo texto a ao de selecionar j copia

automaticamente, um clique com boto auxiliar vai colar na posio atual

do curor toda a area selecionada, isto tanto faz ser no proprio terminal,

em outro terminal ou editores de texto, com isto voce pode copiar parte
do

que aparece na tela (selecionar) e um clique com boto auxiliar vai colar

na posio atual do cursor.

Trabalhando em um terminal aberto a partir do ambiente grfico, o


processo

pra selecionar o mesmo, pra colar precisa de um clique com boto


auxiliar

pra copiar, pra colar tambm requer o clique com boto auxilar, tanto no

terminal como no ambiente grfico.

Resumo pra algumas teclas de atalho:

comando ao

clear limpa a tela

CTRL+l limpa a tela

CTRL+PageUP volta tela pra exibir o que j no visto na tela atual

CTRL+PageDown Desfazer ao de CTRL+PageUP, avana tela.

Pra parar e continuar a listagem na tela de longos textos:

CTRL+s pra parar a rolagem da tela e CTRL+q continua.

editando a linha de comando:

15
Setas de direo pra esquerda e direita movimenta o cursor na

linha em edio.

Tecla (tab) completa o comando, nome do arquivo ou diretrio, quando


existir

a opo, (tab) duas vezes exibe a lista disponivel pra completar o que j
foi

digitado, ex.:

digite cd /ho mais a tecla tab

cd /ho<tab>

tecla (del) apaga o caracter sob o cursor

CTRL+d apaga o caracter sob o cursor

tecla (backspace) apaga o caracter a esquerda do cursor.

Ctrl+k recorta da posio atual do cursor at o fim da linha

ctrl+u recorta da posio atual do crusor at o inicio da linha

ctrl+y pega (cola) o que foi recortado com CTRL+k ou CTRL+u

tecla (home) vai pro inicio da linha

Ctrl-a vai pro inicio da linha

tecla (end) vai pro fim da linha

CTRL+e vai pro fim da linha

Ctrl+f ou seta pra direita avana o cursor

Ctrl+b ou seta pra esquerda retrocede o cursor

********************************************************************

fc

Pesquise sobre o uso do comando "fc".

16
man fc

Exemplo pra listar os ultimos 15 comandos:

fc -l

********************************************************************

Depurar script ou exibir no terminal as linhas executadas.

Execute o script com a opo -xv pra exibir as linhas de comando do

script.

bash -xv seu-script

provocar uma parada na execuo do script pra analizar algum resultado,

utilize sleep, exemplo pra parar a execuo por 3 segundos:

sleep 3

Veja tambm sobre uso do "read"

********************************************************************

Bash History

---------------------------------------------------------------------

Colaborao: Rodrigo Bernardo Pimentel <rbp@sp.conectiva.com.br>

O "history" (ou histrico) no bash, apesar de extremamente poderoso,

17
muito pouco usado, alm do tradicional "setinha pra cima" para exibir
os

ltimos comandos.

Seu comportamento regido por algumas variveis:

HISTSIZE - Tamanho (em nmero de comandos) do histrico.

HISTFILE - Arquivo em que sero salvos os comandos (normalmente

/.bash_history).

HISTFILESIZE - Tamanho mximo (em linhas) do arquivo selecionado acima.


Se

um valor for especificado, o arquivo ser truncado para

conter apenas o nmero especificado de linhas.

Eu, por exemplo, uso HISTSIZE e HISTFILESIZE como 5000.

Outra varivel interessante

HISTCONTROL - Pode ter um dentre trs valores: "ignorespace",


"ignoredups"

ou "ignoreboth". Se se usar o primeiro, comandos comeando com

espao no vo para o histrico. Com o segundo (e isso

particularmente interessante), se um comando executado mais

de uma vez em seguida, s uma ocorrncia vai para o

histrico. O terceiro implementa ambas as funcionalidades.

Finalmente, para quem costuma quebrar comandos em vrias linhas

(quem sabe isso no vai em outra dica? ;) , pode ser interessante fazer

export command_oriented_history=1

(ou qualquer outro valor, basta a varivel estar "setada") Isso faz

18
com que o bash tente salvar todas as linhas do comando, ao invs de
salvar

cada linha como se fosse um comando diferente (o comportamento padro).

O caracter associado ao histrico '!' (exclamao). Aqui, mais

fcil compreender com a ajuda de exemplos:

!bla - repete o ltimo comando comeando com "bla".

!?bla - repete o ltimo comando contendo "bla".

!x - repete o comando de nmero "x" no histrico. Similarmente,

!-y - repete o "y-simo" comando, do atual pra trs.

!! - repete o ltimo comando (ou seja, igual a !-1)

!# - repete tudo o que foi digitado na linha at aquele ponto. Por


exemplo,

"ls !#" geraria "ls ls"

Depois de especificada a linha de que se quer tratar (com os

comandos anteriores), pode-se selecionar parte delas e modific-la. Esse

tratamento das linhas introduzido por ':' (dois pontos).

A seleo, em sua forma mais simples, feito indicando-se um nmero

relativo posio do argumento que voc quer selecionar no comando (0 -

zero - o comando em si). Assim, por exemplo

[rbp@muppets ~]$ ls bla

ls: bla: No such file or directory

[rbp@muppets ~]$ !!:0

19
ls

A linha "!!:0" pegou a ltima linha e executou s o "argumento zero"

(o comando em si). Poderamos tambm fazer algo como:

[rbp@muppets ~]$ man xscreensaver

[rbp@muppets ~]$ !!:1

xscreensaver

Pode-se selecionar uma seqncia de argumentos, com "x-y" (do

argumento de nmero "x" ao de nmero "y", inclusive). Por exemplo,

[rbp@muppets ~]$ cat script1 script2 script3

(...)

[rbp@muppets ~]$ !!:1-2

script1 script2

(...)

[rbp@muppets ~]$

Complementando "^" o argumento de nmero 1 (isto , o primeiro

argumento depois do comando em si), "$" o ltimo. Podem-se fazer

abreviaes como "x-" (igual a "x-$"), "-x" (igual a "1-x") ou "*" (igual
a

"1-$").

Para se modificar o comando em questo (ou a poro selecionada

dele), o mtodo mais comum muito semelhante ao sed:

[rbp@muppets ~]$ mkdir diretorio1

[rbp@muppets ~]$ !!:s/1/2

mkdir diretorio2

20
O "s/1/2" substituiu "1" por "2" no comando anterior.

Juntando tudo:

[rbp@muppets ~]$ export EDITOR=emacs

[rbp@muppets ~]$ !!:1:s/EDITOR=//

emacs

Finalmente, uma dica: substituio do ltimo comando executado pode

ser feita rapidamente com

^a^b - substitui "a" por "b" no ltimo comando.

---------------------------------------------------------------

As mensagens da lista Dicas-L so veiculadas diariamente

para 9634 assinantes.

********************************************************************

Bash: Estruturas Bsicas

---------------------------------------------------------------------

Colaborao: Rodrigo Bernardo Pimentel <rbp@sp.conectiva.com.br>

comum queremos executar a mesma funo, ou uma funo parecida,

sobre uma srie de argumentos, um por vez.

Em bash, h duas estruturas bsicas pra isso: "for" e "while".

O "for", em bash, diferente do "for" em linguagens como C ou

Perl. Nessas linguagens, o "for" simplesmente um "while" mais completo.


Em

bash, o for atua sobre uma seqncia de parmetros (no necessariamente

21
numricos ou seqenciais). Por exemplo:

[rbp@muppets ~]$ for i in 1 2 3 4 5; do echo $i; done

[rbp@muppets ~]$

Ou,

[root@muppets ~]$ for login in rbp sizinha queiroz; do adduser $login;


done

[root@muppets ~]$

Voc pode inclusive usar o for a partir de uma sada de comando. Por

exemplo, digamos que voc tenha um arquivo com uma srie de nomes de

usurios a serem acrescentados ao sistema, como no exemplo acima:

[root@muppets ~]$ for login in `cat /tmp/usuarios`; do adduser $login;


done

[root@muppets ~]$

O "while", por sua vez, tem funcionamento semelhante maioria das

linguagens procedurais mais comuns. Um comando ou bloco de comandos


continua

a ser executado enquanto uma determinada condio for verdadeira. Por

exemplo, imitando o exemplo acima:

[rbp@muppets ~]$ while [ $i -le 5 ]; do echo $i; i=$(($i + 1)); done

22
2

[rbp@muppets ~]$

Aos poucos:

while [ $i -le 5 ]

O "while" deve ser seguido de "verdadeiro" ou "falso". Se for

"verdadeiro", o bloco executado e o teste repetido. Se for falso,


no.

No caso, "[ $i -le 5 ]" uma forma de usarmos o comando

"test". Esse comando testa uma expresso e retorna verdadeiro ou

falso. Poderia ser escrito como

while test $i -le 5

"$i -le 5" a expresso testada. O programa "test" aceita alguns

operadores. Entre eles:

-lt (less than) - primeiro argumento menor do que o segundo

-le (less or equal) - primeiro argumento menor ou igual ao segundo

-gt (greater than) - primeiro argumento maior do que o segundo

-ge (greater or equal) - primeiro argumento maior ou igual ao segundo

= - primeiro argumento igual ao segundo

!= - primeiro argumento diferente do segundo

23
O programa "test" pode tambm fazer testes "unrios", ou seja, com

s um argumento. Por exemplo,

arq="/tmp/arquivo"

tmp=$arq

i=1

while [ -e $tmp ]; do

i=$(($i+1))

tmp=$arq$i

done

touch $tmp

Esse scriptzinho (note que no o fiz na linha de comando, mas

indentado, para us-lo a partir de um arquivo; funciona dos dois jeitos)


s

sai do loop quando achar um nome de arquivo que no exista. Ou, de forma

mais didtica, "enquanto existir (-e) o arquivo cujo nome est na


varivel

$tmp, ele continua executado o bloco de comandos".

Alguns dos operadores unrios mais comuns so:

-e - arquivo ou diretrio existe

-f - um arquivo (em oposio a ser um diretrio)

-d - um diretrio

-x - arquivo tem permisso de execuo para o usurio atual

-w - arquivo tem permisso de escrita pelo usurio atual

-r - arquivo tem permisso de leitura pelo usurio atual

Para mais detalhes, "man test".

Continuando:

24
do echo $i

Logo aps um "while <teste>", preciso iniciar o primeiro comando

com "do". Os seguintes (se houver), no.

A prxima linha mostra um exemplo de algo que no tem nada a ver com

a estrutura do "while" em si, mas um truquezinho legal de bash:

i=$(($i + 1))

A construo "$((expresso))" um operador matemtico em bash. Isso

expandido para o resultado da expresso. Por exemplo,

[rbp@muppets ~]$ echo $((2 + 3))

[rbp@muppets ~]$ echo $((2 - 3)) # Funciona com nmeros negativos

-1

[rbp@muppets ~]$ echo $((2 * 3))

[rbp@muppets ~]$ echo $((10 / 2))

[rbp@muppets ~]$ echo $((3 / 2)) # No usa casas decimais

[rbp@muppets ~]$

Mas, como diz um amigo meu, voltando...

done

Isso termina "oficialmente" o loop "while". A propsito, como pode

25
ter sido notado, termina o "for" tambm.

Como foi dito acima, o while espera "verdadeiro" ou "falso". Eu

nunca disse que esperava isso s do programa "test" :)

Com efeito, qualquer expresso pode ser usada, e seu valor de

retorno ser utilizado para determinar se "verdadeiro" ou "falso". Para

quem no sabe, todo programa em Unix retorna um valor ao terminar sua

execuo. Normalmente, se tudo correu bem o valor retornado 0 (zero).


Se

h algum erro, o valor retornado, diferente de zero, indica o tipo de


erro

(veja as manpages dos programas; "man fetchmail" seo "exit codes"

um bom exemplo). Portanto, ao contrrio do que programadores de C ou Perl

poderiam achar intuitivo (dentro de um "while", ou uma condio em


geral),

um programa que retorna 0 considerado "verdadeiro" aos olhos do


"while".

Assim, podemos fazer:

while w | grep -qs rbp; do

sleep 5s

done

echo 'rbp acaba de sair do sistema!'

Nesse exemplo, o while checa o retorno da expresso "w | grep -qs

rbp". Isso retorna "verdadeiro" quando o grep acha "rbp" na sada do


comando

"w". Toda vez que achar, espera 5 segundos e checa de novo. Quando no

achar, sai do loop e mostra um aviso de que a ltima sesso do rbp foi

fechada.

26
Pra finalizar: se voc quiser fazer um loop infinito, pode usar ":"

(dois pontos) como condio sempre verdadeira:

while : ; do

echo 'Emacs rules!'

done

Isso vai imprimir uma constatao sbia infinitamente, at voc usar

C-c (Ctrl + C). Normalmente, isso utilizado com alguma condio de

parada. Mas "if" fica pra outra dica :)

---------------------------------------------------------------

As mensagens da lista Dicas-L so veiculadas diariamente

para 9603 assinantes.

********************************************************************

Linux: Atalhos de teclado em Bash

---------------------------------------------------------------------

Colaborao: Rodrigo Bernardo Pimentel &lt;rbp@sp.conectiva.com.br&gt;

Estou listando alguns "stupid bash tricks" que podem ser teis ou

mesmo divertidos :)

Estarei usando a notao do Emacs:

C-a significa "segure a tecla Ctrl e aperte a tecla a"

M-a significa "Use a tecla Meta junto com a tecla a", em que a

tecla Meta pode ser o Alt da esquerda, a tecla de funo do windows ao


lado

dela ou o Esc (nesse ltimo caso, no preciso manter o Esc apertado

enquanto se aperta o "a", basta apertar o Esc e em seguida o "a"). A


tecla

que responde pela Meta varia com cada configurao de teclado.

27
Alm disso, estou assumindo uma configurao padro do bash. H

configuraes alternativas e configuraes customizadas podem ser feitas


no

arquivo ~/.inputrc . Para mais informaes, man bash .

C-a : Ir para o comeo da linha

C-e : Ir para o final da linha

M-f : Andar com o cursor uma palavra para a frente

M-b : Andar com o cursor uma palavra para a trs

C-w : Apagar do cursor at o comeo da palavra

C-u : Apagar do cursor at o comeo da linha

C-k : Apagar do cursos at o final da linha

C-y : Re-inserir o ltimo trecho apagado com C-u, C-k ou C-w

C-d : Apaga o caracter sob o cursor (como o "Delete", no DOS e em algumas

configuraes de teclado no Linux)

C-h : Apaga o caracter anterior ao cursor. Era o comportamento padro da

tecla Delete, at no muito tempo atrs.

C-t : Inverte o caracter sob o cursor e o imediatamente anterior a ele

(Para, por exemplo, quando voc digitar "celar" ao invs de


"clear")

C-r : Faz busca incremental para trs no histrico de comandos.

Durante uma busca incremental, para se executar o comando exibido


na

linha, basta usar Enter. Para simplesmente deixar a linha pronta


para

execuo ou edio, use Esc. Para cancelar a busca sem utilizar a

linha que estiver na tela, use C-g.

Voc j se sentiu frustrado por ter de digitar

man make-ssh-known-hosts

28
E no poder usar o TAB para completar o nome do comando? Bem, em

primeiro lugar, o TAB no funciona porque o comando associado a ele

("complete") sensvel a contexto. Ou seja, se voc aperta TAB enquanto

est digitando a primeira palavra na linha, supe-se que voc esteja

digitando um comando e a busca por nomes para completar o que voc j

digitou feita na varivel PATH. Se a palavra est mais adiante na


linha,

supe-se que seja um nome de arquivo e tenta-se completar a palavra com


os

nomes de arquivo no diretrio atual. Bem, h alguns comandos que

possibilitam complementao de palavras independentemente de contexto:

C-/ : Tenta completar assumindo que se trata de um nome de arquivo

C-~ : Tenta completar assumindo que se trata de um nome de usurio


naquela

mquina

C-@ : Tenta completar assumindo que se trata de um nome de mquina


listado

em /etc/hosts

C-! : Tenta completar assumindo que se trata de um comando

---------------------------------------------------------------

As mensagens da lista Dicas-L so veiculadas diariamente

para 8965 assinantes.

Para sair ou assinar a lista Dicas-L, consulte o documento que

se encontra em http://www.Dicas-l.com.br/FAQ.html.

********************************************************************

Linux: Historico de Comandos

29
O Jorge mantem tambem uma lista de informacoes basicas sobre Linux.

Maiores informacoes em http://www.pcs.usp.br/~jkinoshi/boletim.html.

---------------------------------------------------------------------

Linux: Historico de Comandos

Em sistemas Linux, a shell padrao, `bash', armazena no arquivo

`.bash_history', os comandos executados. O numero de comandos armazenado

e determinado pelo valor da variavel de ambiente HISTSIZE:

$ env | grep HISTSIZE

HISTSIZE=1000

Como podemos ver, o valor da variavel HISTSIZE e 1000, ou seja,

sao armazenados os ultimos 1000 comandos emitidos, muito mais do

que um usuario comum precisa se lembrar.

$ wc .bash_history

1000 1894 10841 .bash_history

Para recuperar um comando que tenha sido emitido recentemente, podemos

usar o comando `grep':

$ grep slocate .bash_history

slocate -U ~

slocate -U ~ -d slocate.db

slocate -U ~ -o slocate.db

slocate --database=slocate.db *.tex

slocate --database=slocate.db tex

Ou ainda

30
$ history | grep slocate

Tudo depende do que voce acha mais facil digitar.

Basta entao identificar qual comando desejamos repetir e executa-lo.

---------------------------------------------------------------

********************************************************************

Mais dicas de bash

---------------------------------------------------------------------

Colaborao: Rodrigo Bernardo Pimentel [rbp@sp.conectiva.com.br]

Muitas vezes necessrio, em uma linha de comando, repetirem-se

palavras quase na ntegra, modificando-se somente um ou outro caracter.


Por

exemplo:

# cp ~/.emacs ~/.emacs.bak

Ou, pior,

# cp /mnt/usr/share/emacs/20.7/etc/sex.6 /usr/share/emacs/20.7/etc/sex.6

(para algum que tenha perdido o arquivo, por exemplo)

Bem, para os preguiosos, mesmo o primeiro exemplo demais.

Ento, tentando minimizar ao mximo a quantidade de caracteres

digitados, podemos usar um pequeno truque de bash:

# cp ~/.emacs{,.bak}

31
O que isso faz? A palavra que contem as chaves expandida em duas

palavras (neste caso, podem ser mais), separadas por espao: a primeira

contm "~/.emacs" mais o que est entre chaves, antes da primeira vrgula

(nada); a segunda contm "~/.emacs" mais o que est depois da vrgula

(".bak"). O resultado final, expandido pelo bash, seria

# cp ~/.emacs ~/.emacs.bak

Outro exemplo seria:

# cat arq{1,2,3} &gt; arq.final

Ou seja, o equivalente a

# cat arq1 arq2 arq3 &gt; arq.final

Isso funciona tambm no meio de da palavra, ou mesmo no comeo:

# cat /home/{rbp,queiroz,rms,torvalds}/.signature

# diff {/home/rbp/.,/etc/}bashrc

E, finalmente (e um pouco mais confuso), pode haver chaves dentro de

chaves:

# less /usr/doc/{emacs-20.7/{NEWS,README},ed-0.2/NEWS,gnupg-
1.0.1/{README,COPYING}}

Que seria expandido para:

# less /usr/doc/emacs-20.7/NEWS /usr/doc/emacs-20.7/README /usr/doc/ed-


0.2/NEWS /usr/doc/gnupg-1.0.1/README /usr/doc/gnupg-1.0.1/COPYING

32
---------------------------------------------------------------------

__

********************************************************************

Mais dicas de Bash

---------------------------------------------------------------------

Colaborao: Rodrigo Bernardo Pimentel <rbp@sp.conectiva.com.br>

Muitas vezes queremos utilizar a sada de um comando como entrada

para outro, mas o primeiro espera um arquivo. Por exemplo, podemos querer

fazer um diff da sada de dois comandos. Digamos que temos dois


diretrios

supostamente idnticos (talvez um seja o backup do outro), mas queremos

checar. H vrias formas de se fazer isso, mas uma seria

# ls -l /home/rbp > /tmp/arq1

# ls -l /home/rbp-bak > /tmp/arq2

# diff /tmp/arq1 /tmp/arq2

(ou, para quem se lembra de uma dica anterior)

# diff /tmp/arq{1,2}

# rm /tmp/arq1 /tmp/arq2

Como todo bom usurio de Unix, a preguia nos impele a usar um

nmero mnimo de comandos (ou seja, menos digitao). Existe um modo de


se

criarem "arquivos virtuais" temporrios no bash. A expresso

<(comando)

executa "comando" e fornece um "file descriptor" com sua sada. Em

33
termos prticos, como se um arquivo temporrio fosse criado com a sada
do

comando e apagado depois de usado. Assim, o exemplo acima poderia ficar

como:

# diff <(ls -l /home/rbp) &lt;(ls -l /home/rbp-bak)

---------------------------------------------------------------

As mensagens da lista Dicas-L so veiculadas diariamente

para 9338 assinantes.

Para sair ou assinar a lista Dicas-L, consulte o documento que

se encontra em http://www.Dicas-l.com.br/FAQ.html.

********************************************************************

Pipes em bash

---------------------------------------------------------------------

Colaborao: Rodrigo Bernardo Pimentel <rbp@sp.conectiva.com.br>

As ferramentas de Unix surgiram com o conceito de "seja simples,

faa bem o que tem a fazer, saiba conversar com outras aplicaes". Bem,

parte dessa ltima premissa realizada com o uso de "pipes".

"pipes" (utilizados com o caracter '|') conectam a sada de uma

programa entrada de outro. Ou seja, funcionam como um "tubo" ou "cano"

mesmo.

Por exemplo: o comando "cat" joga na sada padro o contedo de um

arquivo. O comando "cut" mostra s uma parte especificada do texto que


lhe

passado como entrada padro. Assim, para conseguirmos uma lista de


usurios

34
do sistema, podemos fazer

[rbp@muppets ~]$ cat /etc/passwd | cut -d : -f 1

O comando "cat /etc/passwd" jogaria na tela todas as linhas do

arquivo /etc/passwd.

O comando "cut -d : -f 1" divide cada linha da entrada utilizando o

":" (dois pontos) como separador e pega o primeiro campo (com "-d :" e "-
f

1" respectivamente). Assim, em uma linha do /etc/passwd normal, os campos

seriam

rbp:x:500:500:Rodrigo Bernardo Pimentel:/home/rbp:/bin/bash

1 2 3 4 5 6 7

Ou seja, o primeiro campo o login.

Assim, o pipe usa a sada do primeiro comando para fornecer uma

entrada para o segundo, e o resultado o campo de login de cada linha do

/etc/passwd.

Outro exemplo, envolvendo mais pipes (ou seja, voc pode usar

mais de um pipe de uma vez):

[rbp@muppets ~]$ w | grep '^rbp ' | wc -l

[rbp@muppets ~]$

O comando "w" lista os usurios conectados na mquina. O comando

"grep '^rbp '" pega essa lista e mostra s as que comeem com "rbp "
(para

35
no pegarmos substrings como 'rbpsdgf'). Finalmente, o comando "wc -l"
conta

essas linhas. Assim, sei que, no momento, o usurio rbp tem 7 shells
abertos

na mquina (dia fraco... ;) .

---------------------------------------------------------------

As mensagens da lista Dicas-L so veiculadas diariamente

para 10234 assinantes.

********************************************************************

Programao Shell: A varivel _$

---------------------------------------------------------------------

Colaborao: Aurelio Marinho Jargas [aurelio@conectiva.com.br]

A varivel $_ guarda o ltimo parmetro

do comando anterior (geralmente um nome de arquivo)

prompt$ ls -l /etc/passwd

-rw-r--r-- 1 root root 6816 Jul 25 18:05 /etc/passwd

prompt$ echo $_

/etc/passwd

Ento ao aplicar vrios comandos num mesmo arquivo/diretrio:

prompt$ mount /mnt/cdrom

prompt$ umount $_

ou:

prompt$ vi /home/usuario/documentos/pessoais/julho/arquivo.txt

prompt$ ispell $_

prompt$ cp $_ /tmp

36
prompt$ ls $_/arquivo.txt

prompt$ echo $_

Nessa ltima seqncia de comandos o $_ que referenciamos tinha

os valores:

/home/usuario/documentos/pessoais/julho/arquivo.txt

/home/usuario/documentos/pessoais/julho/arquivo.txt

/tmp

/tmp/arquivo.txt

---------------------------------------------------------------

As mensagens da lista Dicas-L so veiculadas diariamente

para 9228 assinantes.

Para sair ou assinar a lista Dicas-L, consulte o documento que

se encontra em http://www.Dicas-l.com.br/FAQ.html.

********************************************************************

"case" em bash

---------------------------------------------------------------------

Colaborao: Rodrigo Bernardo Pimentel <rbp@sp.conectiva.com.br>

Quando se quer testar uma srie de condies, pode-se usar "if",

"elif" e "else", como j veiculado em outra dica. Porm, quando o teste

para um mesmo valor de varivel, a repetio pode-se tornar


inconveniente:

if [ "$REPOSTA" = "sim" ]; then

faz_coisas

37
elif [ "$RESPOSTA" = "nao"]; then

exit 0

elif [ "$RESPOSTA" = "depende_do_tempo" ]; then

faz_coisas_se_o_tempo_permitir

elif [ "$RESPOSTA" = "depende_do_humor" ]; then

faz_coisas_se_o_humor_permitir

...

E por a vai. As checagens so necessrias, afinal de contas

precisamos reagir diferentemente a cada uma das condies. Mas a


repetio

de 'elif [ "$RESPOSTA" = "..."]; then' torna-se cansativa.

Para esse tipo de problema, existe uma construo em bash chamada

"case" (existe tambm em outras linguagens como C). Sua estrutura :

case "$variavel"in

primeira_opcao)

comando1

comando2

...

;;

segunda_opcao)

outro_comando

ainda_outro

...

38
;;

...

*)

ultimo_comando

esac

Isso testa "$variavel" com cada uma das opes. Quando achar uma

adequada, executa os comandos at ";;" e sai do loop (no tenta outras

opes mais adiante). O nosso exemplo com "if" acima ficaria:

case "$RESPOSTA" in

sim)

faz_coisas

;;

nao)

exit 0

;;

depende_do_tempo)

faz_coisas_se_o_tempo_permitir

;;

depende_do_humor)

faz_coisas_se_o_humor_permitir

;;

*)

echo 'NDA!'

39
esac

Notem que "*" um "catchall", ou seja, se o valor da varivel

"RESPOSTA" no for "sim", "nao", "depende_do_tempo" ou


"depende_do_humor",

sero executandos os comandos aps o "*)" (que no precisa terminar em

";;").

Normalmente, os scripts de inicializao do sistema (em /etc/init.d ou

/etc/rc.d/init.d, dependendo da distribuio) necessitam de um parmetro,


um

dentre "start", "stop", "status", "restart" ou "reload" (s vezes mais).


A

situao ideal para se usar um "case", certo? O pessoal das distribuies

tambm acha. Portante, se voc quiser exemplos de "case", procure nos

scripts de inicializao da sua distribuio!

********************************************************************

chmod 773

Juliano Pillati wrote:

> Simples, tire a permisso de write do usurio!

> Subject: [ano2001] bash_history

> > Gostaria de saber se h algum jeito de impedir o usurio de deletar


ou

> > modificar com algum editor o .bash_history. Se houver alguma dica
para

> > essa parte de administracao dos logs,

********************************************************************

40
********************************************************************

chmod -w .bash_history

ou

chmod 700 .bash_history

> Gostaria de saber se h algum jeito de impedir o usurio de deletar ou

> modificar com algum editor o .bash_history. Se houver alguma dica para

> essa parte de administracao dos logs,

********************************************************************

> Quando estou no console e aperto a seta para cima, o linux me mostra os

> ultimos comandos, alguem sabe como faco para apagar da memoria estes

> comandos???

No o Linux que faz isso, mas o bash (interpretador de comandos usado


no

seu Linux). Nas distribuies Red Hat e Conectiva (e acredito que no


Mandrake

e Tech Linux tb) no diretrio pessoal de cada usurio (/home/usurio)


chamado

.bash_history que contm exatamente os comandos que vc deu.

Basta apagar o contedo do arquivo e pronto. O modo mais fcil de vc


fazer

isso (sem entrar no mrito do perl, awk, sed, reza braba...) :

$ rm .bash_history

$ touch bash_history

********************************************************************

Linux: Historico de Comandos

41
Colaboracao: Jorge Kinoshita [jkinoshi@pcs.usp.br]

Para se recuperar um comando antigo pode-se

usar o ^R (Control R) dentro do bash.

Basta digitar ^R e comecar a teclar uma string

que faca parte do comando que se quer

recuperar. Exemplo:

Estou no bash, digitei ^R e agora estou digitando 'ca':

(reverse-i-search)`ca': telnet carcara 23

Se o comando que aparece eh o que se procura

basta teclar enter; e seguindo o exemplo, e

dado o comando telnet.

Caso contrario, existem duas possibilidades:

continuar digitando o comando para aprimorar a

busca ou digitar outro ^R para pegar um comando

mais antigo ainda dentro do historico

********************************************************************

Linux: Historico de Comandos

---------------------------------------------------------------------

Colaboracao: Ticiano Brandao Benetti [ticiano@consultoria.net]

O Ticiano mandou uma dica interessante sobre como

manter o historico de comandos separadamente, um

para cada janela aberta. A seguir a mensagem

enviada:

42
Por falar em arquivos de history, eu

tive uma ideia essa semana que acabou ficando

muito interessante e talvez fosse uma boa mandar

pra lista. Eu estava num servidor e com varias

shell's abertas. Em uma eu estava dando

manutencao em disco, em outra mexendo com

postcript e mais uma com outra atividade

administrativa. Todas eram repetitivas, o que

tornava o uso do history muito frequente e eficaz.

Entretanto cada shell usava comandos de uma

natureza e os comandos de uma apareciam no history

da outra, afinal todas usavam o mesmo arquivo. No

meu .profile havia a definicao de ENV para o

script de inicializacao das shells (bash, korn e

posix). Coloquei neste arquivo o seguinte:

HISTFILE=~/.histories/history-$$

Nao esquecendo de criar antes o diretorio:

mkdir ~/.histories

E colocando na minha crontab para todo dia fazer:

find ~/.histories -atime 7

para matar os arquivos "histories" com mais de uma

semana de idade.

Assim, cada shell ficou com um history

independente, cujo nome do arquivo continha o PID

43
da shell. Isso facilitou em muito o meu trabalho

pois em cada history apareciam apenas os comandos

pertinentes.

********************************************************************

16-8-01 - Boletim ViaLinuxis em sintonia com o Frum

~/.bashrc

Editorial

Aqui vai o meu ~/.bashrc . No requer muitos comentrios porque grande


parte j est comentada em boletins anteriores.

-------------------------------------------------------------------------
-------

# .bashrc

export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'

# User specific aliases and functions

export PATH=$PATH

PATH="$PATH:./"

export LS_COLORS="di=47"

alias rm='rm -i '

alias cp='cp -i -p '

alias mcopy='mcopy -m '

alias ls='ls -F '

alias d='ls -ld */'

alias xz='tar -zxvf ' # retira do tar

alias tz='tar -ztvf ' # ve o que estah no .tar.gz

alias cz='tar -zcvf ' # cz t.tar.gz teste

alias ssh='xhost carcara; ssh' # para a minha maquina

#DISPLAY=minha.maquina:0.0; export DISPLAY # para o carcara

# alias cz='tar zcvf ' # ex: cz x.tar.gz x/ comprime e gzipeia.

# Source global definitions

if [ -f /etc/bashrc ]; then

44
. /etc/bashrc

fi

alias xdvi='xdvi -s 5 -geometry 1244x556+-134+0 '

# Source global definitions

#if (test -z $DISPLAY); then

# startx

#fi

#xhost carcara

umask 0

********************************************************************

> Estou com alguns problemas estranhos aqui, derrepente sem mais nem
menos o

> servidor passou a apresentar uma mensagens estranhas, tipo:

>

> Segmentation Fault

> bash: xmalloc: cannot allocate 2664 bytes (0 bytes allocated)

O cdigo do bash usa esta funo xmalloc que termina o bash se por acaso

faltar memria, note que ele no consegue alocar um bloco de pouco mais
de

2KB! execute free neste momento e confirme que voc est com toda a
memria

utilizada: compre mais memria ou crie mais rea de swap: man mkswap.

********************************************************************

De: Piter Punk <piterpk@terra.com.br>

Para: "Acsys - Depto. de Instalao" <acsyscps@terra.com.br>

Cc: jbalves@tvclube.com.br, LinuxBR ListaLinux <linux-


br@bazar.conectiva.com.br>

Assunto: Re: (linux-br) RES: (linux-br) script no logon

Data: 20 Jun 2002 11:40:29 -0300

45
Acsys - Depto. de Instalao wrote:

eu quero que qdo o usuario efetue seu login rode un script para setar

variaveis para acesso a um sistema..

como poo fazer?

.bash_profile do usurio

/etc/profile do sistema

Falous,

Piter PUNK

********************************************************************

De: Patrich Pizzolo <patrich@costao.com.br>

Para: Acsys - Depto. de Instalao <acsyscps@terra.com.br>

Cc: Linux <linux-br@bazar.conectiva.com.br>

Assunto: Re: (linux-br) RES: (linux-br) script no logon

Data: 20 Jun 2002 13:38:59 -0300

Em Qui, 2002-06-20 s 10:33, Acsys - Depto. de Instalao escreveu:

> eu quero que qdo o usuario efetue seu login rode un script para setar

> variaveis para acesso a um sistema..

>

> como poo fazer?

>

Caro amigo,

Como j haviam lhe falado anteriormente vc tem duas opes para setar

variveis de sistemas e executar comandos ao efetuar logon no linux.

A primeira opo para efetuar comandos quando ""qualquer"" usurio entra

no sistema no /etc/bashrc

A segunda opo para efetuar comandos quando o "joaozinho" entra no

46
sistema no /home/joazinho/.bashrc

A primeira opo para definir variveis quando ""qualquer"" usurio

entra no sistema no /etc/profile

A segunda opo para definir variveis quando o "joaozinho" entra no

sistema no /home/joazinho/.bash_profile

E mais, no diretrio /etc/skell/ caso sejam scripts padro que devam ser

executados pelos novos usurios que sero cadastrados vc pode coloca -

los dentro deste diretrio pois o mesmo o "esqueleto" dos homes para

usurios, portanto se vc colocar qualquer coisa dentro deste diretrio

ele ser copiado apenas para todos os novos usurios, por exemplo se vc

alterar o /etc/skell/.bashrc deste diretrio e copiar o arquivo logo.jpg

quando entrar em sua empresa o simo e vc cadastr - lo no linux ele

ter em seu home o .bashrc alterado e o arquivo logo.jpg e tudo o mais

que estiver neste diretrio.

> Acsys Consultoria e Sistemas LTDA. Fernando Novaes - Administrao de


Redes

> E-mail: fernando@acsys.com.br Site: www.acsys.com.br

********************************************************************

De: Jeimerson C Chaves <jeimerson@voetur.com.br>

Para: linux-br@bazar.conectiva.com.br

Assunto: Re: (linux-br) Alias de comando

Data: 15 Oct 2002 11:34:20 -0300

At 09:51 15/10/2002 -0300, escreveu:

Pessoal como eu fao pra criar um alias de comando definitivo.

Em vez de digitar o comando inteiro toda vez, eu crio uma alias pra

Amigo,

47
Dentro do /etc/ existe um arquivo chamado bashrc

inclua a seguinte linha.

Ex: alias rm="rm -f"

ou seja sempre que vc digitr rm o arquivo sera removido sem pedir


confirmacao.

para fazer valer as mudancas basta digitar bash

TE+

********************************************************************

De: Thiago Madeira de Lima <junglelst@webforce.com.br>

Para: 'NEO' <neo@pa-online.com.br>, linux-br@bazar.conectiva.com.br

Assunto: RE: (linux-br) Alias de comando

Data: 15 Oct 2002 11:40:35 -0300

NEO,

Coloque o alias no seu .bash_profile no seu home. Se deslogue e

logue denovo.

echo "alias ls='ls -laF' " >> ~/.bash_profile

thiago madeira de lima.

-----Original Message-----

Pessoal como eu fao pra criar um alias de comando definitivo. Em vez de

48
digitar o comando inteiro toda vez, eu crio uma alias pra "encurtar" ele

mas nao consigo deixa-lo definitivo. Tenho que fazer dentro do bash?

********************************************************************

De: Arnaldo Carvalho de Melo <acme@conectiva.com.br>

Para: Rafael Diniz <rafael2k@terra.com.br>

Cc: linux-br <linux-br@bazar.conectiva.com.br>

Assunto: Re: (linux-br) "desligar" log de comandos para o .bash_history

Data: 16 Nov 2002 09:07:46 -0200

Em Sat, Nov 16, 2002 at 08:52:18AM +0000, Rafael Diniz escreveu:

> No estou conseguindo desligar no bash o command history.

> Tentei dar

> shopt -u cmdhist

> Mas num deu.

> Algum sabe fazer isso?

As Organizaes ACME de Pesquisa em Man Page informam:

HISTFILE

The name of the file in which command history is saved (see


HIS-

TORY below). The default value is ~/.bash_history. If


unset,

the command history is not saved when an interactive


shell

exits.

Vamos testar...

Deixe ele como:

HISTFILE=

49
em seu .bash_profile

e teste.

- Arnaldo

********************************************************************

De: dicas-l-owner@unicamp.br

Assunto: [Dicas-L] Correo Automtica de Comandos em Bash

Data: 30 Oct 2002 00:13:36 -0300

--------------------------------------------------------------------

Endereo: http://www.Dicas-l.com.br/dicas-l/20021030.shtml

--------------------------------------------------------------------

Read in English

Uma Maneira Divertida de Aprender Ingls

http://novateceditora.com.br/livros/readinenglish/

--------------------------------------------------------------------

Correo Automtica de Comandos em Bash

=======================================

Colaborao: roni@alfanetworks.com.br

Se voce errar um comando, utilizando as teclas Ctrl-t aps o comando,

o Bash tenta reescrever o comando corretamente. Por exemplo:

Voce quer criar um diretorio e digita:

# mkdri

O comando correto seria mkdir e nao mkdri. Em vez de utilizar o backspace

e corrigir o comando, simplesmente tecle Ctrl-t e o Bash ir trocar

as duas ultimas letras do comando. Na realidade essa funcao do Bash

50
foi desenvolvida com base em um estudo que observou que na maioria dos

comandos digitados errados, o erro a troca das ultimas duas letras.

********************************************************************

De: dicas-l-owner@unicamp.br

Assunto: [Dicas-L] Correo automtica do **cd** na //bash//:

Data: 22 Nov 2002 00:16:16 -0200

--------------------------------------------------------------------

Endereo: http://www.Dicas-l.com.br/dicas-l/20021122.shtml

--------------------------------------------------------------------

Read in English

Uma Maneira Divertida de Aprender Ingls

http://novateceditora.com.br/livros/readinenglish/

--------------------------------------------------------------------

- Correo automtica do cd na bash:

Colaborao: Felipe K <stdfk@terra.com.br>

A bash tambm tem uma outra opo muito interessante, cdspell.

Para habilitar a opo, basta usar o shopt: shopt -s cdspell com

a shell em modo interativo. Com esta opo, qualquer erro de digitao,

como troca de caracteres, falta de caractere ou caractere adicional,

ser arrumado pela shell e o comando vai ser executado normalmente.

/$ cd homr

bash: cd: homr: No such file or directory

51
/$ shopt -s cdspell

/$ cd homr

home

/home$ cd ../hom

../home

/home$

Segundo a man page (man bash)

shopt [-pqsu] [-o] [optname ...]

Toggle the values of variables controlling optional shell


behavior. With no options,

or with the -p option, a list of all settable options


is displayed, with an indica-

tion of whether or not each is set. The -p option causes


output to be displayed in a

form that may be reused as input. Other options have the


following meanings:

-s Enable (set) each optname.

-u Disable (unset) each optname.

-q Suppresses normal output (quiet mode); the return


status indicates whether the

optname is set or unset. If multiple optname


arguments are given with -q, the

return status is zero if all optnames are enabled;


non-zero otherwise.

-o Restricts the values of optname to be those


defined for the -o option to the

set builtin.

e ainda

52
cdspell If set, minor errors in the spelling of a
directory component in a cd command

will be corrected. The errors checked for are


transposed characters, a miss-

ing character, and one character too many. If a


correction is found, the

corrected file name is printed, and the


command proceeds. This option is

only used by interactive shells.

********************************************************************

De: Cludio Max <cldmxm@yahoo.com.br>

Para: linux <linux-br@bazar.conectiva.com.br>

Assunto: (linux-br) dica: tab j mostra (sem apitar) as alternativas

Data: 03 Nov 2002 13:22:15 -0200

Para os neurticos de planto, para que o tab, no bash, no apite e

j mostre as alternativas (ambguos) basta colocar em /etc/inputrc

ou ~/.inputrc a linha

set show-all-if-ambiguous on

e reabrir a tela de terminal

Abrao

Cludio

********************************************************************

De: Thiago Macieira <thiagom@mail.com>

Para: Anderson Vieira de Souza <listasds@nextwave.com.br>, linux-br


<linux-br@bazar.conectiva.com.br>

Assunto: Re: (linux-br) Mudar diretrio atravs de script bash...

Data: 15 Dec 2002 20:17:15 +0100

53
Anderson Vieira de Souza wrote:

>Al Linuxers,

>

> Estou tendo um pequeno problema para mudar de diretrio atravs

>de um script bash, pois ao termino do script eu caio de volta no

>diretrio de onde o script foi executado. Eu j vi a soluo pra isso

>aqui mesmo na lista, mas procurei no histrico e no encontrei.

>

>Certo de sua colaborao, desde j agradeo.

Execute o script no mesmo processo (shell), ao invs de chamar um


processo

novo.

Ou seja, ao invs de executar:

meuscript.sh

execute:

source meuscript.sh

--

********************************************************************

De: Thiago Macieira <thiagom@mail.com>

Para: Piter Punk <piterpk@terra.com.br>, Edson Ahlert


<edsonahlert@certel.com.br>

Cc: linux-br <linux-br@bazar.conectiva.com.br>

Assunto: Re: (linux-br) Bash preencher comando

Data: 07 Feb 2003 18:14:17 +0100

Piter Punk wrote:

>Edson Ahlert wrote:

>> Ol!!!

>>

54
>> H alguma forma de eu escrever o incio de uma linha de comando no
prompt

>> do linux e este procurar o ltimo comando usado mais prximo (tipo
dos).

>

>ctrl+R

>comece a digitar o comando que voc quer. Ele ir mostrar o ltimo

>comando que voc usou contendo a string que digitou.

>

>Se apertar ctrl+R de novo, ele ir para o penltimo comando

Se voc tiver certeza de que o incio do comando que digitou corresponde


ao

comando que o shell vai encontrar, voc pode simplesmente usar ! no


comeo do

comando.

Por exemplo, suponha que voc tenha rodado o emacs e que queira rod-lo
de

novo (e que no tenha rodado mais nada que comece com e), voc digitaria:

$ !e

Ou para encontrar com relao a qualquer parte do comando, no


necessariamente

o comeo:

$ !?parte

********************************************************************

De: Marco Aurelio Rovari <marco.rovari@intersix.com.br>

Para: 'Edson Ahlert' <edsonahlert@certel.com.br>, 'linux-br' <linux-


br@bazar.conectiva.com.br>

Assunto: RE: (linux-br) Bash preencher comando

Data: 07 Feb 2003 11:55:12 -0200

55
Tente colocar o ! em seguida pelo menos as duas primeiras letras do
comando,

exemplo: se vc tiver dado um vi em algum path...vi

/home/usuario/teste/teste1/arquivo... e por acaso vc quer executar


novamante

esse comando sem precisar ficar procurarando na "seta para cima/baixo"

etc...

# !vi ENTER

assim ele vai repetir o ultimo comando vi que foi dado...

********************************************************************

De: Eckhardt, Rodolpho H. O. <reckhardt@mandic.com.br>

Para: cldmxm@yahoo.com.br

Cc: linux-br@bazar.conectiva.com.br

Assunto: Re: (linux-br) /etc/profile x /etc/bash.bashrc x ~/.bashrc

Data: 20 Feb 2003 11:13:32 -0300

Its believed that the following words were said by Cludio Max:

> /etc/profile

> /etc/bash.bashrc

> ~/.bashrc

Ao realizar o login o bash l os arquivos ~/.bashrc e /etc/bash.bashrc


(em algumas dists

/etc/bashrc), que configuram o funcionamento interno do bash (essa a


inteno

original), a diferena entre eles que o ~/.bashrc configurvel pelo


usurio, para

realizar modificaes pessoais. J o /etc/... global, o mesmo para


todos os usurios,

deve incluir as configuraes padro para os usurios. feito primeiro a


leitura do

arquivo global, depois a do usurio.

56
O /etc/profile deve configurar globalmente variaveis como PATH e outras
que vc quiser

exportar. Originalmente no deveria configurar o bash ou outros programas


assim. Existe

tambm o ~/.bash_profile que a verso pessoal do /etc/profile, a regra


de leitura a

mesma do bashrc.

> Outra "cosita": qual o arquivo que executado ao ser dado

> o logoff? Eu gostaria de colocar um "clear" ali para limpar a

> tela ao sair da sesso.

mv /etc/issue /etc/issue.old

echo clear > /etc/issue

cat /etc/issue.old >> /etc/issue

> Cludio

Rodolpho

********************************************************************

De: Eduardo Rocha <erocha@actha.com.br>

Para: Cludio Max <cldmxm@yahoo.com.br>, linux <linux-


br@bazar.conectiva.com.br>

Assunto: Re: (linux-br) /etc/profile x /etc/bash.bashrc x ~/.bashrc

Data: 20 Feb 2003 19:37:47 -0300

/etc/profile executado em um shell login, ou seja um shell que


iniciado aps um login ou quando vc executa o

bash com o parametro --login.

/etc/bash.bashrc no existe (no que eu saiba) mas exite /etc/bashrc,


que sempre executado quando o bash

carregado.

~/.bashrc bashrc do usuario corrente.

57
Vide seo INVOCATION do manual do bash.

Eduardo Rocha Rodrigues

> Algum iluminado poderia me dizer qual diferena entre

>

> /etc/profile

> /etc/bash.bashrc

> ~/.bashrc

********************************************************************

De: Ricardo Guedes <baby@babylinux.dyndns.org>

Para: Marco Antnio Brugiolo Gonalves <Marco@dees.ufmg.br>, linux-


br@bazar2.conectiva.com.br

Assunto: Re: (linux-br) teste condicional

Data: 10 Jun 2003 22:16:59 -0400

USUARIO=`whoami`;

if [ $USUARIO == "root" ]; then

echo "Logado com: $USUARIO";

fi

Dvidas:

1o. man bash (Tem tudo l)

2o. Olhe no FAQ

3o. Olhe no Google (bash if condition) tambm em 3 minutinhos:

O quarto resultado esclarecia a tua dvida (Muita coisa mesmo...)

Ricardo Guedes

********************************************************************

Date: Tue, 16 Dec 2003 21:35:12 -0200

58
From: Massahide <massahide@ig.com.br>

Subject: Re: (linux-br)Comandos nao funcionan !!!

To: linux-br@bazar2.conectiva.com.br

Message-ID: <20031216213512.4655c159.massahide@ig.com.br>

Content-Type: text/plain; charset="iso-8859-1"

Ele no deve estar configurando corretamente as variveis de

ambiente (j verificou isto??), especialmente a varivel PATH que

indica os diretrios que esto os executveis. Tente executar o

script .bash_profile ("/bin/sh .bash_profile") e verifique novamente

o estado!!! (caso no exista execute o script /etc/profile, deve

funcionar)

Em Ter, 16 de dezembro de 2003 s 10:18 BRST

"IBBNET" <ibbnet@terra.com.br> escreveu:

> Estou com um pequeno problema desde a ultima sexta feira aqui em minha

> empresa, tenho um servidor RedHat 9.0 tudo funcionando perfeitamente,

> s que agora quando eu me conecto via SSH no consigo executar comando

> nenhum, mesmo estando como root, tipo assim:

>

> Eu abro um ssh na maquina remotamente, se eu precisar executar algum

> comando tipo: route, modprobe etc..e tal, ele no executa e d uma

> mensagem #bash: route: command not found

> Mas se eu executar no proprio servidor, ele executa normalmente.

********************************************************************

De: Andre Taurines

Para: linux-br@bazar2.conectiva.com.br

Assunto: Re: (linux-br)truque bash

Data: Fri, 27 Feb 2004 22:24:22 -0300

59
Buenas, depois de enviar o mail pra lista

fui verificar o "man history" e descobri

que existe toda uma sintaxe por tras desse comando...

Por exemplo, na sequencia de comandos

> cp fig_1.jpg fig_2.jpg

> gimp !^

o ultimo comando serah entendido como "gimp fig_1.jpg"; se

tivesse colocado "gimp !$" seria entendido como

"gimp fig_2.jpg". Para complicar mais, em

> cat arq_a.txt arq_b.txt arq_c.txt > arq_total.txt

> emacs !!:2

o ultimo comando seria equivalente a "emacs arq_2.txt";

o !! se refere a "ultimo comando no historico" e o 2

a posicao da palavra que se quer reproduzir (o comando

tem posicao 0 por definicao).

Existem comandos mais elaborados (ateh scripts inteiros

com a sintaxe do history...),

mas acho que o !^ e o !$ sao os de mais utilidade mesmo.

Fica a dica.

Valeu, Andre.

********************************************************************

60
De: Carlos <h4sh@globo.com>

Para: linux-br@bazar2.conectiva.com.br

Assunto: Re: (linux-br)Qual comando que equivale ao errorlevel do DOS.

Data: Thu, 18 Mar 2004 18:30:25 -0300

O comando echo $? retorna isso.

Um valor = 0 significa que o comando anterior foi executado com sucesso,

qualquer outro valor significa erro.

On Thursday 18 March 2004 16:15, Davinio Ross wrote:

> Como posso testar se um comando do linux retornou um erro, semelhante


ao

> errorlevel do DOS.

>

> Tenho um script com o comando mount /mnt/cdrom e gostaria de tomar uma

> atitude tipo enviar um e-mail se o disco no estiver na unidade.

********************************************************************

De: Tiago Cruz <tiagocruz@linuxdicas.com.br>

Para: Jorge Godoy <godoy@metalab.unc.edu>

Cc: Linux-BR <linux-br@bazar2.conectiva.com.br>

Assunto: Re: (linux-br)Criar atalho no desktop de todo mundo (SOLUCAO)

Data: Tue, 23 Mar 2004 11:40:57 -0300

Em Ter, 2004-03-23 s 11:20, Jorge Godoy escreveu:

> Sua receita para a lista ficaria mais completa com o script por
inteiro,

> inclusive com a maneira usada para obter os usurios. ;-)

Ento Godoy,

61
Usei o seu script:

===================

# by Gogoy

for i in `ls /home`

do

cp /etc/skel/Desktop/* $i/Desktop/

done

===================

Apenas alterei a linha do 'cp' ficando assim:

===================

# by Gogoy

# Tiago

for i in `ls /home`

do

cp /etc/skel/Desktop/* /home/$i/Desktop/

done

===================

"S sei que foi assim", heheheh

E criei manualmente o ~/Desktop de quem ainda no tinha...

--

Abraos,

Tiago Cruz

Org. King de Contab. S/C Ltda.

62
Linux User # 282636

http://www.linuxrapido.linuxdicas.com.br

Mandrake Linux i18n Team

********************************************************************

De: Jorge Godoy <godoy@metalab.unc.edu>

Para: Tiago Cruz <tiagocruz@linuxdicas.com.br>

Cc: Linux-BR <linux-br@bazar2.conectiva.com.br>

Assunto: Re: (linux-br)Criar atalho no desktop de todo mundo (SOLUCAO)

Data: Tue, 23 Mar 2004 11:39:39 -0300

-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA1

On Tuesday 23 March 2004 11:40, Tiago Cruz wrote:

> Apenas alterei a linha do 'cp' ficando assim:

>

> ===================

> # by Gogoy

> # Tiago

> for i in `ls /home`

> do

> cp /etc/skel/Desktop/* /home/$i/Desktop/

> done

> ===================

>

> "S sei que foi assim", heheheh

>

> E criei manualmente o ~/Desktop de quem ainda no tinha...

Ento, para automatizar mais ainda e criar o ~/Desktop, voc poderia


fazer:

63
================

#!/bin/bash

for i in `ls /home`

do

mkdir -p /home/$i/Desktop

cp /etc/skel/Desktop/* /home/$i/Desktop

done

================

O segredo o '-p':

[godoy@strongwill ~/desenvolvimento/Java]$ mkdir ~/Desktop

mkdir: no possvel criar o diretrio `/home/godoy/Desktop': Arquivo


existe

[godoy@strongwill ~/desenvolvimento/Java]$ mkdir ~/Desktop -p

[godoy@strongwill ~/desenvolvimento/Java]$

Sds,

- --

Godoy. <godoy@metalab.unc.edu>

-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1.2.4 (GNU/Linux)

********************************************************************

De: Anderson.M. O <andersonmsp@click21.com.br>

Para: linux-br@bazar2.conectiva.com.br

Assunto: Re[2]: (linux-br)Criar atalho no desktop de todo mundo (=?ISO-


8859-1?Q?Solu=E7=E3o?=)

Data: 24 Mar 2004 4:25:28 -0300

64
=================

>De:Jorge Godoy <godoy@metalab.unc.edu>

>Para:Tiago Cruz <tiagocruz@linuxdicas.com.br>

>Assunto:Re: (linux-br)Criar atalho no desktop de todo mundo (Soluo)

>

>-----BEGIN PGP SIGNED MESSAGE-----

>Hash: SHA1

>

>On Monday 22 March 2004 16:15, Tiago Cruz wrote:

>> S precisei alterar aqui:

>>

>> cp /etc/skel/Desktop/* /home/$i/Desktop/

>

>Isso porqu voc no incluiu o "/home/" na hora

>de obter os dados de usurios.

>Se tivesse includo, nem isso seria necessrio.

>

>Sua receita para a lista ficaria mais completa

>com o script por inteiro,

>inclusive com a maneira usada para obter os

>usurios. ;-)

Ol todos

Bom cheguei a realizar esses teste dessa forma, so consegui fazendo da


seguinte forma..

Copiei o diretorio Desktop meu que tem bastante icones para /etc/skel
porque ele alegava que no existia.

O segundo passo foi exucutar as linhas citado acima mesmo assim no deu
certo.

65
Soluo.

Exucutei essa linha de comando.

cp -r /etc/skel/Desktop /home/$i/Desktop/

Criei um usuario novo para teste e verifiquei que dentro do home/Desktop


esto os icones que eu tenho.

Funcionou beleza.

Ate mais

Anderson

********************************************************************

De: Anderson Lizardo <andersonlizardo@yahoo.com.br>

Para: linux-br@bazar2.conectiva.com.br

Assunto: Re: (linux-br)Beep do bash sumiu

Data: Mon, 19 Apr 2004 17:27:40 -0400

On Monday 19 April 2004 12:40, Wendell Almeida Silva wrote:

> Salve a todos.

>

> Aps compilar o kernel 2.6.5 o beep do bash parou de funcionar. Todo o

> sistema estah funcionando bem (som, video, rede, etc).

Verifique se existe o arquivo /etc/inputrc e se l tem a seguinte linha:

set bell-style none

(no lugar de "none" pode haver "visible" tambm)

Caso ela exista, comente-a colocando um "#" no incio da linha. No se


esquea

de dar um logout e logar novamente para as modificaes terem efeito.

--

66
Anderson Lizardo

********************************************************************

De: Anderson Lizardo <andersonlizardo@yahoo.com.br>

Para: linux-br@bazar2.conectiva.com.br

Assunto: Re: (linux-br)Bash_History e LOGs

Data: Mon, 19 Apr 2004 17:30:15 -0400

On Monday 19 April 2004 13:45, Igor Hercowitz wrote:

> Onde ficam armazenados os comandos dados no console/terminal antes de


serem

> gravados no .bash_history do usuario?

>

> Ficam na memoria???

Creio que sim.

> tem como acessar???

Sim, digite "history".

Mais informaes: help history

--

Anderson Lizardo

********************************************************************

De: Thiago Macieira <thiago@macieira.info>

Para: linux-br@bazar2.conectiva.com.br

Assunto: Re: (linux-br) Atualizao Iptables

Data: Wed, 20 Oct 2004 22:31:43 -0300

-----BEGIN PGP SIGNED MESSAGE-----

Hash: SHA1

67
Rodrigo Tavares wrote:

>[root@faria root]# iptables

>bash: /usr/sbin/iptables: Arquivo ou diretrio no

>encontrado

>

>com a atualziacao agora o iptables esta no /sbin

Soluo 1:

reinicie o seu bash

Soluo 2:

rode "hash -r"

- --

Thiago Macieira - Registered Linux user #65028

********************************************************************

De: Dicas-L-Owner@unicamp.br

Assunto: [Dicas-L] Bash: Histrico de Comandos

Data: Wed, 16 Feb 2005 03:41:22 -0300

Bash: Histrico de Comandos

===========================

Para manter um histrico maior dos comandos emitidos usando a shell Bash,
edite

o arquivo ~/.bashrc e inclua as seguintes linhas:

export HISTSIZE=1000

68
export HISTFILESIZE=1000

Desta forma armazenamos 1000 comandos no arquivo .bash_history. A


varivel

HISTFILESIZE limita o nmero de linhas do arquivo .bash_history.

Para otimizar o histrico, podemos tambm especificar que comandos


duplicados no

sejam armazenados. Por exemplo, quando digitamos repetidamente ls para


ver o

contedo de um diretrio, criamos vrias entradas no arquivo de


histrico, o que

no necessrio. Isto se consegue com a especificao, tambm no arquivo


.bashrc,

da varivel HISTCONTROL:

export HISTCONTROL=ignoredups

--------------------------------------------------------------------

Colabore com a Dicas-L. Publique seu comentrio sobre esta mensagem

em http://www.Dicas-l.com.br/dicas-l/20050216.php

--------------------------------------------------------------------

As mensagens da lista Dicas-L so veiculadas diariamente

para 26566 assinantes.

Todas as mensagens da Dicas-L ficam armazenadas em

http://www.Dicas-l.com.br/dicas-l/

A redistribuio desta e outras mensagens da lista Dicas-L pode

ser feita livremente segundo a licena Creative Commons

http://creativecommons.org/licenses/by-nc-sa/2.0/br/deed.pt

69
--------------------------------------------------------------------

********************************************************************

De: hamacker <sirhamacker@vidy.com.br>

Para: Fabiano Carlos Heringer <fabianoheringer@veloxmail.com.br>

Cc: linux-br@bazar2.conectiva.com.br

Assunto: Re: (linux-br)Restringir usuario no bash ao seu $home

Data: Fri, 20 May 2005 18:08:28 -0300

Fabiano Carlos Heringer wrote:

> Galera, possivel impedir que o usario normal desca at o diretorio

> raiz ( / ) utilizando o bash? gostaria que fosse +- estilo ftp...onde

> ele nao poderia sair do seu $HOME ...mesmo ele digitando cd / ...pra

> descer at o raiz...ou seja, o diretorio raiz dele passaria a ser o seu

> proprio home

>

> possivel?

>

Usa chroot no .bash_profile.

Mas antes crie um arvore /bin no HOME dele e copie os comandos que t

desejas que ele possa usar.

inte+

********************************************************************

De: Thiago Macieira <thiago@macieira.info>

Para: linux-br@bazar2.conectiva.com.br

Assunto: Re: (linux-br)Restringir usuario no bash ao seu $home

Data: Fri, 20 May 2005 21:00:38 -0300

Fabiano Carlos Heringer wrote:

>Galera, possivel impedir que o usario normal desca at o diretorio

> raiz ( / ) utilizando o bash? gostaria que fosse +- estilo ftp...onde

> ele nao poderia sair do seu $HOME ...mesmo ele digitando cd / ...pra

> descer at o raiz...ou seja, o diretorio raiz dele passaria a ser o seu

70
> proprio home

>

> possivel?

Sim. Leia:

man bash

/RESTRICTED SHELL

--

Thiago Macieira - thiago (AT) macieira (DOT) info

PGP/GPG: 0x6EF45358; fingerprint:

E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358

5. Swa he ganhwearf t timbran, and hwonne he cm, l! Unix cw "Hello,

World". ?fre ?ghwilc ws gld and seo woruld ws fro.

********************************************************************

De: Andr Geraldo Vieira <andregerald@terra.com.br>

Para: linux-br@bazar2.conectiva.com.br, dr.beco <dr.beco@gmail.com>

Assunto: RE: (linux-br).bash_history

Data: Tue, 7 Jun 2005 09:02:44 -0300

2005/6/3, Dr.Beco <dr.beco@gmail.com>:

> Oi pessoal,

> Sabem o arquivo ~/.bash_history que armazena os comandos que a gente


digita...

>

> Como eu fao para aumentar o limite de tamanho dele de 1.000 linhas
para, por

> exemplo, 10.000 ?

71
Ol, desculpa a demora, ando meio enrolado com a escola...

Acho que j deve ter resolvido seu problema mas mesmo assim ai vai.

Acrescente no seu ~/.bash_profile

HISTCONTROL=ignoredups

#Varivel usada para ignorar comando duplicados.

HISTSIZE=1000

#Varivel que controla o nmero de comandos no histrico.

HISTFILESIZE=1000

#Varivel que controla o nmero de comandos mximo que ser gravado no


.bash_history

Qualquer duvida...

http://www.dicas-l.com.br/dicas-l/20000801.shtml

At mais...

Por que GNU/Linux?

"Somente pelo Prazer de ser

LIVRE..."

Andr Geraldo Vieira

Braslia DF

Usurio GNU/Linux N #335012

(Linux Counter,

http://counter.li.org.)

********************************************************************

72

Você também pode gostar