<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta http-equiv="X-UA-Compatible" content="IE=7"/>
    <title>Configuração Gráfica</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"/><link rel="home" href="index.html" title="Instalando com DrakX"/><link rel="up" href="index.html" title="Instalando com DrakX"/><link rel="prev" href="addUser.html" title="Gerenciamento de Usuários"/><link rel="next" href="setupBootloader.html" title="Bootloader"/><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><script type="text/javascript">
      //The id for tree cookie
      var treeCookieId = "treeview-2692";
      var language = "en";
      var w = new Object();
      //Localization
      txt_filesfound = 'Resultados';
      txt_enter_at_least_1_char = "Você deve digitar pelo menos um caractere.";
      txt_browser_not_supported = "Javascript está desativado em seu navegador. Por favor ativar o JavaScript para desfrutar de todas as funcionalidades deste site.";
      txt_please_wait = "Por favor, aguarde. Pesquisa em andamento...";
      txt_results_for = "Resultados para:";
      txt_no_results_for = "";
    </script><style type="text/css">
      input {
      margin-bottom: 5px;
      margin-top: 2px;
      }

      .folder {
      display: block;
      height: 22px;
      padding-left: 20px;
      background: transparent url(../../common/jquery/treeview/images/folder.gif) 0 0px no-repeat;
      }
      
    </style><link rel="shortcut icon" href="https://www.mageia.org/g/favicon.png" type="image/x-icon"/><link rel="stylesheet" type="text/css" href="../../common/css/positioning.css"/><link rel="stylesheet" type="text/css" href="../../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"/><link rel="stylesheet" type="text/css" href="../../common/jquery/treeview/jquery.treeview.css"/><link rel="stylesheet" type="text/css" href="webhelp-default.css"/><link rel="stylesheet" type="text/css" href="webhelp-custom.css"/><script type="text/javascript" src="../../common/jquery/jquery-1.4.2.min.js"><!----></script><script type="text/javascript" src="../../common/jquery/jquery-ui-1.8.2.custom.min.js"><!----></script><script type="text/javascript" src="../../common/jquery/jquery.cookie.js"><!----></script><script type="text/javascript" src="../../common/jquery/treeview/jquery.treeview.min.js"><!----></script><script type="text/javascript" src="search/htmlFileList.js"><!----></script><script type="text/javascript" src="search/htmlFileInfoList.js"><!----></script><script type="text/javascript" src="nwSearchFnt.js"><!----></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"><!----></script><script type="text/javascript" src="search/index-2.js"><!----></script><script type="text/javascript" src="search/index-3.js"><!----></script></head><body><div xmlns="" id="header"><div id="navheader"><!----><table><tr><td style="height: 28px; width: 16px;"><a id="showHideButton" onclick="showHideToc();" class="pointLeft" title="Hide TOC tree">.
	    </a></td><td><img src="../../common/images/highlight-blue.gif" alt="H" height="25px" onclick="toggleHighlight()" id="showHideHighlight" style="cursor:pointer" title="Busca alternada para realcar o resultado"/></td><td><a accesskey="p" href="addUser.html">Anterior</a> 
		|
		<a accesskey="n" href="setupBootloader.html">Próxima</a></td></tr></table></div><div id="headerlogo"><img src="https://doc.mageia.org/g/mageia-2013-200p.png" alt="Company Logo"/></div><h1 id="pagetitle">Configuração Gráfica<br/> </h1></div><div id="content"><!----><div xml:lang="pt_BR" class="section" title="Configuração Gráfica"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="graphicalConfiguration"><!----></a>Configuração Gráfica</h2></div></div></div><div xml:lang="pt_BR" class="section" title="Configuração da placa de vídeo e do monitor"><div class="titlepage"><div><div><h3 class="title"><a id="configureX_chooser"><!----></a>Configuração da placa de vídeo e do monitor</h3></div></div></div><div class="mediaobject" align="center"><img src="images/dx2-configureX_chooser.png" align="middle"/></div><p><a id="configureX_chooser-pa1"><!----></a>Não importa qual ambiente gráfico (também conhecido como ambiente de
desktop) você escolheu para esta instalação do Mageia, eles são todos
baseados em um sistema de interface gráfica chamado <code class="literal">X Window
System</code>, ou simplesmente <span class="quote">“<span class="quote">X</span>”</span>. Então para o KDE Plasma,
GNOME, LXDE ou qualquer outro ambiente gráfico para funcionar bem, as
seguintes configurações do X precisam estar corretas.</p><p>Escolha as configurações apropriadas manualmente se achar que os detalhes
estão incorretos ou se nenhum deles é exibido.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><a id="configureX_chooser-pa2"><!----></a><span class="bold"><strong>Placa de vídeo</strong></span></p><p>Se você precisa usá-la, você deve selecionar uma placa específica da lista
expansível. Veja <a class="xref" href="graphicalConfiguration.html#configureX_card_list" title="Escolha um Servidor X (Configure sua Placa de Vídeo)">Choose an X Server (Configure your Graphic Card)</a>.</p></li><li class="listitem"><p><a id="configureX_chooser-pa3"><!----></a><span class="bold"><strong>Monitor</strong></span></p><p>Você pode escolher Plug 'n Play, se for aplicável, ou escolher seu monitor
pela lista de <span class="emphasis"><em>Fabricante</em></span>ou
<span class="emphasis"><em>Genéricos</em></span>. Escolha <span class="emphasis"><em>Personalizado</em></span>
se você preferir setar manual as taxas de frequência horizontal e vertical
do seu monitor. Veja <a class="xref" href="graphicalConfiguration.html#configureX_monitor" title="Escolhendo seu Monitor">Choosing your Monitor</a>.</p></li><li class="listitem"><p><a id="configureX_chooser-pa4"><!----></a><span class="bold"><strong>Resolução</strong></span></p><p>A resolução e profundidade de cor do seu monitor podem ser definidas aqui.</p></li><li class="listitem"><p><a id="configureX_chooser-pa5"><!----></a><span class="bold"><strong>Testar</strong></span></p><p>O botão de teste não está sempre disponível durante a instalação. Se esta
opção está disponível, e você testar suas configurações,  você sempre será
questionado para confirmar que suas configurações estão corretas. Se você
responder <span class="emphasis"><em>Sim</em></span>, as configuração serão mantidas. Se você
não visualizar nada, você retornará para as configurações da tela e estará
disponível para reconfiguração até que o resultado do teste seja
satisfatório. Se a opção de teste não está disponível, então certifique-se
que suas configuração estão em modo seguro.</p></li><li class="listitem"><p><a id="configureX_chooser-pa6"><!----></a><span class="bold"><strong>Opções</strong></span></p><p>Aqui você consegue escolher habilitar ou desabilitar varias opções.</p></li></ul></div><div class="warning" title="Atenção" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Atenção</h3><p><a id="configureX_chooser-pa3a"><!----></a>Existe o risco de danificar um monitor se você escolher taxas de atualização
que estejam fora da faixa de frequência do monitor. Isso se aplica a
monitores CRT mais antigos: monitores modernos rejeitam uma frequência não
suportada e normalmente entram no modo de espera.</p></div></div><div xml:lang="pt_BR" class="section" title="Escolha um Servidor X (Configure sua Placa de Vídeo)"><div class="titlepage"><div><div><h3 class="title"><a id="configureX_card_list"><!----></a>Escolha um Servidor X (Configure sua Placa de Vídeo)</h3></div></div></div><div class="mediaobject" align="center"><img src="images/dx2-configureX_card_list.png" align="middle"/></div><p>DrakX tem um banco de dados muito completo de placas de vídeo e geralmente
identifica corretamente o seu dispositivo.</p><p>Se o instalador não detectou corretamente sua placa de vídeo e você sabe
identificá-la, você pode selecioná-la a partir da árvore, escolhendo: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Fabricante</p></li><li class="listitem"><p>então a marca da sua placa</p></li><li class="listitem"><p>e o modelo da placa</p></li></ul></div><p>Se você não conseguir encontrar o seu drive nas listas de fornecedores
(porque ainda não está no banco de dados ou é um drive mais antigo), você
pode encontrar um driver adequado no banco de dados categoria
<span class="emphasis"><em>Xorg</em></span>, que fornece mais de 40 drivers de placa de vídeo
genéricos e de código aberto. Se você ainda não consegue encontrar um driver
específico para sua placa, existe a opção de usar o driver VESA, que fornece
recursos básicos.Xorg, que fornece mais de 40 drivers de placa de vídeo
genéricos e de código aberto. Se você ainda não consegue encontrar um driver
específico para sua placa, existe a opção de usar o driver VESA, que fornece
recursos básicos.</p><div class="caution" title="Cuidado" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Cuidado</h3><p>Esteja ciente de que, se você selecionar um driver incompatível, poderá ter
acesso somente à <span class="emphasis"><em>Interface de Linha de Comando </em></span>.</p></div><p>Alguns fabricantes de placas de vídeo fornecem drivers proprietários para o
Linux, que podem estar disponíveis apenas no repositório
<span class="emphasis"><em>Nonfree</em></span> e, em alguns casos, apenas nos sites dos
fabricantes de cartões. O repositório <span class="emphasis"><em>Nonfree</em></span> precisa
estar explicitamente habilitado para acessá-los. Se você não habilitou
anteriormente, você deve fazer isso após a primeira reinicialização.</p></div><div xml:lang="pt_BR" class="section" title="Escolhendo seu Monitor"><div class="titlepage"><div><div><h3 class="title"><a id="configureX_monitor"><!----></a>Escolhendo seu Monitor</h3></div></div></div><p><a id="configureX_monitor-pa1"><!----></a>DrakX tem um banco de dados bastante extenso de monitores e geralmente
identificará corretamente o seu.</p><div class="warning" title="Atenção" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Atenção</h3><p><a id="configureX_monitor-pa1w"><!----></a><span class="bold"><strong>Selecionar um monitor com características diferentes
pode danificar seu monitor ou hardware de vídeo. Por favor, não tente algo
sem saber o que está fazendo.</strong></span> Em caso de dúvida, você deve
consultar a documentação do seu monitor.</p></div><div class="mediaobject" align="center"><img src="images/dx2-configureX_monitor.png" align="middle"/></div><div class="variablelist"><dl><dt><span class="term"><a id="configureX_monitor-pa2"><!----></a>Personalizar</span></dt><dd><p><a id="configureX_monitor-pa3"><!----></a>Esta opção permite que você defina dois parâmetros críticos: a taxa de
atualização vertical e a taxa de sincronização horizontal. A atualização
vertical determina com que frequência a tela é atualizada e a sincronização
horizontal é a taxa na qual as linhas de varredura são exibidas.</p><p><a id="configureX_monitor-pa4"><!----></a>É <span class="emphasis"><em>MUITO IMPORTANTE</em></span> que você não especifique um tipo de
monitor com uma gama de sincronização que está além das capacidades do seu
equipamento: você pode danificá-lo. Em caso de dúvidas, escolha uma
configuração conservadora e consulte a documentação de seu monitor.</p></dd><dt><span class="term"><a id="configureX_monitor-pa5"><!----></a>Plug'n Play</span></dt><dd><p><a id="configureX_monitor-pa6"><!----></a>Esta é a opção padrão e tenta automaticamente determinar o tipo de monitor
do banco de dados do monitor.</p></dd><dt><span class="term"><a id="configureX_monitor-pa7"><!----></a>Fabricante</span></dt><dd><p><a id="configureX_monitor-pa8"><!----></a>Se o instalador não detectou corretamente o seu monitor e você sabe qual
deles possui, você pode escolher entre as opções selecionando:</p></dd></dl></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Fabricante</p></li><li class="listitem"><p>Modelo do monitor</p></li></ul></div><div class="variablelist"><dl><dt><span class="term"><a id="configureX_monitor-pa9"><!----></a>Genérico</span></dt><dd><p><a id="configureX_monitor-pa10"><!----></a>A seleção desse grupo listará aproximadamente 30 configurações de tela, como
1024x768 @ 60Hz, e incluirá telas de tela plana usadas em
laptops. Geralmente, esse é um bom grupo de seleção de monitores se você
precisar usar o driver da placa VESA quando o hardware de vídeo não puder
ser determinado automaticamente. Mais uma vez, pode ser prudente ser
conservador em suas seleções.</p></dd></dl></div></div></div><script xmlns="" type="text/javascript" src="main.js"><!----></script><hr xmlns=""/><div xmlns="" class="copyright">© Mageia</div><div xmlns="" class="license"><a href="index.html#CC_BY-SA">CC BY-SA 3.0</a></div><div id="upload_date">Uploaded on 11/03/2021</div><div class="navfooter"><hr/><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="addUser.html">Anterior</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="setupBootloader.html">Próxima</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Principal</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div><div id="leftnavigation"><div id="tabs"><ul><li><a href="#treeDiv"><em>conteúdo</em></a></li><li><a href="#searchDiv"><em>Pesquisa</em></a></li></ul><div id="treeDiv"><img src="../../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"/><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file section"><a href="Select-and-use-ISOs.html">Selecionar e usar ISOs</a></span><ul><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e18">Introdução</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e40">Mídia</a></span><ul><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e42">Definição</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e47">Classical installation media</a></span><ul><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e49">Características comuns</a></span></li></ul></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e67">Mídia Live</a></span><ul><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e69">Características comuns</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e82">Live DVD Plasma</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e91">Live DVD GNOME</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e100">Live DVD Xfce</a></span></li></ul></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e109">Mídia de instalação de rede</a></span><ul><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e111">Características comuns</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e118">netinstall.iso</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e123">netinstall-nonfree.iso</a></span></li></ul></li></ul></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e128">Baixando e checando Mídia</a></span><ul><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e130">Baixando</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e148">Verificar a integridade da mídia baixada</a></span></li></ul></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e167">Queimar ou despejar a ISO</a></span><ul><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e171">Gravando a ISO para o CD/DVD</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e178">Despejar a ISO para um pendrive USB</a></span><ul><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e186">Usando uma ferramenta gráfica do Mageia</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e190">Usando uma ferramenta gráfica do Windows</a></span></li><li><span class="file section"><a href="Select-and-use-ISOs.html#d4e200">Usando a linha de comando dentro de um sistema GNU / Linux</a></span></li></ul></li></ul></li></ul></li><li><span class="file section"><a href="installer.html">DrakX, o Instalador da Mageia</a></span><ul><li><span class="file section"><a href="installer.html#d4e259">As etapas de instalação</a></span></li><li><span class="file section"><a href="installer.html#d4e281">Primeira Tela da Instalação</a></span><ul><li><span class="file section"><a href="installer.html#d4e285">Legacy (BIOS) Sistemas</a></span></li><li><span class="file section"><a href="installer.html#d4e308">UEFI Sistema</a></span></li></ul></li><li><span class="file section"><a href="installer.html#d4e330">Problemas de Instalação e Possíveis Soluções</a></span><ul><li><span class="file section"><a href="installer.html#d4e332">Sem Interface Gráfica</a></span></li><li><span class="file section"><a href="installer.html#d4e347">A Instalação Congela</a></span></li><li><span class="file section"><a href="installer.html#d4e351">Problema RAM</a></span></li><li><span class="file section"><a href="installer.html#d4e358">Partições Dinâmicas</a></span></li></ul></li></ul></li><li><span class="file section"><a href="selectLanguage.html">Por favor, escolha um idioma para usar</a></span></li><li><span class="file section"><a href="acceptLicense.html">Licenças e Notas de Lançamento</a></span><ul><li><span class="file section"><a href="acceptLicense.html#license">Acordo de Licença</a></span></li><li><span class="file section"><a href="acceptLicense.html#releaseNotes">Notas de Lançamento</a></span></li></ul></li><li><span class="file section"><a href="setupSCSI.html">Detecção de disco rígido</a></span></li><li><span class="file section"><a href="selectInstallClass.html">Instalar ou atualizar</a></span></li><li><span class="file section"><a href="selectKeyboard.html">Teclado</a></span></li><li><span class="file section"><a href="diskPartitioning.html">Particionamento</a></span><ul><li><span class="file section"><a href="diskPartitioning.html#doPartitionDisks">Particionamento sugerido</a></span></li><li><span class="file section"><a href="diskPartitioning.html#ask_mntpoint_s">Escolha os pontos de montagem</a></span></li><li><span class="file section"><a href="diskPartitioning.html#takeOverHdConfirm">Confirme o disco rígido para ser formatado</a></span></li><li><span class="file section"><a href="diskPartitioning.html#diskdrake">Particionamento de disco personalizado com DiskDrake</a></span></li><li><span class="file section"><a href="diskPartitioning.html#formatPartitions">Formatação</a></span></li></ul></li><li><span class="file section"><a href="software.html">Software</a></span><ul><li><span class="file section"><a href="software.html#d4e687">Seleção de Mídia</a></span><ul><li><span class="file section"><a href="software.html#add_supplemental_media">Informações complementares de instalação</a></span></li><li><span class="file section"><a href="software.html#media_selection">Mídia Disponível</a></span></li></ul></li><li><span class="file section"><a href="software.html#chooseDesktop">Seleção de Área de Trabalho</a></span></li><li><span class="file section"><a href="software.html#choosePackageGroups">Seleção de Grupo de Pacotes</a></span></li><li><span class="file section"><a href="software.html#minimal-install">Instalação Mínima</a></span></li><li><span class="file section"><a href="software.html#choosePackagesTree">Escolha Pacotes Individuais</a></span></li></ul></li><li><span class="file section"><a href="addUser.html">Gerenciamento de Usuários</a></span><ul><li><span class="file section"><a href="addUser.html#root-password">Definir senha do administrador (root):</a></span></li><li><span class="file section"><a href="addUser.html#enterUser">Digite um usuário</a></span></li><li><span class="file section"><a href="addUser.html#addUserAdvanced">Gerenciamento de usuários (avançado)</a></span></li></ul></li><li id="webhelp-currentid"><span class="file section"><a href="graphicalConfiguration.html">Configuração Gráfica</a></span><ul><li><span class="file section"><a href="graphicalConfiguration.html#configureX_chooser">Configuração da placa de vídeo e do monitor</a></span></li><li><span class="file section"><a href="graphicalConfiguration.html#configureX_card_list">Escolha um Servidor X (Configure sua Placa de Vídeo)</a></span></li><li><span class="file section"><a href="graphicalConfiguration.html#configureX_monitor">Escolhendo seu Monitor</a></span></li></ul></li><li><span class="file section"><a href="setupBootloader.html">Bootloader</a></span><ul><li><span class="file section"><a href="setupBootloader.html#d4e965">Bootloaders disponíveis</a></span><ul><li><span class="file section"><a href="setupBootloader.html#d4e967">Grub2</a></span></li><li><span class="file section"><a href="setupBootloader.html#d4e984">rEFInd</a></span></li></ul></li><li><span class="file section"><a href="setupBootloader.html#d4e994">Configuração "Bootloader"</a></span><ul><li><span class="file section"><a href="setupBootloader.html#d4e997">Principais Opções do Gerenciador de Inicialização</a></span></li><li><span class="file section"><a href="setupBootloader.html#d4e1061">Configuração do Gerenciador de Inicialização</a></span></li></ul></li><li><span class="file section"><a href="setupBootloader.html#d4e1115">Outras Opções</a></span><ul><li><span class="file section"><a href="setupBootloader.html#d4e1117">Usando um Gerenciador de Inicialização existente</a></span></li><li><span class="file section"><a href="setupBootloader.html#d4e1120">Instalando sem um gerenciador de inicialização</a></span></li><li><span class="file section"><a href="setupBootloader.html#setupBootloaderAddEntry">Adicionando ou Modificando uma Entrada do Menu de Inicialização</a></span></li></ul></li></ul></li><li><span class="file section"><a href="misc-params.html">Resumo da Configuração</a></span><ul><li><span class="file section"><a href="misc-params.html#misc-params-system">Parâmetros do Sistema</a></span></li><li><span class="file section"><a href="misc-params.html#misc-params-hardware">Parâmetro de Hardware</a></span></li><li><span class="file section"><a href="misc-params.html#misc-params-network">Parâmetros de rede e internet</a></span></li><li><span class="file section"><a href="misc-params.html#misc-params-security">Segurança</a></span></li></ul></li><li><span class="file section"><a href="locale.html">Localidade</a></span><ul><li><span class="file section"><a href="locale.html#configureTimezoneUTC">Configure o seu fuso horário</a></span></li><li><span class="file section"><a href="locale.html#selectCountry">Selecione seu país / região</a></span><ul><li><span class="file section"><a href="locale.html#inputMethod">Método de entrada</a></span></li></ul></li></ul></li><li><span class="file section"><a href="configureServices.html">Configurar os seus serviços</a></span></li><li><span class="file section"><a href="selectMouse.html">Selecione o mouse</a></span></li><li><span class="file section"><a href="soundConfig.html">Configuração de Som</a></span><ul><li><span class="file section"><a href="soundConfig.html#soundConfig-Advanced">Avançado</a></span></li></ul></li><li><span class="file section"><a href="securityLevel.html">Nível de Segurança</a></span></li><li><span class="file section"><a href="firewall.html">Firewall</a></span></li><li><span class="file section"><a href="installUpdates.html">Atualizações</a></span></li><li><span class="file section"><a href="exitInstall.html">Parabéns</a></span></li><li><span class="file section"><a href="uninstall-Mageia.html">Desinstalando o Mageia</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(ditaSearch_Form);return false" name="ditaSearch_Form" class="searchForm"><fieldset class="searchFieldSet"><legend>Pesquisa</legend><center><input id="textToSearch" name="textToSearch" type="text" class="searchText"/> &nbsp; <input onclick="Verifie(ditaSearch_Form)" type="button" class="searchButton" value="Go" id="doSearch"/></center></fieldset></form></div><div id="searchResults"><center/></div></div></div></div></div></body></html>
ef='#n571'>571</a>
<a id='n572' href='#n572'>572</a>
<a id='n573' href='#n573'>573</a>
<a id='n574' href='#n574'>574</a>
<a id='n575' href='#n575'>575</a>
<a id='n576' href='#n576'>576</a>
<a id='n577' href='#n577'>577</a>
<a id='n578' href='#n578'>578</a>
<a id='n579' href='#n579'>579</a>
<a id='n580' href='#n580'>580</a>
<a id='n581' href='#n581'>581</a>
<a id='n582' href='#n582'>582</a>
<a id='n583' href='#n583'>583</a>
<a id='n584' href='#n584'>584</a>
<a id='n585' href='#n585'>585</a>
<a id='n586' href='#n586'>586</a>
<a id='n587' href='#n587'>587</a>
<a id='n588' href='#n588'>588</a>
<a id='n589' href='#n589'>589</a>
<a id='n590' href='#n590'>590</a>
<a id='n591' href='#n591'>591</a>
<a id='n592' href='#n592'>592</a>
<a id='n593' href='#n593'>593</a>
<a id='n594' href='#n594'>594</a>
<a id='n595' href='#n595'>595</a>
<a id='n596' href='#n596'>596</a>
<a id='n597' href='#n597'>597</a>
<a id='n598' href='#n598'>598</a>
<a id='n599' href='#n599'>599</a>
<a id='n600' href='#n600'>600</a>
<a id='n601' href='#n601'>601</a>
<a id='n602' href='#n602'>602</a>
</pre></td>
<td class='lines'><pre><code><span class="hl slc">#-########################################################################</span>
<span class="hl slc">#- This file implement many common shell commands:</span>
<span class="hl slc">#- true, false, cat, which, dirname, basename, rmdir, lsmod, grep, tr,</span>
<span class="hl slc">#- mount, umount, mkdir, mknod, ln, rm, chmod, chown, mkswap, swapon,</span>
<span class="hl slc">#- swapoff, ls, cp, ps, dd, head, tail, strings, hexdump, more, insmod,</span>
<span class="hl slc">#- modprobe, route, df, kill, lspci, lssbus, dmesg, sort, du, </span>
<span class="hl slc">#-########################################################################</span>
<span class="hl kwa">package</span> commands<span class="hl opt">;</span> <span class="hl slc"># $Id$</span>

