Na página apt-cache
man:
search regex...
search performs a full text search on all available package lists for the
POSIX regex pattern given, see regex(7). It searches the package names
and the descriptions for an occurrence of the regular expression and
prints out the package name and the short description, including virtual
package names. If --full is given then output identical to show is
produced for each matched package, and if --names-only is given then the
long description is not searched, only the package name is.
Separate arguments can be used to specify multiple search patterns that
are and'ed together.
Observe que ele indica regex(7)
. Então, quando você diz apt-cache
para procurar por algo, você está fornecendo uma expressão regular. O $
em uma expressão regular significa que você deseja corresponder, ancorado ao final das strings.
Então, se tivermos o valor desktop$
, corresponderemos somente as strings em que desktop
estava no final das sequências, como:
- esta é uma área de trabalho
- esta é uma string muito longa com área de trabalho
Mas não corresponderia a strings como:
- esta é a área de trabalho na janela
- esta é outra área de trabalho na janela
No seu caso, a string desktop
na descrição do xjig, embora no final de uma linha na descrição, não está no final do valor do campo de descrição.
Exemplo
Aqui está a descrição do xjig.
Description-en: An X11 jigsaw puzzle
xjig is a puzzle that tries to replicate a jigsaw puzzle on the screen
as closely as possible. Any GIF, JPEG or PPM image may be loaded and cut
into pieces. The goal (as with any jigsaw puzzle) is to reassemble the
original picture.
.
Tiles may be freely rotated by use of the mouse, flipped (for
double-sided puzzles) and even shown as shaped windows on the desktop
(fast machine/video card recommended for the latter!). An example image
is provided in /usr/share/games/xjig .
Se eu pesquisar todas as strings que terminarem com xjig .$
.
$ apt-cache search 'xjig \.$'
xjig - An X11 jigsaw puzzle
Lembre-se de que o valor da descrição é apenas uma cadeia longa que é envolvida nesse ponto, portanto, embora "desktop" esteja no final de uma linha, ela não está no final do valor da descrição.
Alternativa
Tendo em vista que você está procurando a palavra desktop
, você pode procurar a sequência com espaços de ambos os lados ( \s
) ou limites de palavras ( \b
).
$ apt-cache search '\sdesktop\s' | grep xjig
xjig - An X11 jigsaw puzzle
$ apt-cache search '\bdesktop\b' | grep xjig
xjig - An X11 jigsaw puzzle
Entendendo as âncoras regulares
Talvez usar grep
para ver o que uma âncora faz em um regex ajudaria.
área de trabalho não no final
$ echo "this is a desktop string" | grep "desktop$"
$
área de trabalho no final
$ echo "this is a desktop" | grep "desktop$"
this is a desktop
O elogio a $
para a ancoragem de correspondências no final das sequências é o ^
para as correspondências de ancoragem ao início.
área de trabalho não no começo
$ echo "this is a desktop" | grep "^desktop"
$
área de trabalho no início
$ echo "desktop this is a desktop" | grep "^desktop"
desktop this is a desktop