리눅스 기초

난1렙이요·2024년 9월 4일
0

시스템 프로그래밍

목록 보기
1/22

Shell

쉘(shell)은 운영체제와 사용자 사이를 텍스트로 연결해주는 일종의 명령어 해석기다. 운영체제의 모든 것을 제어하는 커널과 사용자를 연결해주는 명령어 해석기라고 볼 수 있다. 쉘에서는 대소문자를 구분한다.

명령어들

man

man 명령어는 도움말을 준다. manual의 줄임말이며, man뒤에 도움이 필요한 명령어를 넣으면 도움말 창의 띄워준다.


man echo를 실행하면 나오는 이미지. 나가고 싶을 때는 q를 눌러서 나가면 된다.

pwd

pwd는 print working directory의 줄임말로, 원하는 곳의 경로를 띄워준다.

cd

cd는 change directory의 줄임말로, 원하는 곳으로 이동시켜준다. 루트부터 이동하는 "절대경로"와 지금 있는 디렉토리 기준으로 이동하는 "상대경로"가 있다.

cd ~는 지금 있는 디렉토리를 말단(홈 디렉토리)으로 하겠다는 명령어다.
cd ..은 지금 있는 디렉토리의 부모 디렉토리로 이동하는 명령어다.


ls

ls는 list의 줄임말로, 현재 있는 디렉토리 또는 내가 지정한 디렉토리 안의 파일들과 자료들을 보여준다.

  • -l : long list로 안에 있는 파일들과 자료들의 정보를 상세하게 알려준다.
  • -t : 시간순으로 정렬해준다.
  • -S : 크기 기준으로 정렬해준다.
  • -h : 파일 크기를 사람이 읽을 수 있는 형태로 바꿔서 알려준다.(byte단위의 표시를 KB, MB나 GB로 바꿔준다.)
  • -r : 기존 졍렬 순서를 반대로 바꿔서 정렬해준다.
  • * : 모든 파일을 지정해주는 와일드카드다. 예를 들어 모든 txt파일을 보고싶으면 ls *.txt 이렇게 하면 된다.

mkdir

mkdir은 make directory의 줄임말로, 새로운 디렉토리를 만드는 명령어다.

rmdir

rmdir은 remove directory의 줄임말로, 아무거나 지울수는 없고 빈 디렉토리를 지우는 명령어다.


파일을 출력하는 명령어

유닉스에서 파일을 출력할 수 있는 명령어는 여러가지가 있다. 대표적인 4개를 알아보자.

  • cat
  • less
  • head
  • tail

cat

지정한 파일을 화면에 출력한다. cat [filename]으로 사용한다. 짧고 간단한 파일을 다룰 때 사용한다.

less

지정한 파일을 화면에 출력한다. less [filename]으로 사용한다.파일 내용이 길어 한 화면에 들어오지 않으면 화면에 들어올 정도만 출력해준다. 스크롤로 한 줄씩 space로 한 페이지씩 넘길 수 있고, y키 스크롤로 한 줄씩 뒤로 넘길 수 있고 b로 한 페이지씩 뒤로 넘길 수 있다. less 화면에서 "/"를 누르면 검색이 가능하다. q로 나갈 수 있다.

head는 지정한 파일의 앞 10줄만 출력해준다. head [filename]으로 사용한다. -n 옵션으로 출력하는 라인 수를 정할 수 있다. 예를 들어 -n50이면 앞 50줄이 출력된다.

tail

tail은 지정한 파일의 뒤 10줄만 출력해준다. tail [filename]으로 사용한다. -n 옵션으로 출력하는 라인 수를 정할 수 있다. 예를 들어 -n50이면 뒤 50줄이 출력된다.


파일 관련 추가 명령어

유닉스에서 파일을 관리할 수 있는 명령어는 여러가지가 있다. 대표적인 3개를 알아보자.

  • cp
  • mv
  • rm

cp

cp는 제일 간단한 파일 복사 명령어다. cp A B는 B에 A를 복사하겠다는 의미이다.

mv

