티스토리 뷰

정보

UNIX 커맨드라인

람람뿅뿅 2016. 9. 8. 16:21
0908_Codecademy_Learn the Command Line

Codecademy

- Learn the Command Line -

Course 1

커맨드 라인은 텍스트 인터페이스 입니다. 컴퓨터 OS를 실행하기위한 커맨드 수행하는 프로그램이죠.

커맨드 라인으로 당신은 컴퓨터 내에서 파일과 폴더를 이동할수 있습니다. 차이점은 모두 텍스트 기반으로 되어있다는 것이죠.

커맨드 라인의 장점은 파워풀함입니다. 당신은 프로그램을 실행시키고, 반복되는 작업을 자동화시키는 스크립트를 작성하고 단순한 커맨드를 조합해서 어려운 일을 다룰 수 있습니다.

이 코스는 리눅스나 맥OS-X처럼 유닉스 기반의 시스템을 위한 것입니다.

이 코스에서 다루는 모든 커맨드의 부록은 여기에 있습니다.

Instructions

  1. 커맨드 라인에 접속하기위해, 우린 터미널 에뮬레이터를 사용합니다. 보통 터미널 이라고 부릅니다. 터미널에서, $ 기호 다음에

ls

..를 치고 엔터를 누릅니다.

그러면 커맨드 아래로 3개의 아이템이 출력됨을 확인할 수 있습니다.


Course 2

무슨일이 일어난 걸까요?

$ ls

2014 2015 hardware.txt

  1. 터미널 내에서 처음으로 $를 만날겁니다. 이건 Shell Prompt 라고 부릅니다. 터미널이 커맨드를 입력받을 준비가 되었을 때 나타납니다.

2, 당신이 ls를 입력했을 때, 커맨드 라인은 당신이 속해있는 폴더를 보고 그 내부에 있는 파일과 폴더의 목록 을 나열합니다. 디렉토리인 2014, 2015, 그리고 파일인 hardware.txt 는 현재 디렉토리의 내용물입니다.

ls는 직접적으로 컴퓨터가 특정 작업을 실행하게 만드는 커맨드 중 하나의 예시입니다.

Instructions

커맨드 라인을 사용하는 중에, 우린 폴더를 디렉토리라고 언급했습니다. 당신의 컴퓨터의 파일과 디렉토리를 합쳐서 Filesystem 이라고 칭합니다.


Course 3

파일시스템은 컴퓨터 파일과 디렉토리를 3가지의 구조로 구성합니다. 예시

  1. 파일시스템 내에서 첫번째 디렉토리를 Root directory 라고 합니다. 이것은 파일시스템 내부의 모든 디렉토리와 파일들의 부모입니다.

  2. 각 부모 디렉토리는 자식 디렉토리와 파일들을 가질 수 있습니다. 예시에서 blog/2014/, 2015/, hardware.txt의 부모입니다.

  3. 각 디렉토리는 자식 디렉토리와 파일을 가질 수 있습니다. 부모-자식 관계는 디렉토리-파일이 내포 관계에 있을 때 발생합니다.

당신은 아마 이런 트리 구조에 친숙할 겁니다. Mac finder, Windows 탐색기는 이런 파일 시스템을 트리로 표현합니다.

Instructions

  1. 어떻게 커맨드 라인에서 파일시스템을 여행하는지 봅시다! 터미널에서 쉘 프롬프트($) 다음에

pwd

..라고 입력하고 엔터를 누르세요. 다음 장에서 설명하겠습니다.


Course 4

pwd는 "Print Working Directory"를 나타냅니다. 이 커맨드는 당신이 현재 위치하고 있는 Working Directory라고 부르는 디렉토리의 이름을 출력합니다.

여기서 워킹 디렉토리는 blog/입니다. 코드카데미 코스에서 당신의 워킹 디렉토리는 보통 home/ccuser/workspace디렉토리 내부에 위치합니다.

ls와 함께 pwd커맨드는 당신이 머물러있는 파일시스템을 보여주는데 유용합니다.

Instructions

  1. 터미널 내에서 working directory를 출력해보세요.
  2. 워킹 디렉토리 내의 모든 파일과 디렉토리를 나열해보세요.
  3. 다음으로

cd 2015

라고 쳐보세요. 그리고 다시 새로운 working directory와 모든 파일과 디렉토리를 출력해보세요.


Course 5

mkdir

Course 6

Course 7

파일 생성

touch [filename]

Navigation 장에서 배운 커맨드들

  • pwd 는 현재 working directory의 이름을 출력합니다.
  • ls 는 working directory 내의 모든 파일과 디렉토리를 나열합니다.
  • cd 는 당신이 명시한 디렉토리 내부로 변경합니다.
  • mkdir 는 working directory 내에 새로운 디렉토리를 만듭니다.
  • touch 는 working directory 내에 새로운 파일을 만듭니다.

ls -a

