2017년 10월 21일 토요일

[포인터] *p++,*(p)++, ++*p,*++p | &*&i, &&*i, *&&i

#include <stdio.h>

int main(){
  int i=100;
  int j= 200;
  int* p;
  int *q;
  p = &i;
  q = &j;
  //p = &*&i; //이건 됨. int 변수의 주소 -> 포인트해서 다시 그 변수 -> 다시 int 변수의 주소
  //p = &&*i; //이건 안됨. 포인터가 아닌거에 * 를 붙이는것임
  // p = *&&i; //int 변수의 주소 -> 주소의 주소(오류) -> 포인트 해도 어딘지 모름
  // i = (int)p - (int)q;//p 와 q 가 정의되어있으면 정수형으로 캐스팅해서 주소 차이만큼 i 에 저장됨
  //i = (int)p;//p 가 어떤 변수를 포인트 하고 있으면 가리키고 있는 변수의 주소
  // q = &p;//p 포인터의 주소
  // *q = &j;//int 형에 int* 대입할려함. 오류
  // i =(*&)j;//괄호 우선 연산인데 괄호 안에 연산들을 적용할 변수가 없어서 오류
  // i=*&*&j; //j 의 값
  //*p++변수에 *p 값 넘겨주고 p가 포인트 하는 주소의 주소값 증가
  // (*p)++ 변수에 *p 값 넘겨주고 p가 포인트 하는 변수의 값이 +1
  //++*p == ++(*p) 변수에 p 가 포인트 하는 변수의 값에 +1 한 후 그 값은 넘김
  //*++p //p 가 포인트 하는 주소+1 하고 그 주소에 있는 값을 넘김
  return 0;
}

2017년 4월 8일 토요일

질문 백업

var router = express.Router();
router.route('/process/login').post(user.login);
router.route('/process/adduser').post(user.adduser);
router.route('/process/listuser').post(user.listuser);
app.use('/', router);

여기서
app.use('/', router);
var router = express.Router();
router.route('/process/login').post(user.login);
router.route('/process/adduser').post(user.adduser);
router.route('/process/listuser').post(user.listuser);

이렇게 쓰면 오류 나는 이유가 뭘까

오류

C:\Users\장원준\Desktop\upProject\node_modules\express\lib\router\index.js:458
      throw new TypeError('Router.use() requires middleware function but got a ' + gettype(fn));
      ^

TypeError: Router.use() requires middleware function but got a undefined
    at Function.use (C:\Users\장원준\Desktop\upProject\node_modules\express\lib\router\index.js:458:13)
    at EventEmitter.<anonymous> (C:\Users\장원준\Desktop\upProject\node_modules\express\lib\application.js:220:21)
    at Array.forEach (native)
    at EventEmitter.use (C:\Users\장원준\Desktop\upProject\node_modules\express\lib\application.js:217:7)
    at Object.<anonymous> (C:\Users\장원준\Desktop\upProject\app3.js:49:5)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:393:7)
    at startup (bootstrap_node.js:150:9)
    at bootstrap_node.js:508:3

2017년 3월 25일 토요일

오늘의 삽질노트 - 오타, 암호화

1. 오타
내가 오타 때문에 하루종일을 진도를 못나간건 이번이 처음인거같다
password 를 pasword 라 써놓고 하루종일 못보다니..
찾고나서 ㄹㅇ 현자타임..ㅁㄴㅇㄻㄴㅇㄻㅇㄻㅇ

2. 암호화
생활코딩보면서 nodejs 에서 md5 랑 sha256 이란걸 배움
엄청 신기하긴하더라 암호화의 코딱지의 10분에 1정도의 크기정도를 배운느낌이지만 엄청 신선했음.
[추가]
왜 계속 객체에서 프로퍼티 불러오는대 오류가나지.. 왜지 왜!@!!

2017년 3월 19일 일요일

프로그래밍 공부할떄 도움되는 사이트 모음

기본적으로 갑 OF 갑은 갓 '구글' 입니다. 영어로 검색하면 왠만하면 답을 찾을수있음
밑에 소개하는 사이트들을 구글말고도 좋은 사이트들이니까 한번쯤은 이용해보시길