<span class="hl kwa">use</span> diagnostics<span class="hl opt">;</span>
<span class="hl kwa">use</span> strict<span class="hl opt">;</span>
<span class="hl kwa">use</span> vars <span class="hl str">qw(</span><span class="hl ipl">$printable_chars</span><span class="hl str">)</span><span class="hl opt">;</span>

<span class="hl slc">#-######################################################################################</span>
<span class="hl slc">#- misc imports</span>
<span class="hl slc">#-######################################################################################</span>
<span class="hl kwa">use</span> common <span class="hl str">qw(:common :file :system :constant)</span><span class="hl opt">;</span>

<span class="hl slc">#-#####################################################################################</span>
<span class="hl slc">#- Globals</span>
<span class="hl slc">#-#####################################################################################</span>
<span class="hl kwc">my</span> <span class="hl kwb">$BUFFER_SIZE</span> <span class="hl opt">=</span> <span class="hl num">1024</span><span class="hl opt">;</span>

<span class="hl slc">#-######################################################################################</span>
<span class="hl slc">#- Functions</span>
<span class="hl slc">#-######################################################################################</span>
<span class="hl kwa">sub</span> getopts <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$o</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;r</span> <span class="hl opt">=</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl str">&apos;&apos;</span> <span class="hl opt">} (</span><span class="hl kwb">&#64;_</span> <span class="hl opt">=</span> <span class="hl kwc">split</span> <span class="hl kwd">//</span><span class="hl opt">,</span> <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]);</span>
    <span class="hl kwa">while</span> <span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">) {</span>
	<span class="hl kwc">local</span> <span class="hl kwb">$_</span> <span class="hl opt">=</span> <span class="hl kwb">$o</span><span class="hl opt">-&gt;[</span><span class="hl num">0</span><span class="hl opt">];</span>
	<span class="hl kwb">$_</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwd">/^-/</span> <span class="hl kwc">or</span> <span class="hl kwa">return</span> <span class="hl kwb">&#64;r</span><span class="hl opt">;</span>
	<span class="hl kwa">for</span> <span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">$i</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> <span class="hl kwb">$i</span> <span class="hl opt">&lt;</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span> <span class="hl kwb">$i++</span><span class="hl opt">) {</span> <span class="hl kwd">/$_[$i]/</span> <span class="hl kwc">and</span> <span class="hl kwb">$r</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">] =</span> <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">]; }</span>
	<span class="hl kwc">shift</span> <span class="hl kwb">&#64;$o</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl kwb">&#64;r</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> true <span class="hl opt">{</span> <span class="hl kwa">exit</span> <span class="hl num">0</span> <span class="hl opt">}</span>
