Bagaimana saya bisa menemukan nama umum untuk mesin terbang tertentu?

21

Terkadang, saya ingin tahu nama mesin terbang. Misalnya, jika saya melihat , saya mungkin ingin tahu apakah itu tanda hubung -, en-dash , em-dash , atau simbol minus . Apakah ada cara agar saya dapat menyalin-menempelkan ini ke terminal untuk melihat apa itu?

Saya tidak yakin apakah sistem saya tahu nama-nama umum untuk mesin terbang ini, tetapi tentu saja ada beberapa informasi (parsial) yang tersedia, seperti di /usr/share/X11/locale/en_US.UTF-8/Compose. Sebagai contoh,

<Multi_key> <exclam> <question>         : "‽"   U203D # INTERROBANG

Contoh lain mesin terbang: 🐄.

Sparhawk
sumber

Jawaban:

30

Coba utilitas unicode :

$ unicode ‽
U+203D INTERROBANG
UTF-8: e2 80 bd  UTF-16BE: 203d  Decimal: &#8253;
‽
Category: Po (Punctuation, Other)
Bidi: ON (Other Neutrals)

Atau uconvutilitas dari paket ICU :

$ printf %s ‽ | uconv -x any-name
\N{INTERROBANG}

Anda juga dapat memperoleh informasi melalui recodeutilitas:

$ printf %s ‽ | recode ..dump
UCS2   Mne   Description

203D         point exclarrogatif

Atau dengan Perl:

$ printf %s ‽ | perl -CLS -Mcharnames=:full -lne 'print charnames::viacode(ord) for /./g'
INTERROBANG

Perhatikan bahwa mereka memberikan informasi tentang karakter yang membentuk mesin terbang itu, bukan pada mesin terbang secara keseluruhan. Misalnya, untuk (e dengan menggabungkan aksen akut):

$ printf é | uconv -x any-name
\N{LATIN SMALL LETTER E}\N{COMBINING ACUTE ACCENT}

Berbeda dari karakter mandiri:

$ printf é | uconv -x any-name
\N{LATIN SMALL LETTER E WITH ACUTE}

Anda dapat meminta uconvuntuk menggabungkan kembali mereka (untuk mereka yang memiliki bentuk gabungan):

$ printf 'e\u0301b\u0301' | uconv -x '::nfc;::name;'
\N{LATIN SMALL LETTER E WITH ACUTE}\N{LATIN SMALL LETTER B}\N{COMBINING ACUTE ACCENT}

(é memiliki bentuk gabungan, tetapi tidak b́).