1. Stack overflow
프로그래머 최대 Q&A 사이트. 엄청많은 질문&답변양을 자랑함. 보통 구글링해서 이사이트로 들어가는 경우도 많음.
https://stackoverflow.com/
2. 생활코딩
초기에 언어 배울떄 매우 도움됨. 강의력 갑(대신 2배속 추천). 입문자 전용

https://opentutorials.org/course/1
3.w3schools, 모질라 개발자 네트워크
웹 배울떄 질문들을 구글링해보면 대부분 일로들어감
웹 질문을 구글에 치면 여기 아니면 모질라 개발자 네트워크로 가더라
개인적으론 w3schools 랑 모질라 개발자 네트워크 둘다 씀.'
https://www.w3schools.com/
https://developer.mozilla.org/ko/

4. github
나도 인제 써야되는대 어캐쓸지 모르갯다..ㅠㅠ 공부해야대는대..
워낙유명하니 링크는 패쓰

솔직히 말해서 어딜들어가서 검색하던
처음시작은 ' 구글 ' 에서 검색하면댐. 구글이 다 길을 알려줌
역시 기승전구글인가..

2017년 3월 13일 월요일

강의 요약 - 2주차 백업

용어 정리
1.     Vi : UNIX의 대표적 문서 편집기, 명령 모드와 입력 모드가 있음
2.     : 유닉스 계열의 운영체제에서 사용자가 로그인 과정을 거친 후 터미널을통해서 최초로 만나게 되는 프로그램
3.     쉘 스크립트 : 쉘의 프로그래밍 구조를 사용하여 작성한 프로그램. C 프로그램과 달리 컴파일 과정 없이 실행
내용 정리
1.     Vi
A.     처음 vi로 들어가면 명령 모드로 진입.
B.      명령 모드 >> 입력 모드 : I, I, a, A, o ,O ,R 중 하나를 입력
C.      입력 모드 >> 명령 모드 : ESC키 입력
D.     vi 입력 모드 전환 명령어
                         i.         a : 커서 위치 다음에 문자 입력
                        ii.         i : 커서 위치에 문자 입력
                       iii.         o : 커서 위치 다음 행에 문자 입력
                       iv.         A : 커서가 위치한 행의 끝에 문자 입력
                        v.         I : 커서가 위치한 행의 맨 앞에 문자 입력
                       vi.         O : 커서 위치 이전 행에 문자 입력
E.      문서 저장 및 vi 종료는 ESC키를 통해 명령 모드로 전환 후 명령어를 입력.
                         i.         :w :현재 파일로 문서 저장
                        ii.         :w filename : filename 파일로 문서 저장
                       iii.         :wq : 문서 저장 후 vi 종료
                       iv.         :q! : 문서를 저장하지 않고 vi 종료
                        v.         :e! : 마지막 저장 명령 이후의 상태로 복귀
F.      마우스로 커서 이동이 불가능함. 따라서 명령어를 사용해야 됨
                         i.         h : 커서를 왼쪽으로 이동
                        ii.         j : 커서를 아래로 이동
                       iii.         k : 커서를 위로 이동
                       iv.         l : 커서를 오른쪽으로 이동
                        v.         w : 커서를 오른쪽으로 한 단어 이동(단어의 첫 문자로)
                       vi.         b : 커서를 왼쪽으로 한 단어 이동
                      vii.         e : 커서를 오른쪽으로 한 단어 이동(단어의 끝 문자로)
G.     페이지 단위 커서 이동
                         i.         H : 커서를 현재 페이지의 첫 행으로 이동
                        ii.         M : 커서를 현재 페이지의 중간 행으로 이동
                       iii.         L : 커서를 현재 페이지의 마지막 행으로 이동
                       iv.         Control + f : 커서를 다음 페이지로 이동
                        v.         Control + b : 커서를 이전 페이지로 이동
H.     명령어
                         i.         블록 범위 지정 방법
1.      :num[ , num2] : num 번 쨰 줄부터 num2 번 쨰 줄을 나타냄. num2 가 없다면 num행만 지정됨.
2.      num,num2는 순자이고 다음과 같은 특수기호를 사용하여 의미를 추가할 수 있음
A.     $ : 파일에서 마지막 줄
B.      . : 현재 줄
C.      +n,-n : 현재 위치에서 앞으로 또는 뒤로 n 번 쨰 줄
                        ii.         삭제 명령어
