The symbol '|' is unusable in terminal

Hello, everyone!

I’m new to the forum, and to linux itself, but I noticed that every time that I try to use the ‘|’ pipe symbol, linux terminal just doesn’t understand it. I’m using an Italian mapping on my keyboard (as it should be), but it seems that in it, the mapping of | pipe is not the same as in standard linux mapping. How can I check, and possibly correct this problem? Is there even a way for me to fix it in the OS itself? Or perhaps submit a bug anywhere?

Thank you.

What happens if you type it in? Can you copy the actual symbol and try?


For example, in my ubuntu server VM, if I enter ‘lsmod | grep vboxguest’, ubuntu responds ‘Usage: lsmod’. I need to fix the key mapping, it’s just wrong.

Hi @VicenteMMOS, and welcome!

I believe this will help:

And if you still struggle, please the output of:

localectl status

If you can type the char then the terminal understand it.

If you are connecting a remote system using ssh - there could be an issue - yet again - if you can type the | symbol in the remote terminal - the char is sent correct.

It is next to impossible to suggest what should make the the symbol lost in stranslation.

In fact it appears more like the output of the second command is empty thus there is nothing to search for with thus yielding a fallback to the usage screen - but that is just a guess.

Try lsmod without piping the output, see if vboxguest is in the output - thus eliminating that idea.

Just because you have the issue it is not likely to be a bug.

You should really look at your configurations - also supply your system info - so we may be better equipped to provide some hints.

inxi -Fay | curl -F'file=@-'
localectl status | curl -F'file=@-'
1 Like


here’s my system:

localectl status                                                                          ✔  1m 43s  
System Locale: LANG=en_US.UTF-8
    VC Keymap: it2
   X11 Layout: it

I checked the guide you sent, and everything seemed fine, at least in the locale.gen file. Here’s a snippet from my file:

# Locales enabled by Calamares
en_US.UTF-8 UTF-8
it_IT.UTF-8 UTF-8

All other locales in the list are commented out, so this should work fine, right? This is how it was already before i ran ‘sudo locale-gen’.

As @linux-aarhus said, it’s likely that grep returned an empty string.

Try typing this:

ls ~ | wc -l

If you get a number then the pipe works.

Can you test on your actual hardware, not some virtual machine, ssh or so?

Ok, I tried running the ‘inxi -Fay | curl -F’file=@-’’ line both in my Manjaro host as in my Ubuntu Server guest (VM). Both OS’s gave this result

inxi -Fay | curl -F'file=@-'                                                          ✔

So, it seems like | actually works. Thanks for the help =) Is it ok if I open another topic for a different question?

That is the preferred way of doing things, yes.