Stéphane Chazelas
sumber
Apa unicode? Saya tidak menginstalnya (dan tidak dapat menemukannya di Arch Linux repos). Juga, apa-apaan ini exclarrogatif? [EDIT: Saya juga mendapatkannya di sini, meskipun sistem saya bukan bahasa Prancis.]
Sparhawk
2
@Sparhawk, kontraksi exclamatifdan interrogatif. recodeditulis oleh seorang pria Perancis-Kanada di awal 80-an.
Stéphane Chazelas
2
@Sparhawk kassiopeia.juls.savba.sk/ ~ garabik/ software/ unicode - tersedia sebagai unicodepaket di Debian, tidak tahu tentang pengemasan di Arch.
Gilles 'SANGAT berhenti menjadi jahat'
1
@ PaŭloEbermann Mengapa printf lebih baik daripada gema? . Sekarang setelah Anda bertanya, Anda diharapkan membaca seluruh jawaban. Akan ada tes.
terdon
1
@Sparhawk %sseperti penampung, disebut penentu format (atau penentu konversi). printf akan menggantinya dengan argumen berikutnya, memperlakukannya sebagai string (sebagai lawan dari angka, misalnya) (umumnya bagaimana Anda harapkan dengan printf()fungsi C ). Lihat docs ( pubs.opengroup.org/onlinepubs/9699919799//basedefs/… ).
muru
5

Cara terbaik yang saya tahu adalah melalui Perl uniprops. Muncul dengan Unicode::Tusslemodul Perl . Anda dapat menginstalnya dengan

sudo perl -MCPAN -e 'install Unicode::Tussle'

Anda kemudian dapat menjalankannya pada mesin terbang apa pun yang ingin Anda uji:

$ uniprops  ‽
U+203D ‹‽› \N{INTERROBANG}
    \pP \p{Po}
    All Any Assigned InPunctuation Punct Is_Punctuation Common Zyyy Po P
       General_Punctuation Gr_Base Grapheme_Base Graph GrBase Other_Punctuation
       Pat_Syn Pattern_Syntax PatSyn Print Punctuation STerm Term
       Terminal_Punctuation Unicode X_POSIX_Graph X_POSIX_Print X_POSIX_Punct

$ uniprops  🐄
U+1F404 ‹🐄› \N{COW}
    \pS \p{So}
    All Any Assigned InMiscPictographs Common Zyyy So S Gr_Base Grapheme_Base Graph
       GrBase Misc_Pictographs Miscellaneous_Symbols_And_Pictographs Other_Symbol
       Print Symbol Unicode X_POSIX_Graph X_POSIX_Print
terdon
sumber
unipropsjuga menggunakan charnames :: viacode secara internal.
cuonglm
@cuonglm ya, tapi modul Tussle mencakup semua jenis alat mewah dan unipropsjauh, jauh lebih mudah untuk mengetik daripada memanggil modul secara eksplisit. Ini juga menyediakan lebih banyak info dari sekadar nama.
terdon
5

Anda dapat menggunakan fungsi Perl viacode dari modul charnames :

$ printf ‽ | perl -Mcharnames=:full -CLS -nle 'print charnames::viacode(ord)'
INTERROBANG
$ printf 🐄 | perl -Mcharnames=:full -CLS -nle 'print charnames::viacode(ord)'
COW

charnames pertama kali dirilis dengan perl v5.6.0


Dengan Perl 6 akan siap produksi pada hari Natal ini, ada baiknya untuk menyebutkannya di sini, karena ketika itu memiliki dukungan terbaik untuk karakter Unicode yang pernah saya lihat. Anda hanya perlu memanggil metode / rutin tidak bernama :

$ printf ‽ | perl6 -ne 'say .uniname'
INTERROBANG

(e dengan menggabungkan aksen akut) dan ékarakter mandiri memberi Anda:

# e with combining acute accent
$ printf é | perl6 -ne 'say .uniname'
LATIN SMALL LETTER E WITH ACUTE

# standalone é
$ printf é | perl6 -ne 'say .uniname'
LATIN SMALL LETTER E WITH ACUTE

( .uninameadalah singkatan untuk $_.uniname)

cuonglm
sumber
4

Anda dapat menggunakan unicode, yang juga menampilkan beberapa informasi lebih dari sekadar nama:

# unicode –
U+2013 EN DASH
UTF-8: e2 80 93  UTF-16BE: 2013  Decimal: &#8211;
–
Category: Pd (Punctuation, Dash)
Bidi: ON (Other Neutrals)
Marco
sumber
Apa unicode? Saya tidak menginstalnya (dan tidak dapat menemukannya di Arch Linux repos).
Sparhawk
3
@Sparhawk di Debian saya, itu hanya skrip Python yang diinstal oleh unicodepaket. Anda harus bisa mendapatkannya dengan mengunduh paket sumber dari repo Debian .
terdon
1

Buat skrip bash dengan ini:

#!/bin/bash
awk -F ":" '{print $2}' /usr/share/X11/locale/en_US.UTF-8/Compose | grep "$1" | awk -F "#" '{print $2}'

Beri nama sesuai keinginan Anda, misalnya, namechar dan berikan izin pengeksekusian.

Sekarang, Anda dapat menelepon misalnya:

./namechar @

dan hasilnya adalah:

COMMERCIAL AT
jcbermu
sumber
Ini bagus tetapi hanya cocok dengan susbset karakter, bukan unicode penuh. Misalnya, gagal 🐄, dan menghasilkan hasil berulang untuk . Yang terakhir bisa diperbaiki dengan menyalurkan melalui | sort -u.
terdon
Ya, @terdon benar. (Itu sebabnya saya mengatakan "sebagian" dalam pertanyaan.) File ini hanya berisi mesin terbang yang dipetakan ke Composekunci.
Sparhawk