1.      x :커서 위치 문자 삭제
2.      X : 커서 위치 이전 문자 삭제
3.      dw : 커서 위치부터 단어 삭제
4.      dd : 커서 위치 행 삭제
5.      d$ or D : 커서 위치부터 행의 끝까지 삭제
6.      d0 : 현재 행의 처음부터 커서 위치 앞 문자까지 삭제
7.      dG : 커서 위치부터 문서의 끝까지 삭제
8.      <block>d : 지정된 블록 삭제 ()20,35d > 20-35블록삭제
                       iii.         문서의 일부분을 복사하는 명령
1.      yy : 커서 위치 행 복사
2.      p : 복사한 내용을 커서 위치 다음 행에 붙여 넣기
3.      y0 : 현재 행의 처음부터 커서 위치 앞 문자까지 복사
4.      y$ : 커서 위치부터 행의 끝까지 복사
5.      yw : 커서 위치부터 단어 복사
6.      yG : 커서 위치부터 문서의 끝까지 복사
7.      <block>y :지정된 블록 복사
8.      <block>co num : 블록을 복사하여 num행 다음에 붙여 넣기
                       iv.         문서를 수정하는 명령
1.      r : 커서가 위치한 문자를 다른 문자로 수정(수정 후 ESC를 눌러야 나가 짐)
2.      R : 커서가 위치한 문자부터 다른 문자로 수정(수정 뿐만 아니라 문자가 없으면 문자가 추가됨)
3.      cw : 커서 위치부터 단어 수정
4.      cc : 커서가 위치한 행 전체를 수정
5.      c0 : 현재 행의 처음부터 커서 위치 앞 문자까지 수정
6.      c$ : 커서가 위치한 문자부터 행 끝까지 수정
7.      s : 커서가 위치한 문자를 다른 문자열로 수정
                        v.         문자열 검색 및 대체 명령
1.      /string : 커서 위치부터 string 검색(메모장의 ctrl + f 와 비슷한 기능)
2.      ?string : 커서 위치 이전 방향으로 string 검색(검색된 단어 위에 바로 표시됨)
3.      n : 계속 검색
4.      N : 역방향 계속 검색
5.      :s/string1/string2 : 커서가 위치한 행의 첫번째 string1 string2로 변환
6.      :%s/string1/string2/g : 문서내의 모든 string1string2로 변환
7.      :<block>s/string1/string2 : <block>에서 string1string2로 변환
8.      :g/string1/s//string2/gc : 문서 전체에서 string1을 탐색하고 선택에 따라 string2로 변환
                       vi.         그 외의 명령어
1.      J : 커서가 위치한 행의 끝부분에 다음 행 연결
2.      xp : 커서가 위치한 문자를 다음 문자와 교환
3.      ~ : 대문자를 소문자로, 소문자를 대문자로 변환
4.      u : 이전 명령 취소(윈도우에서 ctrl + z 와 같은 기능)
5.      .  : 마지막 수행 명령 반복
6.      :set nu : 문서의 행 번호 표시
7.      :set nonu : 문서의 행 번호 감춤
8.      Control + G : 문서 이름과 현재 커서의 위치 정보 표시
I.       환경 설정
                         i.         사용자는 환경 변수를 설정하여 자신이 원하는 환경을 만들 수 있음
                        ii.         홈 디렉터리의 .vimrc 파일에 설정
                       iii.         명령어
1.      cindent : C 프로그래밍에 필요한 자동 들여쓰기 기능
2.      tabstop : 탭 키의 간격 조절 기능
3.      shiftwidth : 자동 들여 쓰기의 간격 조절 기능
4.      nu : 행 번호 설정 기능
5.      ruler : 현재 커서의 위치 출력 기능
6.      title : 타이틀 바에 현재 작업중인 문서 이름 출력 기능
7.      syntax : 문법 구분 기능
8.      hlsearch : 패턴 검색 시 해당 부분의 하이라이트 표시 기능



2.    
A.     유닉스 계열의 운영체제에서 사용자가 로그인 과정을 거친 후, 터미널을 통해서 최초로 만나는 응용 프로그램사용자 <--> 운영체제. 중간에서 명령을 전달하고 결과를 받는 인터페이스를 제공하는 응용프로그램
B.      명령어 해석기라고도 부름
C.      쉘 사용방식
                         i.         대화형 방식 : 사용자가 원하는 명령을 쉘 프롬프트에 직접 입력하여 결과를 받는 방식
