{"id":128,"date":"2023-08-31T08:42:02","date_gmt":"2023-08-31T06:42:02","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=128"},"modified":"2025-04-23T20:50:51","modified_gmt":"2025-04-23T18:50:51","slug":"1-7-5-recuperacion-de-comandos-mediante-el-historial-de-comandos","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/1-7-5-recuperacion-de-comandos-mediante-el-historial-de-comandos\/","title":{"rendered":"1.7.5. Recuperaci\u00f3n de comandos mediante el historial de comandos"},"content":{"rendered":"<p>Puede ser conveniente poder repetir un comando que ejecutasteis anteriormente en una sesi\u00f3n de <em>shell<\/em>. Recordar una l\u00ednea de comandos larga y compleja que escribisteis de manera incorrecta os puede ahorrar problemas. Afortunadamente, algunas caracter\u00edsticas del <em>shell<\/em> os permiten recordar l\u00edneas de comandos anteriores, editar esas l\u00edneas o completar una l\u00ednea de comando parcialmente escrita.<\/p>\n<p>El historial del <em>shell<\/em> es una lista de los comandos que hab\u00e9is ingresado antes. Usando el comando <code>history<\/code> en un <em>shell bash<\/em>, pod\u00e9is ver tus comandos anteriores. Luego, utilizando varias caracter\u00edsticas del <em>shell<\/em>, pod\u00e9is recuperar l\u00edneas de comando individuales de esa lista y cambiarlas como dese\u00e9is.<\/p>\n<p>Para probar un poco de edici\u00f3n de l\u00ednea de comandos, escribid lo siguiente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ ls \/usr\/bin | sort -f | less<\/pre>\n<p>Este comando muestra el contenido del directorio <code>\/usr\/bin<\/code>, ordena el contenido en orden alfab\u00e9tico (sin importar may\u00fasculas o min\u00fasculas) y pasa la salida a <code>less<\/code>. El comando <code>less<\/code> muestra la primera p\u00e1gina de salida, despu\u00e9s de lo cual pod\u00e9is navegar por el resto de la salida de una l\u00ednea (presiona <em>enter<\/em>) o a p\u00e1ginas (presiona la barra espaciadora) a la vez. Simplemente, presionad la tecla <em>q<\/em> cuando hay\u00e1is terminado. Ahora, supongamos que quer\u00e9is\u00a0cambiar vuestra l\u00ednea de comandos en el terminal de <code>\/usr\/bin<\/code> a <code>\/bin<\/code> y no quer\u00e9is escribir demasiado. Si os coloc\u00e1is en la l\u00ednea de comandos, y segu\u00eds los siguientes pasos, podr\u00e9is cambiar parte de la l\u00ednea de comandos:<\/p>\n<ul>\n<li>Presionad la flecha hacia arriba (\u2191). Esto muestra el comando m\u00e1s reciente de tu historial de <em>shell<\/em>. Prueba para presionar m\u00e1s de una vez.<\/li>\n<li>Presionad Ctrl+A. Esto mueve el cursor al principio de la l\u00ednea de comandos.<\/li>\n<li>Presionad Ctrl+E. Esto mueve el cursor al final de la l\u00ednea de comandos.<\/li>\n<li>Presionad Ctrl+F o la flecha derecha (\u2192). Repetid este comando varias veces para colocar el cursor debajo de la primera barra (\/).<\/li>\n<li>Presionad Ctrl+D. Escribid este comando cuatro veces para eliminar <code>\/usr<\/code> de la l\u00ednea.<\/li>\n<li>Presionad Enter. Ejecuta la l\u00ednea de comandos una vez que hag\u00e1is decido qu\u00e9 ejecutar.<\/li>\n<\/ul>\n<p>Mientras se edita una l\u00ednea de comandos, en cualquier momento pod\u00e9is escribir caracteres normales para a\u00f1adirlos a la l\u00ednea de comandos. Los caracteres aparecen en la posici\u00f3n del cursor de texto. Pod\u00e9is utilizar la flecha derecha \u2192, izquierda \u2190 para mover el cursor de un extremo a otro de la l\u00ednea de comandos. Tambi\u00e9n pod\u00e9is pulsar las teclas de flecha arriba \u2191 y abajo \u2193 para recorrer los anteriores comandos en la lista del historial para seleccionar una l\u00ednea de comandos para editar.<\/p>\n<p>Despu\u00e9s de escribir una l\u00ednea de comando, toda la l\u00ednea se guarda en la lista de historial de vuestro <em>shell<\/em>. La lista se almacena en el <em>shell<\/em> actual hasta que sal\u00eds del terminal. Adem\u00e1s, cada orden que se escribe en la l\u00ednea de comandos y se ejecuta, tenga sentido o no, se escribe en un archivo de historial, donde cualquier comando puede ser recordado para ser ejecutado nuevamente en otra sesi\u00f3n. Una vez que se recupera un comando, se puede modificar la l\u00ednea de comando, como se ha descrito anteriormente.<\/p>\n<p>Para ver vuestra lista de historial, utilizad el comando <code>history<\/code>. Escribid el comando sin opciones o seguido de un n\u00famero para listar esa cantidad de los comandos m\u00e1s recientes. Por ejemplo,<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ history 9<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">2012 date\r\n2013 date +'%d\/%m\/%y'\r\n2014 date +'%A, %B %d, %Y'\r\n2015 ls\r\n2016 ls Scripts\/\r\n2017 ls\r\n2018 echo $PATH\r\n2019 ls \/usr\/bin | sort -f | less\r\n2020 history 9<\/pre>\n<p>En lugar de simplemente ejecutar una l\u00ednea de comando del historial de inmediato, se puede recuperar una l\u00ednea en particular y editarla. Se muestran varios ejemplos.<\/p>\n<div class=\"featured featured-grey\"><\/p>\n<p><strong>Ejemplos<\/strong><\/p>\n<p><code>$ !n<\/code>: Ejecutar el n\u00famero de comando. Reemplazad la <em>n<\/em> con el n\u00famero de la l\u00ednea de comando y esa l\u00ednea se ejecutar\u00e1. Por ejemplo, as\u00ed es como pued\u00e9is repetir el comando de fecha mostrado como el n\u00famero de comando <em>2012<\/em> en la lista de historial anterior:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ !2012<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">date Wed 19 Apr 16:26:58 CEST 2023<\/pre>\n<p><code>$ !!<\/code>: Ejecutar comando anterior. Ejecuta la l\u00ednea de comando anterior. Aqu\u00ed os mostramos c\u00f3mo ejecutar inmediatamente ese mismo comando <code>date<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ !!<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">date Wed 19 Apr 16:29:06 CEST 2023<\/pre>\n<p><code>$ !?string?<\/code>: Ejecuta el comando que contiene un <code>string<\/code> (cadena). Esto ejecuta el comando m\u00e1s reciente que contiene una cadena de caracteres espec\u00edfica. Por ejemplo, pod\u00e9is ejecutar nuevamente el comando <code>date<\/code> buscando solo una parte de esa l\u00ednea de comando de la siguiente manera:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"mowtwo\">$ !?at?<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">date Wed 19 Apr 16:32:04 CEST 2023<\/pre>\n<p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Puede ser conveniente poder repetir un comando que ejecutasteis anteriormente en una sesi\u00f3n de shell. Recordar una l\u00ednea de comandos larga y compleja que escribisteis de manera incorrecta os puede ahorrar problemas. Afortunadamente, algunas caracter\u00edsticas del shell os permiten recordar l\u00edneas de comandos anteriores, editar esas l\u00edneas o completar una l\u00ednea de comando parcialmente escrita. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/128"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/comments?post=128"}],"version-history":[{"count":13,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/128\/revisions"}],"predecessor-version":[{"id":1346,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/pages\/128\/revisions\/1346"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/es\/wp-json\/wp\/v2\/media?parent=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}