Nelmar´s Home Page
some little tips, great ideas ...

Some LINUX & UNIX tips:

How to make the Backspace has the correct funcionality on X-Window ?
Edit the file .Xmodmap in your $HOME:
# vi .Xmodmap:
and include:
keycode 22 = BackSpace


How to start more than one X session (Como iniciar mais de uma sessão X):
Para executar mais de um X11 você deverá adicionar alguns parâmetros, a partir da segunda sessão X, ao comando startx. Veja alguns exemplos: 

# startx -- :1 (para executar o segundo X11)
# startx -- :2 -quiet & (executa o terceiro X11, em segundo plano sem bloquear o console)
# startx -- :3 -bpp 24 (executa o quarto X11, com uma profundidade de cor de 24 bits)


Para exibir em um console virtual uma cópia de tudo o que for logado pelo seu syslog, acrescente a seguinte linha ao syslog.conf:

*.* /dev/tty8

Lembre-se de usar TABs, o syslog não gosta de espaços. 


Conexão entre 2 PCs rodando LINUX:

Para estabelecer comunicação serial (com cabos, ou mesmo com modems) entre dois computadores rodando Linux, é muito fácil fazer um link IP por esta conexão.

O comando slattach -p cslip -s 38400 ttyS1 inicia uma conexão cslip a 38400 bps pela porta ttyS1. Consulte o manual do cslip para maiores detalhes, mas lembre-se:
a conexão serial deve estar previamente estabelecida.


Gerenciando módulos: 
Os módulos são os "drivers" do sistema operacional Linux, são os que dão suporte a um determinado periférico ou a uma determinada funcionalidade. Eles podem ser carregados na memória apenas quando forem necessários e descarregados quando não estiverem mais sendo utilizados, isso dá ao sistema um grande ganho de performance. 

Para gerenciar módulos no sistema, existem os seguintes programas: 

insmod -> insere um módulo
modprobe -> detecta um módulo
lsmod -> lista os módulos ativos
rmmod -> remove um módulo
Veja alguns exemplos: 

# modprobe ppa
# modprobe ne2k-pci
# rmmod ppa
Para o carregamento automático de um módulo, utiliza-se o arquivo "/etc/conf.modules". E geralmente os programas de configuração do sistema tratam de configurar este arquivo de forma transparente para você. 

Quando você for recompilar o Kernel, durante a configuração, você poderá abilitar alguns recursos em forma de módulo, dando ao Kernel um gerenciamento mais otimizado do sistema.


Redirecionando ou canalizando a saída padrão: 
Quando você executa um programa no shell, ele envia sua saída de volta para sua tela. Mas você poderá fazer com que a saída do programa seja redirecionada para qualquer lugar, como por exemplo, para um arquivo. A saída poderá também ser redirecionada para um outro programa, porque muitos programas, além de enviar o resultado para a saída padrão do shell, também aceitam a entrada padrão do shell. 
Para isso você usará os seguintes operadores: 


> operador padrão de redireção da saída. Cria ou altera o arquivo.
< operador padrão de redireção da entrada.
>> operador padrão de redireção da saída. Cria ou adiciona no final do arquivo.
<< operador padrão de redireção da entrada. A entrada será interrompida quando for
encontrada uma linha que contenha o(s) caractere(s) especificado(s).
| operador de canalização.
Veja como funcionam: 


# ls > arq.txt -> a saída do comando ls foi redirecionada para o arquivo
texto arq.txt. O arquivo será criado, ou se já existir,
será substituído.
# ls >> arq.txt -> a saída do comando ls será adicionada no final do
arquivo arq.txt.
# rpm -qa | grep libc -> a saída do comando rpm foi canalizada para o comando
grep.
# wc < arq.txt -> o comando wc recebe o conteúdo do arquivo arq.txt.
# cat > arq.txt <<. -> a entrada de texto no arquivo será encerrada quando for
digitado somente um ponto em uma linha.
# cat arq.txt | grep palavra | more
# cat arq.txt | grep palavra > arq2.txt
Existe também, além da saída padrão, o erro padrão. Caso o seu programa retorne mensagens de erro, você poderá querer redirecionar estas mensagens para um arquivo. Então use o operador padrão de redireção da saída com o número 2 (o número 1 é atribuído à saída padrão e o número 2 ao erro padrão), como por exemplo: 


# gcc prog.c 2> erros.txt
# gcc prog.c 2>> erros.txt
Assim será redirecionada apenas as mensagens de erro. Se você quiser redirecionar a saída padrão e o erro padrão juntos, use um dos seguintes comandos: 


# gcc prog.c &> arq.txt

# gcc prog.c > arq.txt 2>&1
Se quiser criar arquivos separados para cada saída use então o comando abaixo: 