1.      쉘의 처리 순서
A.     명령은 명령어, 옵션, 인자 등으로 구성
B.      쉘은 입력된 명령에 대해 구문 분석을 수행하여 명령어와 옵션, 인자 등을 인식
C.      운영체제에 실행을 요청
D.     실행 결과는 쉘에 출력 후 사용자에게 보여줌
                        ii.         프로그래밍 언어 : 쉘 스크립트를 작성하여 명령을 실행
1.      쉘 스크립트
A.     변수 정의,조건 문,반복 문등 제어 구조
B.      쉘의 프로그래밍 구조를 사용하여 작성한 프로그램
C.      C프로그램과 달리 컴파일 과정 없이 실행
D.     쉘의 종류
                         i.         본 쉘 계열
1.      본 쉘(sh)
A.     AT&T 벨 연구소의 Steven Bourne이 제작하였으며 Unix Version 7 의 디폴트 쉘로써 릴리즈 됨
2.      콘 쉘(Korn ksh)
A.     AT&T 벨 연구소의 David Korn 이 개발(POSIX 1003.2 준수)
B.      pdksh(Public Domain Korn Shell) : 콘 쉘의 공개 버전
3.      배시 쉘(Bash bash)
A.     GNU 프로젝트의 일환으로 FSF(Free Software Foundation)Brian Fox에 의해 개발(Posix 1003.2 준수)
4.      본 쉘 계열은 Algol 언어의 문법을 차용
                        ii.         C 쉘 계열
1.      C (csh)
A.     University of California, Berkeley Bill Joy 가 제작하였으며 BSD(버클리 유닉스)에 포함되어 배포
2.      TC (TENEX C tcsh)
A.     TENEX C 쉘의 약자이며 명령 완성, 명령 편집, 자동 로그아웃 등의 기능을 추가한 C 쉘의 확장판
3.      C 쉘 계열은 C 언어의 문법과 유사
                       iii.         디폴트 쉘
1.      솔라리스와 같은 상용 유닉스 시스템들은 주로 콘 쉘
2.      리눅스 시스템들은 배시 쉘
3.      FreeBSD 유닉스 시스템은 TC
                       iv.         로그인 쉘
1.      사용자가 컴퓨터 시스템에 로그인하여 처음 사용하는 쉘
2.      사용자가 특정한 쉘을 선택하지 않았다면 운영체제의 디폴트 쉘이 로그인 쉘
E.      TC
                         i.         TC쉘 초기화 : 쉘이 실행된 때 환경 변수들의 값들을 초기화 파일에서 읽어 들여 해당 변수에 설정하는 과정
                        ii.         모든 사용자에게 공통적으로 적용 : /etc/csh.cshrc, /etc/csh.login
                       iii.         각 사용자 별로 적용 : ~/.tcshrc, ~/.login
F.      TC 쉘 스크립트 파일의 작성과 실행
                         i.         쉘 스크립트 파일은 실행 가능한 텍스트 파일
                        ii.         C프로그램과 달리 컴파일 없이 실행
                       iii.         TC쉘 스크립트 첫 행은 #!/bin/tcsh로 지정 해야하고, 스크립트 작성이 완료되면 쉘 스크립트를 실행하기전에 그 파일의 모드를 실행 파일로 지정 해야함
                       iv.         $tcsh ~~.tcsh << 이렇게 실행하면 ~~tcsh이 실행되고 쉘이 종료
                        v.         $ ~~tcsh << 이렇게 실행하면 현재의 쉘에 쉘 스크립트를 실행
                       vi.         chmod 명령을 사용하여 실행파일로 만든 후 실행
G.     지역 변수와 환경변수
                         i.         지역 변수 : 자신이 정의된 쉘 스크립트에서만 사용될 수 있음
1.      리스트 변수 : 가능
2.      미리 정의된 변수(Predefined Variable) 조회 명령어 : set
3.      사용자 정의 변수 작명 규칙 : 소문자
4.      선언
A.     set 변수 명 =
B.      = 기호 기준으로 좌우 공백을 일치 시켜야 함
C.      변수 이름에 공백 문자가 포함될 경우 큰 따옴표로 묶어 주어야함
D.     값이 없으면 NULL 할당
E.      삭제 : unset 변수 명
                        ii.         환경 변수 : 자식 쉘을 포함한 자식 프로세스에서 사용될 수 있음
