{"id":170,"date":"2012-01-12T16:21:08","date_gmt":"2012-01-12T18:21:08","guid":{"rendered":"http:\/\/linuxrs.com.br\/?p=170"},"modified":"2012-01-12T16:21:08","modified_gmt":"2012-01-12T18:21:08","slug":"prevenindo-acidentes-com-o-comando-rm","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=170","title":{"rendered":"Prevenindo acidentes com o comando RM."},"content":{"rendered":"<p><strong>Solu\u00e7\u00f5es sugeridas<\/strong><\/p>\n<h1>RM &#8211; Prevenindo Acidentes<\/h1>\n<p>T\u00f3picos:<\/p>\n<ul>\n<li>Comando &#8216;rm&#8217; n\u00e3o tem &#8216;trash&#8217; (lixeira)<\/li>\n<li>Solu\u00e7\u00e3o n\u00ba 1 &#8211; interactive mode<\/li>\n<li>Solu\u00e7\u00e3o n\u00ba 2 &#8211; um alias para o interactive mode<\/li>\n<li>Solu\u00e7\u00e3o n\u00ba 3 &#8211; trash-cli &#8211; lixeira na linha de comando<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h1>Comando rm n\u00e3o tem trash<\/h1>\n<p>Cuidado!!! No terminal, na linha de comando, quando se digita:<\/p>\n<p><strong># rm segredo_mundial.txt<\/strong><\/p>\n<p>O arquivo &#8220;segredo_mundial.txt&#8221; j\u00e1 era. N\u00e3o tem mais o que fazer.<\/p>\n<h1>Solu\u00e7\u00e3o n\u00ba 1 &#8211; Interactive Mode<\/h1>\n<p>Sempre use a op\u00e7\u00e3o &#8216;-i&#8217;, ou &#8216;&#8211;interactive&#8217; com o comando &#8216;rm&#8217; e torne isto um h\u00e1bito. Esta op\u00e7\u00e3o se prontifica a nos perguntar se realmente desejamos deletar o arquivo:<\/p>\n<p><strong>$ rm -i segredo_mundial.txt<br \/>\n$ rm &#8211;interactive segredo_mundial.txt<\/strong><\/p>\n<p>Cuidado com a flag &#8216;-f&#8217; ou &#8216;&#8211;force&#8217;. Com ela, as op\u00e7\u00f5es &#8216;-&#8216; ou &#8216;&#8211;interactive&#8217; se tornam in\u00fateis, ou seja, eles s\u00e3o completamente ignorados.<\/p>\n<p>H\u00e1 um truque que pode ser aplicado, digamos que temos um diret\u00f3rio contendo arquivos muito importantes. Podemos criar um arquivo chamado &#8216;-i&#8217; dentro deste diret\u00f3rio.<\/p>\n<p>Como o arquivo cont\u00e9m &#8216;-&#8216; no nome, n\u00e3o podemos simplesmente fazer &#8216;touch -i&#8217;, pois o comando &#8216;touch&#8217; vai pensar que estamos passando a op\u00e7\u00e3o &#8216;-i&#8217; como argumento, e o comando &#8216;touch&#8217; nem tem uma op\u00e7\u00e3o chamada &#8216;-i&#8217;.<\/p>\n<p>As duas poss\u00edveis maneiras de criar o tal arquivo est\u00e3o exemplificadas abaixo:<\/p>\n<p><strong>$ touch &#8212; -i<\/strong><\/p>\n<p>Ou:<\/p>\n<p><strong>$ touch .\/-i<\/strong><\/p>\n<p>A partir de agora, se voc\u00ea fizer:<\/p>\n<p><strong>$ rm -Rf *<\/strong><\/p>\n<p>O shell vai expandir o &#8216;-i&#8217; na linha de comando, de tal forma que seu comando na verdade se transforma em:<\/p>\n<p><strong>$ rm -Rf -i<\/strong><\/p>\n<p>Note que isto s\u00f3 funciona se voc\u00ea usar o &#8216;glob&#8217; (*). Se tentar deletar um arquivo por vez, o arquivo &#8216;-i&#8217; n\u00e3o vai te ajudar.<\/p>\n<p>Vamos aprender outro truque quando falarmos do programa &#8216;trash-cli&#8217;.<\/p>\n<p>Se quiser remover o arquivo &#8216;-i&#8217;, n\u00e3o basta fazer &#8216;rm -i&#8217; porque o &#8216;rm&#8217; tem de fato a op\u00e7\u00e3o &#8216;-i&#8217;. Ent\u00e3o &#8216;rm -i&#8217; \u00e9 o comando &#8216;rm&#8217;, seguido da op\u00e7\u00e3o &#8216;-i&#8217;; mas ainda falta dizer ao &#8216;rm&#8217; qual arquivo ou arquivos deletar, por que ele n\u00e3o sabe que &#8216;-i&#8217; \u00e9 um arquivo e n\u00e3o uma op\u00e7\u00e3o.<\/p>\n<p>Usamos uma t\u00e9cnica similar \u00e0 que usamos para criar o arquivo. As duas solu\u00e7\u00f5es poss\u00edveis s\u00e3o:<\/p>\n<p><strong>$ rm &#8212; -i<\/strong><\/p>\n<p>Ou:<\/p>\n<p><strong>$ rm .\/-i<\/strong><\/p>\n<h1>Solu\u00e7\u00e3o n\u00ba 2 &#8211; um alias para o Interactive Mode<\/h1>\n<p>A solu\u00e7\u00e3o n\u00ba 2 consiste em colocar o que aprendemos acima em um &#8216;alias&#8217; (um apelido em Ingl\u00eas).<\/p>\n<p>Vamos criar um alias que faz com que o comando &#8216;rm&#8217; sempre seja executado com &#8216;rm &#8211;interactive&#8217;:<\/p>\n<p><strong>$ alias rm=&#8217;rm &#8211;interactive&#8217;<\/strong><\/p>\n<p>Digite o comando acima em um terminal e tente remover um arquivo (n\u00e3o teste com nada que seja importante). Para testar, rode apenas &#8216;rm arquivo.txt&#8217; e voc\u00ea vai notar que ele pergunta se temos mesmo certeza de que queremos deletar o arquivo em quest\u00e3o.<\/p>\n<p>Se voc\u00ea gostou da ideia, coloque o comando que cria o &#8216;alias&#8217; no &#8220;~\/.bashrc&#8221;. Para que o &#8216;alias&#8217; entre em vigor, feche e abra o terminal novamente ou rode o comando:<\/p>\n<p><strong>$ source ~\/.bashrc<\/strong><\/p>\n<p>A partir de agora, toda vez que voc\u00ea digitar &#8216;rm&#8217;, o Bash interpreta o &#8216;alias&#8217; e na verdade vai executar &#8216;rm &#8211;interactive&#8217;.<\/p>\n<h1>Solu\u00e7\u00e3o n\u00ba 3 &#8211; trash-cli &#8211; lixeira na linha de comando<\/h1>\n<p>Instale o programa &#8216;trash-cli&#8217;. Enquanto escrevo este documento, &#8216;trash-cli&#8217; est\u00e1 dispon\u00edvel pelo AUR para o Arch <a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a>, mas pesquisas pela WEB fazem acreditar de que j\u00e1 est\u00e1 nos reposit\u00f3rios oficiais de muitas distribui\u00e7\u00f5es.<\/p>\n<p>O programa &#8216;trash-cli&#8217; vem com tr\u00eas comandos principais:<\/p>\n<p>1. trash-empty: esvazia a lixeira;<br \/>\n2. trash-list: lista os arquivos da lixeira;<br \/>\n3. trash-put: manda arquivos para a lixeira.<\/p>\n<p>Para mais informa\u00e7\u00f5es, leia o Help de cada uma das varia\u00e7\u00f5es do &#8216;trash-cli&#8217;:<\/p>\n<p><strong> $ trash-empty &#8211;help<br \/>\n$ trash-list &#8211;help<br \/>\n$ trash-put &#8211;help<\/strong><\/p>\n<p>O problema agora \u00e9 criar o h\u00e1bito de usar o &#8216;trash-cli&#8217; em vez do bom e velho &#8216;rm&#8217;. Sim, porque n\u00f3s instalamos o programa, mas por for\u00e7a do h\u00e1bito \u00e9 bem prov\u00e1vel que continuemos usando o &#8216;rm&#8217; sem nem notar.<\/p>\n<p>Vamos ent\u00e3o usar um truque para, digamos, desabilitar o comando &#8216;rm&#8217;. O truque consiste em, novamente, criar um &#8216;alias&#8217;. Mas antes disso vamos falar de coment\u00e1rios no Bash (com poucos ajustes todas essas dicas funcionam em outros shells).<\/p>\n<p>Um coment\u00e1rio no Bash inicia com &#8216;#&#8217;. Rode o seguinte comando direto do terminal:<\/p>\n<p><strong>$ # echo &#8216;Hello, world.&#8217;<\/strong><\/p>\n<p>Essa linha n\u00e3o vai executar nada. \u00c9 um coment\u00e1rio apenas. Tente esta outra:<\/p>\n<p><strong>$ echo &#8216;Hello, &#8216; # world&#8217;<\/strong><\/p>\n<p>O &#8216;echo&#8217; acima s\u00f3 vai mostrar &#8216;Hello, &#8216;. O resto da linha \u00e9 coment\u00e1rio.<\/p>\n<p>Ent\u00e3o, a ideia \u00e9 criar um &#8216;alias&#8217; que comente o &#8216;rm&#8217;. \u00c9 f\u00e1cil:<\/p>\n<p><strong>$ alias rm=&#8217;# rm&#8217;<\/strong><\/p>\n<p>Pode colocar o &#8216;alias&#8217; no &#8220;~\/.bashrc&#8221; e rodar &#8216;source ~\/.bashrc&#8217;. A partir de agora, toda vez que voc\u00ea digitar &#8216;rm&#8217;, ele simplesmente nem sequer ser\u00e1 executado, pois agora ele foi &#8216;comentado&#8217;.<\/p>\n<p>No ent\u00e3o, h\u00e1 alguns pontos a serem considerados:<\/p>\n<p>1. Se voc\u00ea executar outro Shell a partir do shell que cont\u00e9m o &#8216;alias&#8217;, o outro shell n\u00e3o vai herdar o &#8216;alias&#8217;, portanto, &#8216;rm&#8217; desse outro shell vai funcionar normalmente.<\/p>\n<p>2. Importante: voc\u00ea executou essas opera\u00e7\u00f5es no terminal como usu\u00e1rio, e configurou o &#8220;~\/.bashrc&#8221; em n\u00edvel de usu\u00e1rio. A conta do Root continua com as configura\u00e7\u00f5es default. Como o Root \u00e9 um usu\u00e1rio ainda mais cr\u00edtico no sistema, considere colocar essas configura\u00e7\u00f5es no &#8220;\/root\/.bashrc&#8221;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Solu\u00e7\u00f5es sugeridas RM &#8211; Prevenindo Acidentes T\u00f3picos: Comando &#8216;rm&#8217; n\u00e3o tem &#8216;trash&#8217; (lixeira) Solu\u00e7\u00e3o n\u00ba 1 &#8211; interactive mode Solu\u00e7\u00e3o n\u00ba 2 &#8211; um alias para o interactive mode Solu\u00e7\u00e3o n\u00ba 3 &#8211; trash-cli &#8211; lixeira na linha de comando &nbsp; Comando rm n\u00e3o tem trash Cuidado!!! No terminal, na linha de comando, quando se [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[51],"tags":[60,63,14,61,62,64],"class_list":["post-170","post","type-post","status-publish","format-standard","hentry","category-linux-linuxrs","tag-comandos","tag-linha-de-comando","tag-linux","tag-rm","tag-rm-rf","tag-shell"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=170"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/170\/revisions"}],"predecessor-version":[{"id":171,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/170\/revisions\/171"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}