리눅스는 다중 사용자 컴퓨터가 특징 (하나의 운영체제를 여러 사람이 썼음) -> 권한 부여를 나눔
super user 또는 root user
nano
파일 : 정보를 저장하는 가장 기본적인 어떤 수단, 저장소이다.
nano : 파일 편집기
^ = Ctrl
^O : write out (저장하고 나가기)
단축키
동작
Ctrl+G (F1)
도움말 표시
Ctrl+X (F2)
nano 종료 (혹은 현재의 file buffer를 닫음)
Ctrl+O (F3)
현재 편집 중인 파일 저장
Ctrl+J (F4)
문단을 justify(행의 끝을 나란히 맞추다)한다. 즉, 한 문단을 한 줄로 붙인다.
Ctrl+R (F5)
현재 file에 다른 file의 내용을 추가한다.
Ctrl+W (F6)
text 검색
Ctrl+C (F11)
현재의 cursor 위치 표시하기
Ctrl+T (F12)
spell check 시작
Ctrl+\
search and replace
Ctrl+K (F9)
현재의 line 혹은 선택된 text 삭제(그리고 저장(copy))
Ctrl+U (F10)
붙여넣기 (paste)
Ctrl+6
현재 cursor 위치부터 text 선택 시작. 이후 Alt+6로 복사 후 선택 종료. 아니면 다시 Ctrl+6를 입력하면 (복사 없이)단순 종료.
Alt+6
선택 구간 복사. 선택 구간이 없다면 현재 caret이 있는 한 줄을 복사. 이후 Ctrl+U로 붙여넣기 할 수 있음
PageUp 또는 Ctrl+Y (F7)
이전 화면
PageDown 또는 Ctrl+V (F8)
다음 화면
Alt+(
현재 문단의 시작으로
Alt+)
현재 문단의 끝으로
Alt+=
한 줄 밑으로 스크롤
Alt+-
한 줄 위로 스크롤
Ctrl+Space
한 단어 앞으로
Alt+Space
한 단어 뒤로 (GUI모드가 아닐 경우)
Alt+\
file의 첫 line으로
Alt+/
file의 마지막 line으로
Alt+]
현재 괄호에 match되는 괄호 찾기
Ctrl+-
줄 번호와 열을 입력한 후 그곳으로 이동
Package manager
패키지 : 우리가 흔히 알고 있는 프로그램 또는 애플리케이션 또는 앱을 의미
apt 또는 yum이 있다.
sudo apt-get update; 를 하면 apt 패키지에 접속해서 최신 목록을 다운 받는다
sudo apt-cache search htop : htop과 관련된 목록을 보여준다.
top : 작업관리자와 비슷한 개념
q를 누르면 화면에서 빠져나간다.
clear : 화면을 깨끗하게 지움
sudo apt-get install htop : htop 설치
htop 실행 (또는 sudo htop)
sudo apt-get upgrade htop : htop 업그레이드 실행
sudo apt-get remove htop : htop 제거
wget
파일을 다운로드받는 방법 (URL을 통해서)
wget -O [바꿀이미지명] [이미지링크주소]
IO Redirection
output
IO Redirection (입력(input), 출력(output), 방향을 바꾼다(=파일을 저장한다))
보통은 화면으로 출력되는 것이 기본. 그 출력되는 방향을 다른 곳으로 돌려(Redirection)하여 파일에 저장시킬 수 있다는 뜻이다.
유닉스 계열의 시스템은 어떤 프로그램이 실행(프로세스)될 때 그 프로세스가 출력하는 결과는 크게 두 가지로 구분된다.
표준 출력(Standard Output)
표준 에러 출력(Standard Error)
ls -l > result.txt : ls -l 결과값을 화면에 출력되는 대신 result.txt로 출력되어 파일로 저장
> : 보통 숫자 1이 생략되어 있는데 이를 표준출력이라고 함
2> : 오류가 난 결과를 파일에 저장하고 싶을 때 사용
input
< : standard input
프로그램 : 컴퓨터의 하드디스크나 SSD에 저장되어 있는 코드
프로세스 : 그 프로그램이 실행되면, 실행되고 있는 상태
프로세스에는 standard output과 standard error라고 하는 두 가지의 출력의 형식을 가진다. 그리고 한 가지의 입력, standard input이 들어가 있다. 즉, 하나의 input과 2개의 output이 존재한다.
cat result.txt : result.txt 읽기 (파일에 저장되어있는 내용을 입력으로 받아 화면에 결과가 출력된다.)
cat은 키보드의 입력을 받아 화면에 출력
cat 명령을 그냥 실행시키면 프로그램이 끝나지 않고 대기 상태에 있게 되고 사용자가 입력한 정보를 standard input으로 받아 standard output으로 출력해준다.
head : 앞쪽에 있는 일부의 텍스트만을 화면에 출력하는 기능
head는 기본 10줄만 출력을 하는데 옵션으로 마이너스 (-n1) 하면 한 줄만 출력을 해준다.
head -n1 < one.txt > two.txt이 코드에는 표준 입력에 대한 리다이렉션과 표준 출력에 대한 리다이렉션이 모두 포함되어 있다. 먼저 ‘one.txt’에 있는 내용이 리다이렉션되어서 head 프로세스에 입력되고 그 처리 결과를 ‘two.txt’에다가 출력을 한다.
append
>> : redirection한 결과를 추가, 즉 뒤에다가 덧붙이는 뜻
<< : 여기에 방향이 바뀌면 입력이란 뜻인데 여러 개의 입력을 하나로 합친다.
쉘과 쉘스크립트
하드웨어 : 컴퓨터의 기계적인 부분들
kernel : 물리적인 기계를 직접적으로 제어하는 그 운영체제에서 가장 중심이 되는 그 코어이다. (핵심, 알갱이, 코어)
shell : 사용자가 입력한 명령을 해석하는 프로그램 (껍데기, 주변)
사용자가 리눅스에서 우리가 입력한 명령이 Shell(셸)을 대상으로 해서 명령을 입력해 준다.
이후 Shell(셸)은 입력한 그 명령을 해석해서 Kernel(커널)이 이해할 수 있는 방식으로 Kernel(커널)에게 전달해준다.
그러면 Kernel(커널)이라고 하는 프로그램은 하드웨어를 제어해서 어떠한 처리를 수행할 수 있도록 명령한다.
하드웨어가 동작하여 그 처리결과를 Kernel(커널)에게 알려주면 Kernel(커널)이 다시 Shell(셸)에게 알려주는 것을 통해서 우리가 입력하여 실행된 결과를 확인해볼 수가 있다.
bash vs zsh
sudo apt-get install zsh : zsh 설치
echo : 뒤에 들어온 문자를 화면에 출력하는 명령어
echo $0 : bash가 뜬다면 이는 shell이라는 카테고리에 속하는 구체적인 제품 중에 하나인 bash라고 하는 프로그램을 쓰고 있음을 의미.
zsh는 탭(tab)을 누르면 실행이 된다.
pwd를 누르면 현재 경로를 보여 주는데 zsh에서는 경로의 앞글자만 쓰고 tab을 누르면 자동완성 시켜준다.
Shell Script
여러 개의 명령을 순차적으로 실행하는 것을 통해서 업무가 이루어지는 경우가 많다.
그 명령의 스크립트를 어딘가에다가 적어놓고 나중에 재사용할 수 있다면 효율적이다.
쉘 스크립트 : 셸에서 실행되는 스크립트 어떤 셸 명령어들이 실행되어야 될 순서를, 실행되어야 될 방법을 각본을 짜서 저장해 놓은 파일
nano backup을 누른 뒤 편집기 실행
#!/bin/bash : 프로그램을 실행시켰을 때 운영 체제는 이 첫 번째 줄에 있는 #! 기호를 보고 그 뒤에 적혀 있는 /bin/bash를 보고 bin 밑에 있는 bash라고 하는 프로그램을 통해서 해석되어야 한다.
if [ -d bak ] : 현재 디렉토리에 bak가 존재하는가?
if ! [ -d bak ]; then : 현재 디렉토리에 bak가 존재하지 않는다면
fi : 조건문 종료
cp *.log bak : .log 모든 파일을 bak에 복사한다.
그 후 Ctrl + X를 누르고 엔터를 누르면 화면 밖으로 나와짐
./backup 하면 Permission denied가 뜨는데 컴퓨터에게 backup이 실행가능하다고 알려줘야 함
chmod +x backup : backup 파일에 x, 실행 가능한 모드를 추가하여 바꾼다.
/
root directory
Linux 시스템의 모든 것은 루트 디렉토리로 알려진 / 디렉토리 아래에 있다.
Linux에는 드라이브 문자가 없다.
/root
root home directory
루트 사용자의 홈 디렉토리이다. /home/root에 있는 대신 /root에 있다.
/bin
Essential User Binaries
시스템이 단일 사용자 모드로 마운트될 때 있어야 하는 필수 사용자 바이너리(프로그램)가 들어가 있다.
컴퓨터는 0과 1로 되어 있다. 실행가능한 것을 컴퓨터에서는 binary라고 한다.
사용자들이 사용하는 명령들이 위치하고 있다.
Firefox와 같은 응용 프로그램은 /usr/bin에 저장되고 bash 셸과 같은 중요한 시스템 프로그램과 유틸리티는 /bin에 저장된다.
/sbin
System Binaries
시스템 프로그램
root 사용자가 쓰는 프로그램들은 sbin에 있다.
/etc
Configuration Files
일반적으로 텍스트 편집기에서 손으로 편집할 수 있는 구성 파일이 있다.
/lib
Essential Shared Libraries
/bin 및 /sbin 폴더의 필수 바이너리에 필요한 라이브러리가 포함되어 있다.
/home
각 사용자의 홈 폴더가 있다.
cd ~를 하면 홈 디렉토리로 한방에 이동할 수 있다.
예를 들어, 사용자 이름이 bob인 경우 /home/bob에 홈 폴더가 있다. 이 홈 폴더에는 사용자의 데이터 파일과 사용자별 구성 파일이 들어 있다. 각 사용자는 자신의 홈 폴더에 대한 쓰기 권한만 가지며 시스템의 다른 파일을 수정하려면 높은 권한(루트 사용자가 됨)을 얻어야 한다.
/var
Variable Files
내용이 바뀔 수 있는 파일들이 있다.
로그 파일 및 정상 작동 중에 일반적으로 /usr에 기록되는 기타 모든 내용은 /var 디렉토리에 기록된다.
/tmp
Temporary Files
여기에 있는 파일들은 reboot되면 없어진다.
/opt
Optional add-on Applications
선택적 소프트웨어 패키지에 대한 하위 디렉토리가 있다.
/usr
User Programs
시스템에서 사용하는 응용 프로그램 및 파일과 달리 사용자가 사용하는 응용 프로그램 및 파일이 포함되어 있다.
예를 들어, 비필수 응용 프로그램은 /bin 디렉토리 대신 /usr/bin 디렉토리에 있고, 비필수 시스템 관리 바이너리는 /sbin 디렉토리 대신 /usr/sbin 디렉토리에 있다.
검색 증강 생성(Retrieval-Augmented Generation, RAG)은 생성형 언어 모델의 능력을 외부의 검증 가능한 지식 소스와 연결하여 강화하는 아키텍처 패턴이다. 이 접근법은 전적으로 사전 훈련된 데이터에만 의존하는 모델의 내재적 한계를 해결하기 위해 고안되었다.
댓글남기기