프로그래밍/리눅스 8

리눅스 - 리눅스 개발 환경 (gcc, make, gdb, vim)

쉘 스크립트가 아닌, 리눅스에서 제공하는 프로그램 개발 환경에 대해 알아보자. 제목에 있는 소프트웨어들에 대하여 기본 원리, 기능 그리고 자주 쓸 법한 명령어에 대해서만 기술한다. 직접 사용해보면서 배우는 게 더 많을테니... gcc 기능 C언어 컴파일러이다. 컴파일이란 쉽게 말해 사람만 이해할 수 있는 언어로 작성된 .c 파일을 기계가 이해할 수 있는 "목적 파일" .o(objective) 파일로 변환해주는 작업이다. gcc는 컴파일러이지만 목적 파일을 실제 실행할 수 있는 "실행 파일"로 만드는 기능(링킹)까지도 겸비한 멋진 프로그램이다. gcc는 일반적으로 리눅스를 설치할 때 포함되지만, 나처럼 자신의 리눅스에서 gcc를 사용할 수 없을 경우 sudo apt install gcc 명령어를 이용해 설..

리눅스 - Bash 쉘과 쉘 스크립트

Bash? 쉘? 스크립트? 쉘은 운영체제에 접근할 수 있으면서 사용자의 명령어를 해석해주는 프로그램이며, Bash 쉘은 쉘의 한 종류이다. 그리고 쉘 스크립트란 쉘 내에서 명령어 반복 처리 등의 목적을 위해 작성할 수 있는 프로그램이다. 간단하게 말하면 (안 간단함) 쉘 스크립트로 C언어처럼 for나 if를 사용해 명령어를 수행할 수 있다. Bash 쉘의 장점 스크립트 설명 전 잠깐 다른 얘기를 하자면, bash 쉘은 표준 출력이나 산술 연산 등에 유리하다고 알려져있다. 또한 사용자의 명령어 입력을 홈 디렉토리의 .bash_history라는 파일에 보관한다는 장점이 있다. 파일을 직접 확인할 필요 없이, history 명령어를 사용하면 지금까지 사용한 명령어를 확인할 수 있다. 환경변수 HISTSIZE로..

리눅스 - 디스크 정보, TAR, GZIP, AWK

