Esbrineu per què menys és més ràpid que més comanda per a una navegació eficaç dels fitxers


More és una línia d'ordres *nix que s'utilitza per mostrar el contingut d'un fitxer en una consola. L'ús bàsic de l'ordre more és executar l'ordre contra un fitxer tal com es mostra a continuació:

Apreneu l'ordre més de Linux

# more /var/log/auth.log
Apr 12 11:50:01 tecmint CRON[6932]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 11:50:01 tecmint CRON[6932]: pam_unix(cron:session): session closed for user root
Apr 12 11:55:01 tecmint CRON[7159]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 11:55:01 tecmint CRON[7160]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 11:55:01 tecmint CRON[7160]: pam_unix(cron:session): session closed for user root
Apr 12 11:55:02 tecmint CRON[7159]: pam_unix(cron:session): session closed for user root
Apr 12 12:00:01 tecmint CRON[7290]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:00:01 tecmint CRON[7290]: pam_unix(cron:session): session closed for user root
Apr 12 12:05:01 tecmint CRON[7435]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:05:01 tecmint CRON[7436]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:05:01 tecmint CRON[7436]: pam_unix(cron:session): session closed for user root
Apr 12 12:05:02 tecmint CRON[7435]: pam_unix(cron:session): session closed for user root
Apr 12 12:09:01 tecmint CRON[7542]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:09:01 tecmint CRON[7542]: pam_unix(cron:session): session closed for user root
Apr 12 12:10:01 tecmint CRON[7577]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:10:01 tecmint CRON[7577]: pam_unix(cron:session): session closed for user root
Apr 12 12:15:01 tecmint CRON[7699]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:15:01 tecmint CRON[7700]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 12:15:01 tecmint CRON[7700]: pam_unix(cron:session): session closed for user root
Apr 12 12:15:01 tecmint CRON[7699]: pam_unix(cron:session): session closed for user root
....

Una altra manera d'utilitzar més ordres en conjunció (pipe) amb altres ordres, com ara l'ordre cat, tal com es presenta a l'exemple següent:

# cat /var/log/auth.log | more

Per navegar pel fitxer línia per línia, premeu la tecla Enter o premeu la tecla Barra espaiadora per navegar una pàgina a la vegada, sent la pàgina la mida actual de la pantalla del terminal. Per sortir de l'ordre només cal que premeu la tecla q.

Una opció útil de més comanda és l'interruptor -number que us permet establir el nombre de línies que ha de contenir una pàgina. Com a exemple, mostreu el fitxer auth.log com una pàgina de 10 línies:

# more -10 /var/log/auth.log

A més, podeu mostrar una pàgina a partir d'un número de línia específic mitjançant l'opció +número tal com es mostra a continuació:

# more +14 /var/log/auth.log
Apr 12 12:09:01 tecmint CRON[7542]: pam_unix(cron:session): session closed for user root
Apr 12 12:10:01 tecmint CRON[7577]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:10:01 tecmint CRON[7577]: pam_unix(cron:session): session closed for user root
Apr 12 12:15:01 tecmint CRON[7699]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:15:01 tecmint CRON[7700]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:15:01 tecmint CRON[7700]: pam_unix(cron:session): session closed for user root
Apr 12 12:15:01 tecmint CRON[7699]: pam_unix(cron:session): session closed for user root
Apr 12 12:16:01 tecmint mate-screensaver-dialog: gkr-pam: unlocked login keyring
Apr 12 12:17:01 tecmint CRON[7793]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:17:01 tecmint CRON[7793]: pam_unix(cron:session): session closed for user root
Apr 12 12:20:01 tecmint CRON[7905]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:20:01 tecmint CRON[7905]: pam_unix(cron:session): session closed for user root
Apr 12 12:25:01 tecmint CRON[8107]: pam_unix(cron:session): session opened for user root by (
uid=0)
Apr 12 12:25:01 tecmint CRON[8108]: pam_unix(cron:session): session opened for user root by (

Apreneu l'ordre menys de Linux

De la mateixa manera que l'ordre more, less us permet veure el contingut d'un fitxer i navegar pel fitxer. La diferència principal entre més i menys és que menys comanda és més ràpida perquè no carrega tot el fitxer alhora i permet la navegació pel fitxer utilitzant les tecles de pàgina amunt/avall.

In es pot utilitzar com a ordre autònoma emesa contra un fitxer o utilitzar-se amb canonades amb multitud d'ordres de Linux per reduir la sortida de la pantalla que us permetrà desplaçar-vos pels resultats.

# less /var/log/auth.log
# ls /etc | less

Podeu navegar per la línia del fitxer prement la tecla Enter. La navegació per pàgines es pot gestionar amb la tecla spacebar. La mida de la pàgina es representa per la mida actual de la pantalla del terminal. Per sortir de l'ordre escriviu la tecla q, de la mateixa manera que per a més ordre.

Una característica útil de less command és l'ús de l'opció /word-to-seach. Per exemple, podeu cercar i fer coincidir tots els missatges sshd d'un fitxer de registre especificant de manera interactiva la cadena /sshd.

Per mostrar un fitxer mirant a un número de línia específic, utilitzeu la sintaxi següent:

# less +5 /var/log/auth.log

Si necessiteu rastrejar el nombre de cada línia amb menys comanda, feu servir l'opció -N.

# less -N /var/log/daemon.log
      1 Apr 12 11:50:01 tecmint CRON[6932]: pam_unix(cron:session): session opened for user root by (uid=0)
      2 Apr 12 11:50:01 tecmint CRON[6932]: pam_unix(cron:session): session closed for user root
      3 Apr 12 11:55:01 tecmint CRON[7159]: pam_unix(cron:session): session opened for user root by (uid=0)
      4 Apr 12 11:55:01 tecmint CRON[7160]: pam_unix(cron:session): session opened for user root by (uid=0)
      5 Apr 12 11:55:01 tecmint CRON[7160]: pam_unix(cron:session): session closed for user root
      6 Apr 12 11:55:02 tecmint CRON[7159]: pam_unix(cron:session): session closed for user root
      7 Apr 12 12:00:01 tecmint CRON[7290]: pam_unix(cron:session): session opened for user root by (uid=0)
      8 Apr 12 12:00:01 tecmint CRON[7290]: pam_unix(cron:session): session closed for user root
      9 Apr 12 12:05:01 tecmint CRON[7435]: pam_unix(cron:session): session opened for user root by (uid=0)
     10 Apr 12 12:05:01 tecmint CRON[7436]: pam_unix(cron:session): session opened for user root by (uid=0)
     11 Apr 12 12:05:01 tecmint CRON[7436]: pam_unix(cron:session): session closed for user root

Per defecte, l'única manera de sortir de l'ordre menys és prement la tecla q. Per canviar aquest comportament i sortir automàticament del fitxer quan arribeu al final del fitxer, utilitzeu l'opció -e o -E:

# less -e /var/log/auth.log
# less -E /var/log/auth.log

Per obrir un fitxer a la primera ocurrència d'un patró, utilitzeu la sintaxi següent:

# less +/sshd /var/log/auth.log
Apr 12 16:19:39 tecmint sshd[16666]: Accepted password for tecmint from 192.168.0.15 port 41634 ssh2
Apr 12 16:19:39 tecmint sshd[16666]: pam_unix(sshd:session): session opened for user tecmint by (uid=0)
Apr 12 16:19:39 tecmint systemd-logind[954]: New session 1 of user tecmint.
Apr 12 16:19:48 tecmint sshd[16728]: Received disconnect from 192.168.0.15: 11: disconnected by user
Apr 12 16:19:48 tecmint sshd[16666]: pam_unix(sshd:session): session closed for user tecmint
Apr 12 16:20:01 tecmint CRON[16799]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 16:20:02 tecmint CRON[16799]: pam_unix(cron:session): session closed for user root
Apr 12 16:25:01 tecmint CRON[17026]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 12 16:25:01 tecmint CRON[17025]: pam_unix(cron:session): session opened for user root by (uid=0)

L'ordre anterior indica menys per obrir el fitxer auth.log a la primera coincidència de la cadena sshd.

Per afegir automàticament el contingut d'un fitxer obert amb l'ordre less, utilitzeu la combinació de tecles Maj+f o executeu menys amb la sintaxi següent.

# less +F /var/log/syslog

Això fa menys executar en mode interactiu (en directe) i mostrar contingut nou sobre la marxa mentre s'espera que s'escriguin dades noves al fitxer. Aquest comportament és similar a l'ordre tail -f.

En combinació amb un patró, podeu veure el fitxer de registre de manera interactiva amb la tecla Maj+f mentre coincideix amb una paraula clau. Per sortir del mode en directe només cal que premeu les tecles Ctrl+c.

# less +/CRON /var/log/syslog

Tant si decidiu utilitzar més o menys, que és una opció personal, recordeu que menys és més amb més funcions.