# gcc prog.c > saida.txt 2> erro.txt
Esta sintaxe funciona somente no shell Bash, que é o shell padrão no Conectiva Linux.


Alterar o CTRL+ALT+DEL: 
Quando pressionamos no console as teclas Ctrl+Alt+Delete ao mesmo tempo, é feita uma reinicialização segura do sistema, pois é executado o comando shutdown. 
Mas, se você quiser que esta combinação de teclas desligue a máquina em vez de reiniciá-la, basta editar o arquivo /etc/inittab. 
Procure pelas seguintes linhas contidas neste arquivo: 


#Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Repare no parâmetro -r (restart), é ele que faz o shutdown reiniciar a máquina. Se você trocar pelo parâmetro -h (halt), a máquina será apenas finalizada. 


Colocar uma senha no LILO: 
Quando o administrador do sistema esquece a senha do superusuário (root), ele é obrigado a usar um parâmetro na inicialização do LILO para conseguir entrar no sistema sem que o mesmo peça uma senha, e assim alterar a senha do root. 

Só que se a máquina também for usada por outros usuários, sistema ficará um tanto inseguro, pois os outros poderão ter acesso como root no sistema, usando apenas o procedimento acima. 

Neste caso é necessário que o administrador do sistema coloque uma senha no LILO, para que se alguém tentar digitar qualquer parâmetro no prompt do LILO, seja pedida uma senha para o parâmetro ser aceito. 

Então acrescente estas duas linhas no arquivo /etc/lilo.conf: 


password=suasenha
restricted
Veja um exemplo do arquivo: 


boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/vmlinuz-2.2.12-5cl
label=linux
password=suasenha
restricted
root=/dev/hda2
read-only
Após editar o arquivo, execute o seguinte comando do LILO para que a alteração seja gravada no setor do boot do HD: 


# /sbin/lilo
É importante também que o arquivo /etc/lilo.conf tenha permissão de leitura apenas para o superusuário! Senão os outros usuários descobrirão a sua senha. 

Para mais informações, consulte a página manual do lilo.conf (man lilo.conf).


Dica para iniciar os terminais com a tecla NumLock pressionada:
editar o arquivo /etc/rc.d/rc.sysinit e colocar no final as 
seguintes linhas:

INITTY=/dev/tty[1-8]
for tty in $INITTY;do
setleds -D +num < $tty
done

qualquer dúvida consultar o manual do <setleds> #man setleds


Dica para um prompt incrementado:

Acrescente no arquivo /root/.bash_profile :