1.      리스트 변수 : 불가능
2.      미리 정의된 변수(Predefined Variable) 조회 명령어 : setenv
3.      사용자 정의 변수 작명 규칙 : 대문자
4.      선언
A.     setenv 변수 명 값
B.      X > NULL 할당
C.      공백 포함시 큰따옴표로 묶어 주어야함. 아니면 배정 X
D.     삭제 : unsetenv 변수 명
H.     내장 명령어와 외부 명령어
                         i.         내장 명령어 : 이미 메모리에 로딩되어 있는 명령어
1.      내장 명령어 목록 조회 명령어 : builtins
                        ii.         외부 명령어 : path 지역 변수나 PATH 환경 변수에 등록되어 있는 경로상에 존재하는 실행 프로그램
I.       변수의 유효 범휘
                         i.         부모프로세스 가 자식프로세스를 만들 수 있음
                        ii.         자식프로세스는 부모프로세스 상속하고 부모프로세스는 자식이 있으면 잠시 중단됨
                       iii.         지역변수
1.      상속 : X
2.      유효 범위 : 해당 프로세스 내
3.      설명 : 한 프로세스 내에서 독립적으로 사용되는 변수
                       iv.         환경변수
1.      상속 : O
2.      유효 범위 : 해당 프로세스와 자식프로세스
3.      설명 : 자식 프로세스에게 그 값이 전달되는 변수, 자식프로세스에서 환경 변수의 값을 변경 하였어도 부모프로세스에는 영향을 주지 않음
J.       리스트 변수
                         i.         하나의 변수에 복수개의 값을 할당(지역변수)
                        ii.         선언 : set 변수 명 = (, , …..)
                       iii.         n번째 값 재정의는 set 변수 명[n] =
                       iv.         $#변수 명 은 리스트 변수 값 개수 리턴
                        v.         복수 개 값 지정은 $변수 명[2-4]같이 하면 됨
                       vi.         모든 값 선택은 $변수 명 또는 $변수 명[*]
                      vii.         shift 명령어 : 첫번쨰 값 제거, 그 외의 값들의 주소를 한 단계씩 앞당김. shift 변수 명 이라고 쓰면 됨
                     viii.         변수 대치
1.      $로 시작하는 변수는 특정한 문자열로 대치
2.      $name, ${name} : name 변수의 값으로 대치., name을 다른 문자와 구분할 때 중괄호 사용
3.      $?name, ${?name} : name 변수가 선언 되어있으면 1, 아니면 0을 리턴
4.      $name[n], ${name[n]} : namen번쨰값 리턴
5.      $#name, $#{name} : name 변수의 값의 개수 리턴
K.      표준 입력
                         i.         표준 입력으로부터 한 단어를 입력 받아서 변수에 할당
                        ii.         일반적으로 set name = $< 으로 씀
L.      echo
                         i.         조건에 따라 명령을 실행할 수 있는 명령어
                        ii.         사용법 : echo [-n] word~~
                       iii.         n : 인자를 출력한 후 개행 문자를 삽입 하지 않음
M.    if
                         i.         사용법 : if (expr) command
                        ii.         expr이 참이면 command 아니면 실행하지 않음
                       iii.         command 는 명령어 하나
                       iv.         if then command endif 쓰면 복수의 명령어 사용가능
                        v.         if then commands else commands endif 참이면 1, 아니면 2번 실행 중복사용가능
N.     goto
                         i.         사용법 : goto lable
                        ii.         레이블 :  lable : command 로 사용
O.     switch
                         i.         다중 분기
                        ii.         case의 명령어 수행. 없으면 default 레이블 실행
                       iii.         breaksw를 만나면 endsw뒤 로 진행
P.      foreach
                         i.         foreach var_name (word1, word2 …. wordn) commands end
                        ii.         word I 에 대해 commands를 반복적으로 실행
                       iii.         각 반복마다 word1, word2…. 순차적으로 진행
                       iv.         내장 명령 @
1.      수치 변수 용 set 명령어
2.      산술 연산의 결과 값을 저장
3.      사용법 @ varname op expr / @ varname[n] op expr
4.      op = {=,+=,-=,*=,/=}
5.      TC 쉘은 부동소수점 연산 지원 X
6.      foreach prog (‘cat src_list’) 이거 같이하면 src_list를 가져옴 ‘’ 로 감싸 주어야함
7.      :r : 경로 이름에서파일의 확장자를 제거
                        v.         while