ls커맨드에 여러 옵션을 붙일 수 있음 - -a 숨겨진 파일과 폴더를 포함해 모든 컨텐츠를 나열 - -l 긴 포맷으로 모든 디렉토리의 내용물을 나열 - -t 마지막으로 변경된 시간 순으로 파일과 디렉토리를 정렬

ls -l

$ ls -l

drwxr-xr-x 5 cc eng 4096 Jun 24 16:51 action

drwxr-xr-x 4 cc eng 4096 Jun 24 16:51 comedy

drwxr-xr-x 6 cc eng 4096 Jun 24 16:51 drama

-rw-r--r-- 1 cc eng 0 Jun 24 16:51 genres.txt

ls -l옵션은 파일과 디렉토리를 테이블로 나열합니다. 현재 네개의 행과 7개의 열로 구성. 각 열의 의미는 다음과 같습니다.

  1. 접근 권한 : 파일과 디렉토리에 허락된 액션
  2. 하드링크의 숫자 : 이 숫자는 자식 디렉토리와 파일의 숫자를 나타냅니다. 숫자는 ...도 포함합니다.
  3. 파일의 주인의 이름. 여기선 사용자이름이 cc네요.
  4. 파일을 소유하고있는 그룹의 이름. 여기선 eng네요.
  5. 파일 크기 (바이트)
  6. 마지막으로 변경된 날짜와 시간
  7. 파일과 디렉토리의 이름

ls -alt

ls -alt

cp frida.txt lincoln.txt

cp

cp커맨드는 파일이나 디렉토리를 복사합니다. 여기선 frida.txt의 내용을 lincoln.txt로 복사했습니다.

요약

  • ls -a 숨겨진 파일과 폴더를 포함해 모든 컨텐츠를 나열
  • ls -l 긴 포맷으로 모든 디렉토리의 내용물을 나열
  • ls -t 마지막으로 변경된 시간 순으로 파일과 디렉토리를 정렬
  • 옵션들은 다중으로 적용 가능합니다. ls -alt

커맨드 라인에서 복사, 이동, 삭제

  • cp 파일을 복사합니다.
  • mv 파일 위치를 옮기거나 이름을 다시 설정 합니다.
  • rm 파일을 제거합니다.
  • rm -r 디렉토리를 제거합니다.

와일드카드(*)는 파일과 디렉토리 그룹을 선택할때 유용합니다.

Redirection

Strandard I/O

  • stdin : standard input, 키보드나 입력기기를 통해 터미널 내부로 정보를 넣음.
  • stdout : standard output, 프로세스가 실행된 후 출력되는 정보
  • stderr : standard error, 프로세스가 실패하고 출력되는 메시지

> 커맨드는 파일로 standard output을 방향 지정을 합니다. 또한 overwrite.

cat 커맨드는 파일의 내용을 출력합니다. cat

>>커맨드는 >가 overwrite하는 것 과는 달리, 두 파일의 내용을 유지합니다.(append)

| 커맨드는 "파이프" 입니다. 왼쪽 커맨드의 standard output을 취하고 그것을 오른쪽에 standard input으로 활용. command to command, 커맨드에서 커맨드를 연결해주는 것으로 생각 할 수 있습니다.

wc커맨드는 라인 수, 단어 수 , 글자 수를 출력합니다.

다중 |은 함께 연결해서 사용할 수 있습니다.

예시)

cat volcanoes.txt | wc | cat > islands.txt

sort 커맨드는 standard input을 알파벳 순으로 정렬한 것을 output으로 출력합니다.

uniq 커맨드는 중복되지않고 근접하지 않은 것만을 출력합니다. 그래서 sort커맨드와 같이 사용하면 같은 것을 인접하게 만들어서 uniq로 지워버립니다.

grep 커맨드는 "Global Regular Expression Print" 를 말합니다. 매치되는 패턴을 찾아서 결과를 return합니다.

grep -i 커맨드는 대소문자에 상관없게 패턴매칭을 합니다. (insensitive)

grep -R 커맨드는 디렉토리 내의 모든 파일을 탐색하고 파일이름과 결과 매치되는 줄을 출력합니다. R은 "Recursive"를 뜻합니다.

grep -Rl커맨드는 디렉토리 내의 모든 파일을 탐색하고 매치되는 파일 이름만을 출력합니다.

sed 커맨드는 "Stream EDitor"를 말합니다. standard input을 받아서 expression에 기반해 출력하기전에 변경합니다. "find and replace"와 유사합니다.

여기서 's/snow/rain/'을 봅시다.

  • s 는 "Substitution"을 말합니다. sed커맨드는 항상 substitution(대체)를 사용합니다.
  • snow 는 탐색하고자 하는 문자열입니다.
  • rain 는 대체할 문자열입니다.

그래서 여기서 snow를 rain으로 대체하는 것입니다. 여기서 중요한것은 위의 커맨드는 첫번째 만나는 'snow'만을 대체합니다.

g expression을 붙이면 (Global) 모든 snow를 rain으로 대체합니다.