디스크 사용 명령어 df : 전체 파일 시스템의 정보를 보여준다. 보여주는 속성은 Filesystem(시스템 명), 1K-blocks(용량), Used(사용량), Available(남은 용량), Use%(사용률), Mounted on(마운트 된 디렉토리)이다. 여기서 마운트란, 디렉토리와 실제 파일 시스템(디스크)을 연결시키는 걸 의미한다. udev라는 이름의 파일 시스템은 입출력 장치 처리를 담당하는 /dev 디렉토리에 연결되어 있고, 946,764KB의 저장공간을 가지며, 그 중 하나도 사용하지 않았다. df가 디스크의 정보를 알려주는 반면, 파일이나 디렉토리의 디스크 사용량을 알려주는 명령어도 있다. du 명령어이다. du [-s] 파일명들 : 파일이나 디렉토리가 사용하는 디스크 블록 수(한 블록에..

리눅스 - 파일 조작 명령어(find, grep ...)

find 디렉토리명 [-옵션] : 지정한 디렉토리 내에서 조건에 맞는 파일을 찾는다. 적용할 수 있는 다양한 옵션이 있으니 아래를 참고하자. >> -name 파일명 : 이름으로 검색, wildcard 사용 가능 >> -type x : 파일 종류로 검색, d : 디렉토리, f : 일반 파일 등 >> -perm nnn : 접근 권한으로 검색, 8진수 표현 사용 >> -atime n, -mtime n : 마지막 접근 시간, 마지막 수정 시간으로 검색. 시간이 현재 날짜 기준 n일 전인 파일을 검색하며, n 앞에 + -를 붙여 경과 일자가 n일 이상, 이하 즉 n일보다 더 이전, n일 이후의 날짜를 기준으로 검색할 수도 있다. >> -user 사용자명 : 소유자 정보로 검색 >> -print : 찾은 파일의 절..

리눅스 - 프로세스 명령어와 시그널

프로세스와 프로그램 우리 눈에 보이는 것과 달리 프로그램은 디스크에 저장된 '컴파일 된 실행 코드'에 지나지 않는다. 프로그램을 구동하려면 이 코드를 메모리로 가져와야 한다. 메모리로 가져와 구동 중인 프로그램을 프로세스라고 부른다. 하나의 프로그램이 여러 프로세스를 가질 수도 있다. 모든 프로세스는 고유 번호 PID를 가진다. 어떤 프로세스를 실행하는 데에는 부모 프로세스가 필요하며 부모 프로세스의 고유 번호는 PPID라고 한다. 현재 실행중인 사용자 프로세스(시스템 전용이 아닌 프로세스)는 명령어 ps로 확인할 수 있다. 출력되는 정보는 다음과 같다. PID, TTY(터미널 종류), TIME(실행 시간), CMD (프로세스명) ps 명령어에 대한 옵션은 다음과 같다. (시스템 V 기준) >> -e :..

리눅스 - 쉘 기본 사용법 (입출력 재지정, 대치 등)

쉘이란 쉘은 쉘 프롬프트라고도 부르며, 리눅스에서 사용되는 명령어 처리기이다. 터미널이라고 생각하면 쉽다. 주로 명령어 처리, 시작 파일 실행, 스크립트 (프로그래밍) 기능을 수행한다. bourne 선생님께서 만든 '본 쉘'이 최초 버전이며, 현재는 이를 확장한 Bourne Again SHell, bash 쉘이 널리 사용된다. 로그인 쉘 : 시스템에 로그인할 때 실행되는 쉘, 꼭 bash가 아닐 수도 있으며 보통 계정 생성할 때 시스템 관리자가 결정한다. /etc/passwd 파일에서 확인할 수 있다. 시작 파일 쉘이 시작될 때 실행되는 파일이다. 시스템 시작 파일과 사용자 시작 파일 두 가지가 있으며, 각각 사용자 전체의 환경과 사용자 개개인의 환경을 설정하는 데 쓰인다. 아래 설명은 Bash 쉘 기준..

리눅스 - 디렉토리 구조

대충 이런 이미지를 찾을 수 있는데... 어지럽다. 몇 개만 알아보자. root : 다른 모든 디렉토리(폴더)가 저장된 최상위 디렉토리 bin : binary, 기본 명령어 ex)cp 에 대한 실행 파일(컴파일 완료된 바이너리 파일), 즉 명령어 실행하는 곳 etc : 기타 등등을 뜻하는 etc. 시스템 관리, 환경 설정을 위한 파일과 명령어 boot : bootloader, 컴퓨터 키면 커널 가져오는 곳 dev : device, 주변장치 담당하는 곳 home : 사용자 홈 디렉토리, home 하위 디렉토리에 시스템 사용자들의 개인 파일이 저장되는 디렉토리 ex) 황태건 가 생성된다. lib : 라이브러리(프로그램용) tmp : temporary, 임시 파일 usr : user, 명령어, 시스템 프로그램..

리눅스 - 리눅스 너 뭐 돼

처음 리눅스에 대한 소개를 읽으면 이런 말 저런 말 거창하게 쓰여있어 겁을 먹기 마련이다. 나도 그랬다. 하지만 우리는 MS 윈도우에 대해서는 두려움을 느끼지 않는다. 사용하고 있다고 의식조차 하지 못하고, 컴퓨터를 키면 자연스럽게 윈도우에 접속해 원하는 프로그램을 실행한다. 리눅스 또한 MS 윈도우와 비슷한 역할을 하는 운영체제일 뿐이다. 차이점이라면 윈도우는 GUI(그래픽 기반, 마우스 주로 사용), 리눅스는 CLI(명령어 기반, 키보드 주로 사용)로 이용한다는 점 정도가 있다. 리눅스의 조상인 유닉스는 워크스테이션(소규모 그룹)용이였으며, 리눅스가 유닉스의 PC판이라고 보면 된다. 리눅스는 다양한 배포판이 있는데 커널(내부 기능)은 거의 동일해서 무얼 이용해도 무방하다. 리눅스 하면 따라 나오는 레..