Ха! Не ждали? Ща будет кринж, но кринж просветит тех, кто глубоко копается в жопах линукса. Ну а если решил провести выходной на изи, оно нахуй тебе не всралось. Короче… У кодировки ASCII есть особенность:
a -> 01*1*00001 A -> 01*0*00001
b -> 01*1*00010 B -> 01*0*00010
c -> 01*1*00011 C -> 01*0*00011
d -> 01*1*00100 D -> 01*0*00100
e -> 01*1*00101 E -> 01*0*00101
f -> 01*1*00110 F -> 01*0*00110
g -> 01*1*00111 G -> 01*0*00111
h -> 01*1*01000 H -> 01*0*01000
i -> 01*1*01001 I -> 01*0*01001
j -> 01*1*01010 J -> 01*0*01010
k -> 01*1*01011 K -> 01*0*01011
l -> 01*1*01100 L -> 01*0*01100
m -> 01*1*01101 M -> 01*0*01101
n -> 01*1*01110 N -> 01*0*01110
o -> 01*1*01111 O -> 01*0*01111
p -> 01*1*10000 P -> 01*0*10000
q -> 01*1*10001 Q -> 01*0*10001
r -> 01*1*10010 R -> 01*0*10010
s -> 01*1*10011 S -> 01*0*10011
t -> 01*1*10100 T -> 01*0*10100
u -> 01*1*10101 U -> 01*0*10101
v -> 01*1*10110 V -> 01*0*10110
w -> 01*1*10111 W -> 01*0*10111
x -> 01*1*11000 X -> 01*0*11000
y -> 01*1*11001 Y -> 01*0*11001
z -> 01*1*11010 Z -> 01*0*11010
Давай установим его, например в 0 или 1:
printf '%b %b\n' $( printf '\\%03o \\%03o' 65 $((65 ^ 32)) )
printf '%b %b\n' $( printf '\\%03o \\%03o' 97 $((97 ^ 32)) )
printf '%s\n' $((65 ^ 32))
printf '%s\n' $((97 ^ 32))
Нихуясе? Да!
Позырить таблицу ascii: man ascii
А для изменения регистра в баше есть удобные конструкции:
( a='abc'; echo "${a^}" )
( a='ABC'; echo "${a,}" )
( a='abc'; echo "${a^^}" )
( a='ABC'; echo "${a,,}" )
Эти команды в скобках запускаются в подоболочке, чтобы не гадить в текущее окружение самой оболочки. Но ты это и так прекрасно знаешь
Да будет так!








Комментарии