<span class="hl kwa">sub</span> false <span class="hl opt">{</span> <span class="hl kwa">exit</span> <span class="hl num">1</span> <span class="hl opt">}</span>
<span class="hl kwa">sub</span> cat <span class="hl opt">{</span> <span class="hl kwb">&#64;ARGV</span> <span class="hl opt">=</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span> <span class="hl kwc">print</span> <span class="hl kwa">while</span> <span class="hl opt">&lt;&gt; }</span>
<span class="hl kwa">sub</span> which <span class="hl opt">{</span> ARG<span class="hl opt">:</span> <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">) {</span> <span class="hl kwa">foreach</span> <span class="hl kwc">my</span> <span class="hl kwb">$c</span> <span class="hl opt">(</span><span class="hl kwc">split</span> <span class="hl kwd">/:/</span><span class="hl opt">,</span> <span class="hl kwb">$ENV</span><span class="hl opt">{</span>PATH<span class="hl opt">}) { -</span>x <span class="hl str">&quot;</span><span class="hl ipl">$c/$_</span><span class="hl str">&quot;</span> <span class="hl kwc">and print</span><span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl ipl">$c/$_\n</span><span class="hl str">&quot;</span><span class="hl opt">),</span> <span class="hl kwa">next</span> ARG<span class="hl opt">; }}}</span>
<span class="hl kwa">sub</span> dirname_ <span class="hl opt">{</span> <span class="hl kwc">print</span> dirname<span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">),</span> <span class="hl str">&quot;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span> <span class="hl opt">}</span>
<span class="hl kwa">sub</span> basename_ <span class="hl opt">{</span> <span class="hl kwc">print</span> basename<span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">),</span> <span class="hl str">&quot;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span> <span class="hl opt">}</span>
<span class="hl kwa">sub</span> rmdir_ <span class="hl opt">{</span> <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">) {</span> <span class="hl kwc">rmdir</span> <span class="hl kwb">$_</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;rmdir: can&apos;t remove</span> <span class="hl ipl">$_\n</span><span class="hl str">&quot;</span> <span class="hl opt">} }</span>
<span class="hl kwa">sub</span> lsmod <span class="hl opt">{</span> <span class="hl kwc">print</span> <span class="hl str">&quot;Module                  Size  Used by</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span> cat<span class="hl opt">(</span><span class="hl str">&quot;/proc/modules&quot;</span><span class="hl opt">); }</span>

<span class="hl kwa">sub</span> grep_ <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$h, $v, $i</span><span class="hl opt">) =</span> getopts<span class="hl opt">(</span>\<span class="hl kwb">&#64;_,</span> <span class="hl str">qw(hvi)</span><span class="hl opt">);</span>
    <span class="hl kwb">&#64;_</span> <span class="hl opt">==</span> <span class="hl num">0</span> <span class="hl opt">||</span> <span class="hl kwb">$h</span> <span class="hl kwc">and die</span> <span class="hl str">&quot;usage: grep &lt;regexp&gt; [files...]</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$r</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwb">$r</span> <span class="hl opt">=</span> <span class="hl kwd">qr/$r/i</span> <span class="hl kwa">if</span> <span class="hl kwb">$i</span><span class="hl opt">;</span>
    <span class="hl kwb">&#64;ARGV</span> <span class="hl opt">=</span> <span class="hl kwb">&#64;_</span><span class="hl opt">; (</span><span class="hl kwd">/$r/</span> ? <span class="hl kwb">$v</span> <span class="hl opt">||</span> <span class="hl kwc">print</span> <span class="hl opt">:</span> <span class="hl kwb">$v</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwc">print</span><span class="hl opt">)</span> <span class="hl kwa">while</span> <span class="hl opt">&lt;&gt;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> tr_ <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$s, $c, $d</span><span class="hl opt">) =</span> getopts<span class="hl opt">(</span>\<span class="hl kwb">&#64;_,</span> <span class="hl str">qw(s c d)</span><span class="hl opt">);</span>
    <span class="hl kwb">&#64;_</span> <span class="hl opt">&gt;=</span> <span class="hl num">1</span> <span class="hl opt">+ (!</span><span class="hl kwb">$d</span> <span class="hl opt">||</span> <span class="hl kwb">$s</span><span class="hl opt">)</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;usage: tr [-c] [-s [-d]] &lt;set1&gt; &lt;set2&gt; [files...]</span><span class="hl esc">\n</span>    <span class="hl str">or tr [-c] -d &lt;set1&gt; [files...]</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$set1</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$set2</span><span class="hl opt">; !</span><span class="hl kwb">$d</span> <span class="hl opt">||</span> <span class="hl kwb">$s</span> <span class="hl kwc">and</span> <span class="hl kwb">$set2</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwb">&#64;ARGV</span> <span class="hl opt">=</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">eval</span> <span class="hl str">&quot;(tr/$set1/$set2/</span><span class="hl ipl">$s$d$c</span><span class="hl str">, print) while &lt;&gt;&quot;</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> mount <span class="hl opt">{</span>
    <span class="hl kwb">&#64;_</span> <span class="hl kwc">or</span> <span class="hl kwa">return</span> cat<span class="hl opt">(</span><span class="hl str">&quot;/proc/mounts&quot;</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$t, $r</span><span class="hl opt">) =</span> getopts<span class="hl opt">(</span>\<span class="hl kwb">&#64;_,</span> <span class="hl str">qw(tr)</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$fs</span> <span class="hl opt">=</span> <span class="hl kwb">$t</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>

    <span class="hl kwb">&#64;_</span> <span class="hl opt">==</span> <span class="hl num">2</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;usage: mount [-r] [-t &lt;fs&gt;] &lt;device&gt; &lt;dir&gt;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span>
    <span class="hl str">&quot;       (use -r for readonly)</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span>
    <span class="hl str">&quot;       (if /dev/ is left off the device name, a temporary node will be created)</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$dev, $where</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$fs</span> <span class="hl opt">||=</span> <span class="hl kwb">$where</span> <span class="hl opt">=~</span> <span class="hl kwd">/:/</span> ? <span class="hl str">&quot;nfs&quot;</span> <span class="hl opt">:</span>
            <span class="hl kwb">$dev</span> <span class="hl opt">=~</span> <span class="hl kwd">/fd/</span> ? <span class="hl str">&quot;vfat&quot;</span> <span class="hl opt">:</span> <span class="hl str">&quot;ext2&quot;</span><span class="hl opt">;</span>

    <span class="hl kwa">require</span> fs<span class="hl opt">;</span>
    <span class="hl kwa">require</span> modules<span class="hl opt">;</span>
    modules<span class="hl opt">::</span>load_deps<span class="hl opt">(</span><span class="hl str">&quot;/modules/modules.dep&quot;</span><span class="hl opt">);</span>
    fs<span class="hl opt">::</span>mount<span class="hl opt">(</span><span class="hl kwb">$dev, $where, $fs, $r</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> umount <span class="hl opt">{</span>
    <span class="hl kwb">&#64;_</span> <span class="hl opt">==</span> <span class="hl num">1</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;umount expects a single argument</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>

    <span class="hl kwa">require</span> fs<span class="hl opt">;</span>
    fs<span class="hl opt">::</span>umount<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> mkdir_ <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$rec</span><span class="hl opt">) =</span> getopts<span class="hl opt">(</span>\<span class="hl kwb">&#64;_,</span> <span class="hl str">qw(p)</span><span class="hl opt">);</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$mkdir</span><span class="hl opt">;</span> <span class="hl kwb">$mkdir</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$root</span> <span class="hl opt">=</span> dirname <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">];</span>
	<span class="hl kwa">if</span> <span class="hl opt">(-</span>e <span class="hl kwb">$root</span><span class="hl opt">) {</span>
	    <span class="hl opt">-</span>d <span class="hl kwb">$root</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;mkdir: error creating directory</span> <span class="hl ipl">$_</span><span class="hl str">[0]:</span> <span class="hl ipl">$root</span> <span class="hl str">is a file and i won&apos;t delete it</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	<span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	    <span class="hl kwb">$rec</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;mkdir:</span> <span class="hl ipl">$root</span> <span class="hl str">does not exist (try option -p)</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	    <span class="hl opt">&amp;</span><span class="hl kwb">$mkdir</span><span class="hl opt">(</span><span class="hl kwb">$root</span><span class="hl opt">);</span>
	<span class="hl opt">}</span>
	<span class="hl kwb">$rec</span> <span class="hl kwc">and</span> <span class="hl opt">-</span>d <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]</span> <span class="hl kwc">and</span> <span class="hl kwa">return</span><span class="hl opt">;</span>
	<span class="hl kwc">mkdir</span> <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> <span class="hl num">0755</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;mkdir: error creating directory</span> <span class="hl ipl">$_</span><span class="hl str">:</span> <span class="hl ipl">$!\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl opt">};</span>
    <span class="hl opt">&amp;</span><span class="hl kwb">$mkdir</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">)</span> <span class="hl kwa">foreach</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
<span class="hl opt">}</span>


<span class="hl kwa">sub</span> mknod <span class="hl opt">{</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span> <span class="hl opt">==</span> <span class="hl num">1</span><span class="hl opt">) {</span>
	<span class="hl kwa">require</span> devices<span class="hl opt">;</span>
	<span class="hl kwc">eval</span> <span class="hl opt">{</span> devices<span class="hl opt">::</span>make<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]) };</span> <span class="hl kwb">$&#64;</span> <span class="hl kwc">and die</span> <span class="hl str">&quot;mknod: failed to create</span> <span class="hl ipl">$_</span><span class="hl str">[0]</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl kwa">elsif</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span> <span class="hl opt">==</span> <span class="hl num">4</span><span class="hl opt">) {</span>
	<span class="hl kwa">require</span> c<span class="hl opt">;</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$mode</span> <span class="hl opt">= $ {{</span><span class="hl str">&quot;b&quot;</span> <span class="hl opt">=&gt;</span> c<span class="hl opt">::</span>S_IFBLK<span class="hl opt">(),</span> <span class="hl str">&quot;c&quot;</span> <span class="hl opt">=&gt;</span> c<span class="hl opt">::</span>S_IFCHR<span class="hl opt">()}}{</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">1</span><span class="hl opt">]}</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;unknown node type</span> <span class="hl ipl">$_</span><span class="hl str">[1]</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	syscall_<span class="hl opt">(</span><span class="hl str">&apos;mknod&apos;</span><span class="hl opt">,</span> <span class="hl kwc">my</span> <span class="hl kwb">$a</span> <span class="hl opt">=</span> <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> <span class="hl kwb">$mode</span> <span class="hl opt">|</span> <span class="hl num">0600</span><span class="hl opt">,</span> makedev<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">2</span><span class="hl opt">],</span> <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">3</span><span class="hl opt">]))</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;mknod failed:</span> <span class="hl ipl">$!\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span> <span class="hl kwc">die</span> <span class="hl str">&quot;usage: mknod &lt;path&gt; [b|c] &lt;major&gt; &lt;minor&gt; or mknod &lt;path&gt;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">; }</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> ln <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$force, $soft</span><span class="hl opt">) =</span> getopts<span class="hl opt">(</span>\<span class="hl kwb">&#64;_,</span> <span class="hl str">qw(fs)</span><span class="hl opt">);</span>
    <span class="hl kwb">&#64;_</span> <span class="hl opt">&gt;=</span> <span class="hl num">1</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;usage: ln [-s] [-f] &lt;source&gt; [&lt;dest&gt;]</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$source, $dest</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$dest</span> <span class="hl opt">||=</span> basename<span class="hl opt">(</span><span class="hl kwb">$source</span><span class="hl opt">);</span>

    <span class="hl kwb">$force</span> <span class="hl kwc">and unlink</span> <span class="hl kwb">$dest</span><span class="hl opt">;</span>

    <span class="hl opt">(</span><span class="hl kwb">$soft</span> ? <span class="hl kwc">symlink</span><span class="hl opt">(</span><span class="hl kwb">$source, $dest</span><span class="hl opt">) :</span> <span class="hl kwc">link</span><span class="hl opt">(</span><span class="hl kwb">$source, $dest</span><span class="hl opt">))</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;ln failed:</span> <span class="hl ipl">$!\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> rm <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$rec,</span> <span class="hl kwc">undef</span><span class="hl opt">) =</span> getopts<span class="hl opt">(</span>\<span class="hl kwb">&#64;_,</span> <span class="hl str">qw(rf)</span><span class="hl opt">);</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$rm</span><span class="hl opt">;</span> <span class="hl kwb">$rm</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">) {</span>
	    <span class="hl kwa">if</span> <span class="hl opt">(!-</span>l <span class="hl kwb">$_</span> <span class="hl opt">&amp;&amp; -</span>d <span class="hl kwb">$_</span><span class="hl opt">) {</span>
		<span class="hl kwb">$rec</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;</span><span class="hl ipl">$_</span> <span class="hl str">is a directory</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
		<span class="hl opt">&amp;</span><span class="hl kwb">$rm</span><span class="hl opt">(</span>glob_<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">));</span>
		<span class="hl kwc">rmdir</span> <span class="hl kwb">$_</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;can&apos;t remove directory</span> <span class="hl ipl">$_</span><span class="hl str">:</span> <span class="hl ipl">$!\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span> <span class="hl kwc">unlink</span> <span class="hl kwb">$_</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;rm of</span> <span class="hl ipl">$_</span> <span class="hl str">failed:</span> <span class="hl ipl">$!\n</span><span class="hl str">&quot;</span> <span class="hl opt">}</span>
	<span class="hl opt">}</span>
    <span class="hl opt">};</span>
    <span class="hl opt">&amp;</span><span class="hl kwb">$rm</span><span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> chmod_ <span class="hl opt">{</span>
    <span class="hl kwb">&#64;_</span> <span class="hl opt">&gt;=</span> <span class="hl num">2</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;usage: chmod &lt;mode&gt; &lt;files&gt;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$mode</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwb">$mode</span> <span class="hl opt">=~</span> <span class="hl kwd">/^[0-7]+$/</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;illegal mode</span> <span class="hl ipl">$mode\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>

    <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">) {</span> <span class="hl kwc">chmod oct</span><span class="hl opt">(</span><span class="hl kwb">$mode</span><span class="hl opt">),</span> <span class="hl kwb">$_</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;chmod failed</span> <span class="hl ipl">$_</span><span class="hl str">:</span> <span class="hl ipl">$!\n</span><span class="hl str">&quot;</span> <span class="hl opt">}</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> chown_ <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$rec,</span> <span class="hl kwc">undef</span><span class="hl opt">) =</span> getopts<span class="hl opt">(</span>\<span class="hl kwb">&#64;_,</span> <span class="hl str">qw(r)</span><span class="hl opt">);</span>
    <span class="hl kwc">local</span> <span class="hl kwb">$_</span> <span class="hl opt">=</span> <span class="hl kwc">shift or die</span> <span class="hl str">&quot;usage: chown [-r] name[.group] &lt;files&gt;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$name, $group</span><span class="hl opt">) = (</span><span class="hl kwc">split</span><span class="hl opt">(</span><span class="hl str">&apos;\.&apos;</span><span class="hl opt">),</span> <span class="hl kwb">$_</span><span class="hl opt">);</span>

    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$uid, $gid</span><span class="hl opt">) = (</span><span class="hl kwc">getpwnam</span><span class="hl opt">(</span><span class="hl kwb">$name</span><span class="hl opt">) ||</span> <span class="hl kwb">$name,</span> <span class="hl kwc">getgrnam</span><span class="hl opt">(</span><span class="hl kwb">$group</span><span class="hl opt">) ||</span> <span class="hl kwb">$group</span><span class="hl opt">);</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$chown</span><span class="hl opt">;</span> <span class="hl kwb">$chown</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">) {</span>
	    <span class="hl kwc">chown</span> <span class="hl kwb">$uid, $gid, $_</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;chown of file</span> <span class="hl ipl">$_</span> <span class="hl str">failed:</span> <span class="hl ipl">$!\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
	    <span class="hl opt">-</span>d <span class="hl kwb">$_</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$rec</span> <span class="hl kwc">and</span> <span class="hl opt">&amp;</span><span class="hl kwb">$chown</span><span class="hl opt">(</span>glob_<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">));</span>
	<span class="hl opt">}</span>
    <span class="hl opt">};</span>
    <span class="hl opt">&amp;</span><span class="hl kwb">$chown</span><span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> mkswap <span class="hl opt">{</span>
    <span class="hl kwb">&#64;_</span> <span class="hl opt">==</span> <span class="hl num">1</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;mkswap &lt;device&gt;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl kwa">require</span> swap<span class="hl opt">;</span>
    swap<span class="hl opt">::</span>enable<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> <span class="hl num">0</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> swapon <span class="hl opt">{</span>
    <span class="hl kwb">&#64;_</span> <span class="hl opt">==</span> <span class="hl num">1</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;swapon &lt;file&gt;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl kwa">require</span> swap<span class="hl opt">;</span>
    swap<span class="hl opt">::</span>swapon<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]);</span>
