1. 공백 라인 제거
grep -ve '^ *$' from.txt > to.txt
2. 첫 글자까지의 공백 제거
sed 's/^ *//' from.txt > to.txt
또는 리다이렉션 대신 sed -i 옵션 사용
1. 공백 라인 제거
grep -ve '^ *$' from.txt > to.txt
2. 첫 글자까지의 공백 제거
sed 's/^ *//' from.txt > to.txt
또는 리다이렉션 대신 sed -i 옵션 사용
배치 파일 연산자 | 쉘 스크립트 동의어 | 뜻 |
---|---|---|
% | $ | 명령어줄 매개변수 접두사 |
/ | - | 명령어 옵션 플래그 |
\ | / | 디렉토리 패스 구분자 |
== | = | (같음) 문자열 비교 테스트 |
!==! | != | (다름) 문자열 비교 테스트 |
| | | | 파이프 |
@ | set +v | 현재 명령어를 에코하지 말 것 |
* | * | 파일명 "와일드 카드" |
> | > | 파일 재지향(덮어 쓰기) |
>> | >> | 파일 재지향(덧붙여 쓰기) |
< | < | 표준입력 재지향 |
%VAR% | $VAR | 환경 변수 |
REM | # | 주석 |
NOT | ! | 뒤에 나오는 테스트 부정 |
NUL | /dev/null | 명령어 출력을 없애기 위한 "블랙홀" |
ECHO | echo | 에코 (Bash 에는 옵션이 많이 있음) |
ECHO. | echo | 빈 줄 에코 |
ECHO OFF | set +v | 다음에 나오는 명령어를 에코하지 말 것 |
FOR %%VAR IN (LIST) DO | for var in [list]; do | "for" 루프 |
:LABEL | 없음 (필요치 않음) | 라벨 |
GOTO | 없음 (대신 함수를 씀) | 스크립트의 다른 곳으로 건너 뜀 |
PAUSE | sleep | 일정 간격을 두고 잠시 대기 |
CHOICE | case 나 select | 메뉴 선택 |
IF | if | if-test |
IF EXIST FILENAME | if [ -e filename ] | 파일이 존재하는지 확인 |
IF !%N==! | if [ -z "$N" ] | 변경가능한 매개변수인 "N"이 없다면 |
CALL | source 나 . (도트 연산자) | 다른 스크립트를 "포함" |
COMMAND /C | source 나 . (도트 연산자) | 다른 스크립트를 "포함"(CALL과 동일) |
SET | export | 환경 변수를 세트 |
SHIFT | shift | 명령어줄 변수 목록을 왼쪽으로 이동(shift) |
SGN | -lt or -gt | (정수) 부호(sign) |
ERRORLEVEL | $? | 종료 상태 |
CON | stdin | "콘솔"(표준입력) |
PRN | /dev/lp0 | (일반적인) 프린터 디바이스 |
LP1 | /dev/lp0 | 첫번째 프린터 디바이스 |
COM1 | /dev/ttyS0 | 첫번째 시리얼 포트 |
__attribute__ ((packed)) : 구조체 내의 최대 사이즈 데이터 타입으로 alignment 하지 않도록한다.
************************************************************
#include <stdio.h>
typedef struct _test_t_
{
unsigned char uc1;
unsigned char uc2;
unsigned long long ui1;
} test_t;
typedef struct _testp_t_
{
unsigned char uc1;
unsigned char uc2;
unsigned long long ui1;
} __attribute__ ((packed)) testp_t;
int main (void)
{
test_t t1;
testp_t t2;
printf ("test_t : %d\n", sizeof (t1));
printf ("testp_t : %d\n", sizeof (t2));
return 0;
}
************************************************************
[ryu2811@qwertyryu-home ~/work/src/test] ./kkk
test_t : 16
testp_t : 10
0 |
00 |
Ctrl-@ NUL |
|
64 |
40 |
@ |
1 |
01 |
Ctrl-A SOH |
65 |
41 |
A | |
2 |
02 |
Ctrl-B STX |
66 |
42 |
B | |
3 |
03 |
Ctrl-C ETX |
67 |
43 |
C | |
4 |
04 |
Ctrl-D EOT |
68 |
44 |
D | |
5 |
05 |
Ctrl-E ENQ |
69 |
45 |
E | |
6 |
06 |
Ctrl-F ACK |
70 |
46 |
F | |
7 |
07 |
Ctrl-G BEL |
71 |
47 |
G | |
8 |
08 |
Ctrl-H BS |
72 |
48 |
H | |
9 |
09 |
Ctrl-I HT |
73 |
49 |
I | |
10 |
0A |
Ctrl-J LF |
74 |
4A |
J | |
11 |
0B |
|
75 |
4B |
K | |
12 |
0C |
Ctrl-L FF |
76 |
4C |
L | |
13 |
0D |
Ctrl-M CR |
77 |
4D |
M | |
14 |
0E |
Ctrl-N SO |
78 |
4E |
N | |
15 |
0F |
Ctrl-O SI |
79 |
4F |
O | |
16 |
10 |
Ctrl-P DLE |
80 |
50 |
P | |
17 |
11 |
Ctrl-Q DCI |
81 |
51 |
Q | |
18 |
12 |
Ctrl-R DC2 |
82 |
52 |
R | |
19 |
13 |
Ctrl-S DC3 |
83 |
53 |
S | |
20 |
14 |
Ctrl-T DC4 |
84 |
54 |
T | |
21 |
15 |
Ctrl-U NAK |
85 |
55 |
U | |
22 |
16 |
Ctrl-V SYN |
86 |
56 |
V | |
23 |
17 |
Ctrl-W ETB |
87 |
57 |
W | |
24 |
18 |
Ctrl-X CAN |
88 |
58 |
X | |
25 |
19 |
Ctrl-Y EM |
89 |
59 |
Y | |
26 |
1A |
Ctrl-Z SUB |
90 |
5A |
Z | |
27 |
1B |
Ctrl-[ ESC |
91 |
5B |
[ | |
28 |
1C |
Ctrl-\ FS |
92 |
5C |
\ | |
29 |
1D |
Ctrl-] GS |
93 |
5D |
] | |
30 |
1E |
Ctrl-^ RS |
94 |
5E |
^ | |
31 |
1F |
Ctrl_ |
95 |
5F |
_ | |
32 |
20 |
Space |
96 |
60 |
` | |
33 |
21 |
! |
97 |
61 |
a | |
34 |
22 |
" |
98 |
62 |
b | |
35 |
23 |
# |
99 |
63 |
c | |
36 |
24 |
$ |
100 |
64 |
d | |
37 |
25 |
% |
101 |
65 |
e | |
38 |
26 |
& |
102 |
66 |
f | |
39 |
27 |
' |
103 |
67 |
g | |
40 |
28 |
( |
104 |
68 |
h | |
41 |
29 |
) |
105 |
69 |
i | |
42 |
2A |
* |
106 |
6A |
j | |
43 |
2B |
+ |
107 |
6B |
k | |
44 |
2C |
, |
108 |
6C |
l | |
45 |
2D |
- |
109 |
6D |
m | |
46 |
2E |
. |
110 |
6E |
n | |
47 |
2F |
/ |
111 |
6F |
o | |
48 |
30 |
0 |
112 |
70 |
p | |
49 |
31 |
1 |
113 |
71 |
q | |
50 |
32 |
2 |
114 |
72 |
r | |
51 |
33 |
3 |
115 |
73 |
s | |
52 |
34 |
4 |
116 |
74 |
t | |
53 |
35 |
5 |
117 |
75 |
u | |
54 |
36 |
6 |
118 |
76 |
v | |
55 |
37 |
7 |
119 |
77 |
w | |
56 |
38 |
8 |
120 |
78 |
x | |
57 |
39 |
9 |
121 |
79 |
y | |
58 |
3A |
: |
122 |
7A |
z | |
59 |
3B |
; |
123 |
7B |
{ | |
60 |
3C |
< |
124 |
7C |
| | |
61 |
3D |
= |
125 |
7D |
} | |
62 |
3E |
> |
126 |
7E |
~ | |
63 |
3F |
? |
127 |
7F |
|
새 시스템에서 계정을 만들때마다 쉘과 VIM의 설정이 항상 귀찮기만하다.
어디선가 잘 되어있는 vimrc 의 내용을 긁어왔다.