mv는 파일의 위치를 바꾸거나 이름을 재설정하는 명령어다. mv A B는 B에 A를 이동시킨다는 의미이며, B를 현재 파일의 이름으로 하고 A를 바꿀 파일의 이름으로 하면 이름이 재설정된다.

rm

rm은 파일을 삭제하는 명령어다. rm A는 A를 지우라는 의미이다. rmdir와는 달리 그냥 지우므로 사용하는데 주의를 기울여야 한다. rm -r은 모든 파일을 삭제하는 명령어이므로 주의해야한다.


파일의 권한

파일에는 권한을 부여할 수 있으며, 권한에 따라 할 수 있는 행동이 달라진다. 권한은 다음으로 나뉜다.

  • reading / r
  • writing / w
  • executing / x

리눅스에서 파일의 상세정보를 달라고 하면 rwx로 구성된 권한 정보가 여러개가 나오는데, 사용자에 따라 부여되는 권한이 다르기 때문이다.

  • 사용자(user) / u
  • 그룹(group) / g
  • 나머지(others) / o

권한은 rwx순으로 주어지게 되며, -이 쓰여진 곳은 권한을 부여하지 않는다는 의미다.
drwxrwxrwx 이런 식으로 보여지게 되는데, 맨 앞의 d는 파일이 특수한지를 나타내는 것이고, 첫 개는 사용자, 중간 3개는 그룹, 마지막 3개는 나머지에 대한 권한이다. 예를 들어 -rw-r--r--는 유저에게 읽고 쓰는 권한, 그룹에게는 읽기만, 나머지에게도 읽기만 권한이 주어진 것이다.

디렉토리의 경우는 "x"가 있어야 그 디렉토리를 참조(list)할 수 있다.


사용자 권한 변경

chmod

chmod를 이용해서 파일의 권환을 변경할 수 있다. 파일 권환 변경은 파일을 만든 사람만 바꿀 수 있다. 사용법은 chmod User/Group/Others/All [permission][file(s)]다. 여기서 +는 권환을 부여한다는 의미이고, -는 권환을 뺏는다는 의미다.


실행중인 프로세스 관리

ps

현재 쉘에서 실행되고 있는 프로세스(실행중인 프로그램)들을 보여준다. ps로 사용한다. PID라는 항목이 있는데, 프로세스에 부여된 ID이다. 프로세스를 지정하고 싶을 때 사용하게 되므로 알고 있어야 한다.

kill

프로세스에게 명령(시그널)을 보낸다. 대부분 강제 종료시키는 용도가 있는 -9번 옵션을 이용한다. 프로세스의 ID인 PID를 사용하며, 사용 방법은 kill [option] PID다. 그러므로 프로세스를 강제 종료 시키려면 kill -9 PID로 강제 종료 할 수 있다.


Redirection

프로그램은 다른 프로그램에 결과를 보낼 수 있는데(출력), 이를 piping이라고 한다.

  • program_a | program_b : program_a의 출력(output)을 program_b(input)에 입력한다.
  • program_a > file.txt : program_a의 출력을 file.txt에 입력한다.
  • program_a < input.txt : program_a는 file.txt로부터 내용을 입력받는다.

Grep

grep은 특정 단어가 들어있는 파일을 찾을 때 사용하는 명령어다. grep ["string"][search area]로 사용한다. 예를 들어, grep "hello world" *.txt면, 모든 txt파일 안에 "hello world"가 들어있는 부분을 보여준다.


gcc

gcc를 통해서는 여러가지 컴파일러들을 사용 가능하다. 여기서는 c컴파일러에 대한 내용으로 작성한다. "hello.c"를 컴파일 하려면 gcc hello.c라고 쓰면 a.out이라는 결과가 만들어진다. 또한 결과의 이름을 바꾸고 싶으면 gcc hello.c -o "hello"라고 쓰면 파일 이름이 hello가 된다.
더 많은 컴파일 기능을 보고싶으면 'gdb'나 'make'에 대해서 찾아보자.

profile
다크 모드의 노예

0개의 댓글