<span class="hl opt">}</span>
<span class="hl kwa">sub</span> swapoff <span class="hl opt">{</span>
    <span class="hl kwb">&#64;_</span> <span class="hl opt">==</span> <span class="hl num">1</span> <span class="hl kwc">or die</span> <span class="hl str">&quot;swapoff &lt;file&gt;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
    <span class="hl kwa">require</span> swap<span class="hl opt">;</span>
    swap<span class="hl opt">::</span>swapoff<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> uncpio <span class="hl opt">{</span>
    <span class="hl kwb">&#64;_</span> <span class="hl kwc">and die</span> <span class="hl str">&quot;uncpio reads from stdin</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>

<span class="hl slc">#    cpioInstallArchive(gzdopen(0, &quot;r&quot;), NULL, 0, NULL, NULL, &amp;fail);</span>
<span class="hl opt">}</span>


<span class="hl kwa">sub</span> rights <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$r</span> <span class="hl opt">=</span> <span class="hl str">&apos;-&apos;</span> x <span class="hl num">9</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;rights</span> <span class="hl opt">= (</span><span class="hl str">qw(x w r x w r x w r)</span><span class="hl opt">, [</span><span class="hl str">&apos;t&apos;</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">], [</span><span class="hl str">&apos;s&apos;</span><span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">], [</span><span class="hl str">&apos;s&apos;</span><span class="hl opt">,</span> <span class="hl num">6</span><span class="hl opt">]);</span>
    <span class="hl kwa">for</span> <span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">$i</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> <span class="hl kwb">$i</span> <span class="hl opt">&lt;</span> <span class="hl kwb">&#64;rights</span><span class="hl opt">;</span> <span class="hl kwb">$i++</span><span class="hl opt">) {</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">vec</span><span class="hl opt">(</span><span class="hl kwc">pack</span><span class="hl opt">(</span><span class="hl str">&quot;S&quot;</span><span class="hl opt">,</span> <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]),</span> <span class="hl kwb">$i,</span> <span class="hl num">1</span><span class="hl opt">)) {</span>
	    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$val, $place</span><span class="hl opt">) =</span> <span class="hl kwb">$i</span> <span class="hl opt">&gt;=</span> <span class="hl num">9</span> ? <span class="hl opt">&#64;{</span><span class="hl kwb">$rights</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">]} : (</span><span class="hl kwb">$rights</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">],</span> <span class="hl kwb">$i</span><span class="hl opt">);</span>
	    <span class="hl kwc">my</span> <span class="hl kwb">$old</span> <span class="hl opt">=</span> \<span class="hl kwc">substr</span><span class="hl opt">(</span><span class="hl kwb">$r,</span> <span class="hl num">8</span> <span class="hl opt">-</span> <span class="hl kwb">$place,</span> <span class="hl num">1</span><span class="hl opt">);</span>
	    <span class="hl kwb">$$old</span> <span class="hl opt">= (</span><span class="hl kwb">$$old</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;-&apos;</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$i</span> <span class="hl opt">&gt;=</span> <span class="hl num">9</span><span class="hl opt">)</span> ? <span class="hl kwc">uc</span> <span class="hl kwb">$val</span> <span class="hl opt">:</span> <span class="hl kwb">$val</span><span class="hl opt">;</span>
	<span class="hl opt">}</span>
    <span class="hl opt">}</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;types</span> <span class="hl opt">=</span> <span class="hl kwc">split</span> <span class="hl kwd">//</span><span class="hl opt">,</span> <span class="hl str">&quot;_pc_d_b_-_l_s&quot;</span><span class="hl opt">;</span>
    <span class="hl kwb">$types</span><span class="hl opt">[</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">] &gt;&gt;</span> <span class="hl num">12</span> <span class="hl opt">&amp;</span> <span class="hl num">0xf</span><span class="hl opt">] .</span> <span class="hl kwb">$r</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> displaySize <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$m</span> <span class="hl opt">=</span> <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">] &gt;&gt;</span> <span class="hl num">12</span><span class="hl opt">;</span>
    <span class="hl kwb">$m</span> <span class="hl opt">==</span> <span class="hl num">4</span> <span class="hl opt">||</span> <span class="hl kwb">$m</span> <span class="hl opt">==</span> <span class="hl num">8</span> <span class="hl opt">||</span> <span class="hl kwb">$m</span> <span class="hl opt">==</span> <span class="hl num">10</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> ls <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$l</span> <span class="hl opt">,</span> <span class="hl kwb">$h</span><span class="hl opt">) =</span> getopts<span class="hl opt">(</span>\<span class="hl kwb">&#64;_,</span> <span class="hl str">qw(lh)</span><span class="hl opt">);</span>
    <span class="hl kwb">$h</span> <span class="hl kwc">and die</span> <span class="hl str">&quot;usage: ls [-l] &lt;files...&gt;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>

    <span class="hl kwb">&#64;_</span> <span class="hl kwc">or</span> <span class="hl kwb">&#64;_</span> <span class="hl opt">=</span> <span class="hl str">&apos;.&apos;</span><span class="hl opt">;</span>
    <span class="hl kwb">&#64;_</span> <span class="hl opt">==</span> <span class="hl num">1</span> <span class="hl opt">&amp;&amp; -</span>d <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]</span> <span class="hl kwc">and</span> <span class="hl kwb">&#64;_</span> <span class="hl opt">=</span> glob_<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]);</span>
    <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwc">sort</span> <span class="hl kwb">&#64;_</span><span class="hl opt">) {</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$l</span><span class="hl opt">) {</span>
	    <span class="hl kwc">my</span> <span class="hl kwb">&#64;s</span> <span class="hl opt">=</span> <span class="hl kwc">lstat or warn</span><span class="hl opt">(</span><span class="hl str">&quot;can&apos;t stat file</span> <span class="hl ipl">$_\n</span><span class="hl str">&quot;</span><span class="hl opt">),</span> <span class="hl kwa">next</span><span class="hl opt">;</span>
	    <span class="hl kwc">formline</span><span class="hl opt">(</span>
<span class="hl str">&quot;&#64;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; &#64;&lt;&lt;&lt;&lt;&lt;&lt;&lt; &#64;&lt;&lt;&lt;&lt;&lt;&lt;&lt; &#64;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &#64;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;</span> <span class="hl ipl">&#64;*\n</span><span class="hl str">&quot;</span><span class="hl opt">,