PS1="[\033[4m\u@\033[0m\[\033[36m\]\h \[\033[32m\]\d \t 
\[\033[33m\]\W\[\033[39m\]\\$"
export PS1

assim, o prompt ficará assim:
root@hostname Tue Jun 1 20:02 /root#
e em cores :-)

mais informações em: http://ext2.org/99/05/newbieville/051399-newbieville2.shtml


Alterando o prompt do shell Bash:
Para alterar a string do prompt do shell (no Conectiva Linux usa-se normalmente o Bash) basta inserir no arquivo
/etc/bashrc uma seqüencia de caracteres especiais. Os caracteres são decodificados da seguinte maneira: 

\d A data atual no formato "Dia_da_semana Mês Dia".
\h Nome da máquina até o primeiro . (ponto).
\n Nova linha.
\s Nome do shell.
\t A hora atual no formato de 24 horas hh:mm:ss.
\u O nome do usuário atual.
\w Caminho completo do diretório de trabalho atual.
\W Nome do diretório atual.
\! O número do comando no histórico.
\# O número do comando na sessão atual do shell.
\$ Caractere que diferencia um usuário comum do 
super-usuário.
\nnn Caracter correspondente ao número octal nnn.
\\ Uma barra.
\[ Inicia uma seqüencia de caracteres que não serão
impressos na tela. Para poder incluir
uma seqüencia de controle do terminal.
\] Fim da seqüencia de caracteres que não serão
impressos.

Existem vários tipos de prompt, os mais usados são o primário e o secundário, definidos nas variáveis PS1 e PS2. O prompt primário é para a entrada de um comando e o secundário para quando for preciso complementar um comando. 

Como já dito, esta variável deve ser definida no arquivo /etc/bashrc (no /etc/profile também funciona). Se você quiser alterar o prompt de um usuário somente, copie o arquivo /etc/bashrc para /home/usuario/.bashrc e edite então este arquivo. 

Veja um exemplo de uma definição do prompt primário: 


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

Com isso o prompt seria algo como (o diretório é apenas um exemplo): 


[usuario@maquina /local]#

Você poderá também colorir o prompt, adicionando na seqüencia os códigos de cores ANSI. Estes códigos devem ser adicionados como caracteres que não serão impressos, ficando entre o \[ e o \]. Além disso os códigos devem começar com \033[ e terminar com um m minúsculo. A sintaxe completa deve ficar assim: 


\[\033[Z;YY;XXm\]

Onde Z é o estilo dos caracteres, YY é a cor de fundo e XX a cor dos caracteres. Veja a tabela de cores e estilos: 


Cores dos caracteres Cores de Fundo
Preto 30 40
Vermelho 31 41
Verde 32 42
Amarelo 33 43
Azul 34 44
Roxo 35 45
Ciano 36 46
Cinza 37 47

Estilos dos caracteres
Normal 0
Bold 1 -> dá brilho às cores.
Underscore 4
Blink 5 -> pisca-pisca.
Inverse 7 -> inverte com a cor de fundo.
Concealed 8

Exemplificando: 


\[\033[0;40;32m\] -> deixa o caracter verde em fundo preto.
\[\033[1;47;33m\] -> deixa o caracter amarelo brilhante em fundo cinza.
\[\033[5;40;36m\] -> deixa o caracter ciano piscando em fundo preto.


Veja então alguns exemplos de prompt: 


export PS1="Data: \d Hora: \t ->"

export PS1="\253\u@\h\273 \$ "

export PS1="\[\033[1;40;32m\]\u\[\033[0;40;33m\]@\[\033[1;40;31m\]\h\[\033[0m\]\\$"

export PS1="\[\033[1;44;37m\]\253\[\033[1;44;32m\]\u\[\033[1;44;37m\]@\[\033[1;44;33m\]\h \[\033[1;44;37m\]:\[\033[1;44;36m\]\w\[\033[1;44;37m\]\273\[\033[0m\]\\$ "

export PS1="\[\033[0;44;37m\]\d \t\[\033[0m\] \n\[\033[0;40;32m\]\s\[\033[1;40;37m\]:\[\033[1;40;36m\]\w \[\033[0m\]\\$ "

export PS1="\[\033[0;44;37m\]\d \t\[\033[0;40;32m\]\s\[\033[1;40;37m\]:\[\033[1;40;36m\]\w \[\033[0m\]\\$ "

Observações importantes: 
Se você quiser desativar as cores, use o código \[\033[0m\]. 
Use também o código \[\033[0m\] antes de adicionar uma nova linha ao prompt. 
Os códigos das cores não tem ordem certa, mas é recomendável usar na ordem Z;YY;XX para que não precise usar o código \[\033[0m\] entre cada definição de cor. 
Consulte a página manual do bash para mais informações. 

Agora veja como está o meu /etc/bashrc: 


# /etc/bashrc

Vermelho="\[\\033[31m\]"
Verde="\[\\033[32m\]"
Amarelo="\[\\033[33m\]"
Ciano="\[\\033[36m\]"
Branco="\[\\033[37m\]"
Normal="\[\\033[0m\]"

PS1="$Normal$Verde[$Amarelo\u$Vermelho@$Amarelo\h$Verde:$Ciano\w$Verde]$Branco\\$ $Normal"


[23/10/2000]: Método de eliminar aquela mensagem "obsolete CUAn"

a) entre no diretorio /dev
#cd /dev

b) delete e link @mouse
rm mouse

c) crie um novo link
ln -s ttyS0 modem
ou
ln -s ttyS1 modem

d) reinicialize a maquina.


Alterando as mensagens do login:
Para alterar as mensagens que aparecem no login edite os seguintes arquivos do seu Linux: 


/etc/issue -> Mensagem que aparece antes do login na máquina local.
/etc/issue.net -> Mensagem que aparece antes do login remoto, por telnet.
/etc/motd -> Mensagem que aparece após o login.

Mas normalmente o /etc/rc.d/rc.local sobrescreve o issue e o issue.net a cada boot, então você deverá editar este arquivo para alterar a mensagem.
Se preferir, desabilite apenas comentando as linhas no rc.local (coloque uma # no início de cada linha), assim os arquivos issue e issue.net ficarão intactos. 


Summing up a column of numbers
From: http://www.linuxgazette.com/issue56/lg_tips56.html
Wed, 26 Jul 2000 15:40:52 -0700 
From: Mike Orr, Linux Gazette Editor ([email protected]


Recently I had to sum up a column of numbers appearing in a tab-delimited text file. The following awk program 'summ' worked well, in conjunction with a few other tricks. 

#!/usr/bin/awk -f

{
total = total + $1
}

END {
print total
}

Assume the data file contains: 


aaa 44 asdf
bbb 55 asdf
ccc 67 asqq

$ cut -f2 data.txt | summ
166

If I wanted to process only some of the lines, I can put a 'grep' before it: 

$ grep 'asdf' data.txt | cut -f2 | summ
99

If I wanted, I could move both these operations into the awk script. The "1" in $1 could be replaced by any column number, and I could put a regular expression before the first bracket: 

/asdf/ {
total = total + $2
}

However, I prefer one generic script. I wanted to call it 'sum' but the name was already taken. ('sum' produces checksums.) 


Loadlin + Windows 98:

Win98 kind of throws a curve into the dual booting equation, but even so it is doable. The next revision of my mini-HOWTO will contain Win98 info. Essentially, you have to use a modified version of 'Method 2' in "Alternate Methods for Auto-Booting Linux" discussed in Section 6 of the Loadlin + Win95 mini-HOWTO:

Step One: Edit (or create) config.sys on the root of Drive C. The contents 
should be similar to the following:

------------------Begin File---------------
[menu]
menuitem=Linux, RedHat Linux 5.2
menuitem=Win98, Windows 98
menucolor=15,1
menudefault=Win98, 10

[linux]

[win98]
------------------End File------------------

If your system already has a config.sys file, put those contents under the [win98] section.
The [linux] section is left blank intentionally.

Step Two: Edit (or create) autoexec.bat on the root of Drive C. The 
contents should be similar to the following:

------------------Begin File----------------
goto %config%

:linux call c:\linux.bat

:win98

------------------End File------------------

As above, if you aready have an autoexec.bat file, put those contents under
the :win98 section.

Step Three: Create a file called: linux.bat. Putting it in the root of 
Drive C is as good as place as any (but it can go anywhere so long as you 
reference the path or location). The contents should be similar to the 
following:

------------------Begin File----------------
@echo off c:\loadlin 
c:\vmlinuz root=/dev/hda3 ro
------------------End File------------------
The above example assumes that loadlin.exe and vmlinuz are located in the 
root of Drive C (or C:\) and that linux is installed on the /dev/hda3 
partition. Your configuration may be different.

The important thing here is to make sure that loadlin and your linux kernel 
file are properly referenced.

Finished! That should work for you, as that is how I have things set up on 
my system, which dual boots with Win98. :-)


Touching Files
by S. Lee Henry

The easiest way to create a file on a Unix system is with the touch 
command. In fact, this command is so easy to use that it has become my 
standard test of whether or not I have write access to a particular 
directory. I'll use the command "touch this" or "touch 0". If the shell 
returns a permission denied error, I'll know that I don't have write 
access. If it simply creates the file, I'll remove it and get on with 
my 
work. Touching a file is easier and takes less thinking (I'm conserving 
brain cells) than checking the directory's permissions and remembering 
which groups I'm a member.

The touch command is handy for other things as well. Years ago, when I 
used to remove files that sat too long in /var/tmp or /tmp (OK, I still 
do), I found that one particularly crafty user was touching the files 
that he left in /var/tmp with a cron script so that my cron script 
would 
not detect how long they had been there and would leave them alone. 
When 
a file already exists, the touch command updates the file modification 
time.

Another way that I typically use the touch command is to create a file 
on the fly where I intend to toss text. I might start a foreach command 
like this:

% foreach FILE (`find ./* -name "col-*-00.txt -print`)


Oops! By this time, I realize that if I grep some text from each $FILE 
and try adding to a temporary file that I'll probably get a complaint 
from the shell telling me that the file doesn't exist. I could ^c out 
of 
the loop, create the file, and use the !! command so I don't have to 
type the foreach command again (remember, I'm conserving brain cells), 
but why bother? I can, instead, toss in a touch command and create the 
file. So, I continue

touch /var/temp/col-subjects

This command will create the file if it doesn't exist (and it doesn't) 
and allow me to add whatever text I grep from the files. The next line 
will probably be something like this:

grep "Next Week:" $FILE >> /var/tmp/col-subjects

and then I'll provide myself with some evidence that the command is 
working and end my little foreach loop.

echo $FILE
end

The touch command can also be used to give a file a particular 
modification time. All you have to do is specify the particular date 
and 
time. If you want to find all files newer than a certain date, for 
example, you can touch a file - giving it the date/time you want - and 
then use the find command with a -newer option like this:

% touch -m 199912251234 myref
% find ./* -newer myref -print

The touch command can come in very handy at times, whether you're a 
crafty user or a sysadmin conserving brain cells.


Resources

Unix command line 101: How much do you know? 
Arguments and options on the half-shell
http://www.sunworld.com/sunworldonline/swol-10-1999/swol-10-unix101.html

What's the best way to probe processes? 
How to measure the resource consumption and process activity on a Unix 
computer.
http://www.sunworld.com/swol-08-1996/swol-08-perf.html

Don't make me LDAP you 
Lightweight Directory Access Protocol: What it is, why you want it
http://www.linuxworld.com/linuxworld/lw-1999-03/lw-03-uptime.html

 


feedback: [email protected]

 
My navegation bar ...
  ^
< + >
v

©2000 Nelmar Alvarenga

Hosted by www.Geocities.ws

1