bash / shell 스크립트에서 ⏰와 같은 UTF-8 문자를 사용해야합니까?


36

다음과 bash같이 시작하면 간단한 코드가 내 컴퓨터에서 예상대로 작동합니다 .

function ⏰(){
 date
}

이것을 사용하는 다른 사람들에게 문제가 있습니까, 아니면 보편적입니까?

다른 소스 코드에서 이와 같은 것을 본 적이 없기 때문에 궁금합니다.

편집 : 무한한 가능성이 있으며 예를 들어 이모티콘을 사용하여 기능 역할을 신속하게 구별하는 데 사용할 수 있습니다.

파일을 수정하거나 제거 할 수있는 항목의 💣, 진행중인 작업의 경우 🔧, 대화식 메뉴의 경우 📃

우리는 그 모든 것에 대한 표준을 만들어야한다고 생각하지만 흥미로운 아이디어 인 것 같습니다.
~ 5 자의 임의의 행은 코드가 수행하는 작업을 이해하는 데 도움이 될 수 있습니다. (물론 읽는 법을 배워야합니다.)

더 많은 편집 : 나는 그것을 쐈다. 현재로서는 모든 기능을 편집기 (또는 cat myscript.sh|grep function) 에서 접 으면 다음과 같이 보입니다. (내 유니 코드는 geany여기에 비해 터미널 에서 훨씬 나아 보입니다 .)

function _1(){
function ⬚⬚_2(){
function ⬚⬚⬚_📃_D(){
function ⬚⬚⬚⬚_📃_X(){
function ⬚⬚⬚⬚⬚_📃_Y(){
function ⬚⬚⬚⬚⬚⬚__P(){
function ⬚⬚⬚⬚_📃_Z(){
function ⬚⬚⬚⬚⬚__U(){
function ⬚⬚⬚⬚⬚__O(){

나는 이상한 들여 쓰기 ⬚를 사용하여 기능이 서로 어떻게 관련되어 있는지 보여주고 📃 / ❓ 기호를 사용하여 역할을 명확하게 구분합니다. (물론 이것은 실제 함수 이름이 아니며 끝에 임의의 문자를 넣지 만 관계없이 명확하게 볼 수 있습니다.)


8
나는 레트로 호환 이유로 안전하지 않다고 말하고 싶습니다. 오래된 서버에서 스크립트를 사용해야하는 경우 bash 이모티콘 지원이 최근이므로 작동하지 않을 수 있습니다. 하지만 최근 리눅스에서는 괜찮을 것입니다.
Kiwy

18
@Ipor 아니요, 유니 코드를 의미하며 유니 코드의 "Uni"는 유니버설을 나타냅니다.
Stephen Kitt

5
보편적이되기 위해 "범용"을 어떻게 원하십니까? Cygwin에서 일반적인 UTF-8 대 UTF-16 문제가 있습니까? 현대의 IBM z / OS 시스템 서비스에서 여전히 EBCDIC 문자 세트를 처리해야합니까? 8 비트 바이트를 가장 작은 단위로 사용하지 않는 역사적 유닉스 컴퓨터에서? POSIX 제한은 이유가 있습니다 ...
dirkt

6
기능 이름은 POSIX에 따라 휴대용 문자 세트의 문자로 구성되어야합니다. "범용"이 "모든 쉘"을 의미하는 경우, 이런 의미에서 보편적이지 않을 것입니다.
Kusalananda

6
쉘 스크립트에서 <whatever>를 수행하는 것이 안전한지 묻는다면 대답은 아마도 아니오입니다. 도대체 안해도 echo $foo안전합니다.
Matteo Italia

답변:


55

이에 대한 유용한 지침은 대부분의 유닉스 계열 시스템에 의해 구현되는 표준 제품군 인 "휴대용 운영 체제 인터페이스"(POSIX)입니다. 일반적으로 쉘 스크립트를 POSIX가 지정한 기능으로 제한하여 다른 쉘과 플랫폼에서 사용 가능하도록하는 것이 좋습니다.

"Shell Command Language"함수 정의에 대한 POSIX 사양에 따르면 :

함수 이름은 fname입니다. 응용 프로그램은 그것이 이름인지 확인해야합니다 (IEEE Std 1003.1-2001의 기본 정의 볼륨, 섹션 3.230, 이름 참조 ). 구현시 함수 이름의 다른 문자를 확장명으로 사용할 수 있습니다.

"이름"정의에 대한 링크를 따라 :

쉘 명령 언어에서 휴대용 문자 세트 의 밑줄, 숫자 및 알파벳으로 만 구성된 단어 .

해당 문자 세트에는 U0000과 U007E 사이의 문자 만 포함됩니다.
따라서 "⏰"(U23F0)와 같은 문자는 POSIX 호환 식별자에서 유효하지 않습니다.

당신의 껍질은 그것들을 받아 들일 수 있지만, 다른 사람들도 그렇게 할 것이라고 보장하지는 않습니다 .
다른 플랫폼 및 소프트웨어 버전에서 스크립트를 사용하려면 이와 같은 비 호환 식별자를 사용하지 않아야합니다.


18
일반적으로 표준 키보드에 키가없는 경우 사용하지 마십시오.
SnakeDoc

6
@SnakeDoc youtube.com/watch?v=3AtBE9BOvvk "표준"그림 이모티콘 키보드;)
Jorn

9
LOL ... "당신은 일반 소매점에서 키보드를 구입할 수없는 경우"내가 말한해야 어쩌면 @Jorn
SnakeDoc

4
@SnakeDoc 좋은 시작입니다. 그러나 이것을 입력하는 키보드에는 £, €의 키가 있으며 휴대용 문자 세트 외부에 있습니다. 더 심각하게, 일부 동료들은 ä, ö, ü, è, é 및 ß가있는 키보드를 가지고 있습니다. 모두 문자이지만 휴대용 기능 이름에는 적합하지 않습니다.
Martin Bonner는 Monica

2
POSIX 호환이지만 POSIX 제한은 없습니까?
bob dylan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.