`ack` non mostra i numeri di riga su un singolo file


16

Sto usando ack per cercare una stringa. Quando lo eseguo senza un argomento di file, ottengo i numeri di riga:

$> ack function
themes/README.txt
7:Drupal's sub-theme functionality to ensure easy maintenance and upgrades.

sites/default/default.services.yml
48:    # - The dump() function can be used in Twig templates to output information

...

Ma quando provo a specificare un file, non ottengo i numeri di riga.

$> ack function themes/README.txt
Drupal's sub-theme functionality to ensure easy maintenance and upgrades.

Ho fatto qualche ricerca su Google per un interruttore, ma non ho trovato risultati. Come faccio a ottenere informazioni su come mostrare i numeri di riga sui risultati di un singolo file?

Risposte:


21

Quando non fornisci alcun file, ackcercherà tutti i file nella directory e nelle sottodirectory correnti. Se un file contiene un motivo corrispondente, ackstampa quel nome file, il numero di linea e la linea che corrisponde al motivo.

Questo comportamento non si applica per un file (vedere la documentazione di ack , cercare l' -Hopzione).

Dal momento ackche quando non è presente la -nriga delle opzioni grep, che stamperà la riga abbinata al relativo numero di riga, hai due possibilità per aggirare questo problema.

Forzare il acknome file di stampa con -H:

ack -H pattern file

o passando /dev/nullcome secondo file:

ack pattern file /dev/null

7

Puoi provare con l'opzione --with-filename:

ack --with-filename 'function' themes/README.txt

Questo problema viene sollevato come bug e il problema è stato spostato qui .


5

Dovrebbe esserci un'opzione per questo. Ma se non lo è, puoi indurti acka pensare che ci sono due file da cercare, passando un extra /dev/nullsulla riga di comando:

ack function themes/README.txt /dev/null

In una nota a margine, lo stesso trucco può essere usato per farti grep(1)mostrare un nome file anche quando stai cercando un singolo file:

grep function themes/README.txt /dev/null
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.