Type null character in terminal

2020-03-01 07:56发布

问题:

Is there a way to type the null character in the terminal?

I would like to do something like:

this is a sentence (null) test123

回答1:

In Linux, any special character can be literally inserted on the terminal by pressing Ctrl+v followed by the actual symbol. null is usually ^@ where ^ stands for Ctrl and @ for whatever combination on your keyboard layout that produces @.

So on my keyboard I do: Ctrl+v followed by Ctrl+Shift+@ and I get a ^@ symbol with a distinguished background color. This means it's a special character and not just ^ and @ typed in.

Edit: Several years later and a few input variations implemented by different terminals using keyboard layouts that require pressing Shift to access @.

  • Ctrl+v followed by Ctrl+Shift+@
  • Ctrl+v followed by Shift+@ without releasing Ctrl.
  • Ctrl+Shift+v followed by @ without releasing Ctrl+Shift.
  • Ctrl+Shift release Shift and re-press Shift keeping both Ctrl+Shift pressed followed by v and finally @. Seen in some terminals that implement a special input on Ctrl+Shift.


回答2:

Apparently you can type this character with ^@ on some character sets. This wikipedia article on the null character may be helpful.



回答3:

$ echo -e "this is a sentence \0 test123"
this is a sentence  test123

The null here ^^ IS NOT visible

$ echo -e "this is a sentence \0 test123" | cat --show-nonprinting
this is a sentence ^@ test123

But it IS here ^^

But maybe you did not want this for a script?



回答4:

As with the abort command (Ctrl-C), in most terminals just hit Ctrl-@ (with the use of Shift on my keyboard).