1.      반복 처리
2.      while(expr) commands end
3.      expr.이 참인 동안 commands 실행
                       vi.         repeat
1.      반복 처리
2.      repeat expr command
3.      expr만큼 command 실행
Q.     쉘 환경 설정
                         i.         ~/.tcshrc : TC쉘의 사용자 환경 설정을 위한 파일로 환경변수를 설정하여 쉘 환경을 구축. 경로설정, 프롬프트 설정, man 페이지 경로 설정, alias 설정 등
                        ii.         사용자 홈디렉터리에 직접 생성 해야함
                       iii.         로그인 쉘과 자식 쉘에 적용됨
                       iv.         Prompt
1.      /etc/csh.csh.cshrc 파일에서 지정
2.      %/ : 현재 작업 디렉토리
3.      %~ : 현재 작업 디렉토리, 홉 디렉토리는 ~ 로 출력, 다른 사용자의 홈디렉토리는 ~user로 출력
4.      %c[[0]n]
A.     현재 작업 디렉토리
B.      –n을 지정하면 디렉토리 전체 이름 중에서 하위 n개의 디렉토리 이름만 출력
5.      C : $c 같음 but ~치환없이 출력
6.      %h : 현재 히스토리 이벤트 번호\
7.      %M : 전체 호스트 이름
8.      %m : 첫 번째 ‘.’ 이전까지의 호스트 이름 출력
9.      %S, %s : 출력 문자의 표준 문자 모드로 시작(%S) 과 끝 (%s) 지정
10.   %B, %b : 출력 문자의 굵은 문자 모드의 시작(%B) (%b) 지정
11.   %U, %u : 출력 문자의 밑줄 문자 모드의 시작(%U) 과 끝(%u) 지정
12.   %t, %@ : AM/PM 형식의 12시간 기준의 시간 출력
13.   %T : 24시간 기준의 시간 출력
14.   %p : AM/PM 현식의 12시간 기준의 시간 출력. 초 단위까지 출력
15.   %P : 24시간 기준의 시간 출력. 초 단위까지 출력
16.   %% : 문자 % 출력
17.   %n : 사용자 이름 출력
18.   %d : 요일 출력
19.   %D : 날짜 출력
20.   %w : 월 출력(영어로)
21.   %W : mm현식으 월 출력
22.   %y : yy형식 연도 출력
23.   %Y : yyyy 형식 연도 출력
24.   %l : 현재 쉘의 tty 출력
25.   %# : 디폴트 동작 시 일반 사용자는 문자 ‘>’ 출력, 슈퍼  유저는 ‘#’ 출력 그러나 리스트 타입의 쉘 변수 promptchars가 정의 되어있을 경우 일반사용자는 promptchars의 첫 문자, 슈퍼 유저는 두번째 문자 출력
26.   %? : 현재 프롬프트 출력 직전에 수행한 명령어의 종료 상태 값 출력
R.      Source
                         i.         ~/.tcshrc 파일의 새로운 설정을 현재 쉘에서 바로 적용 시킬 때 사용
1.      사용법 : $source .tcshrc
S.      path
                         i.         쉘 변수 path에 등록된 경로들은 사용자의 명령 행에 포함된 외부 명령어를 찾을 위치를 지정하기 위해 사용됨.
                        ii.         현재 디렉터리를 path에 추가 : set path = ($path .) / setenv PATH “${PATH}:.”
                       iii.         TC쉘은 쉘 변수 path 와 환경변수 PATH의 값을 내부적으로 동기화 시켜 줌
T.      MANPATH
                         i.         man 페이지 파일의 경로를 가지고 있음
                        ii.         새로운 man 페이지 경로 추가
U.     alias
                         i.         명령을 자신이 원하는 이름으로 변경할 수 있게 하는 명령어
                        ii.         명령어 : alias alias_name string
                       iii.         옵션 포함 명령어도 바꿀 수 있고, 기존명령어를 그대로 사용할 수 있다. 그 중복되는 원래 명령어를 사용하기 위해서는 그 명령어 앞에 \ 을 붙이면 된다(역 슬래시)

                       iv.         unalias 지정한 명령어 하면 alias 지정한 명령어 삭제됨