본인 윈도우 유저 .. 띠용
multipass 설치하여 Ubuntu 24.04 LTS 설치. Noble Numbat
리눅스 커맨드라인(번역)
The Linux Command Linue:A Complete introduction(원서)을 보고 쓴 글
리눅스에는 버퍼 기능이 있어서, 마우스 왼쪽 버튼으로 (마우스 드래그 또는 단어 두번 클릭해 강조 표시)하면 X에서 관리하는 버퍼에 복사됨.
마우스 가운데 버튼을 누르면 커서 위치에 텍스트가 붙여짐
but 내환경에서는 안됐었음.. ㄸㄹㄹ
간단한 명령어
$ whoami
ubuntu
$ date
Tue Nov 5 06:13:31 UTC 2024
# 기본으로 설치되어 있지 않다.
# sudo apt install ncal로 설치
$ cal
November 2024
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
# 디스크 드라이브의 현재 여유 공간 확인
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 15115452 5012392 9949716 34% /
/dev/sda5 59631908 26545424 30008432 47% /home
/dev/sda1 147764 17370 122765 13% /boot
tmpfs 256856 0 256856 0% /dev/shm
# 사용 가능한 메모리 양
$ free
total used free shared buffers cached
Mem: 513712 503976 9736 0 5312 122916
-/+ buffers/cache: 375748 137964
Swap: 1052248 104712 947536
Linux가 MINIX에서 발전한 점은, EXT로 파일 이름과 파일 크기의 한계를 보완하며 설계한 점
but EXT 도 문제가 있었음
이러한 한계를 극복하기 위해 EXT2 등장, 나중엔 EXT3, EXT4까지 등장
EXT3의 발전
EXT3 여기서도,,
파일시스템과 파일의 최대 크기가 작고 연속적인 데이터 블록에 대해 비효율적인 인덱싱 방식을 사용하는 등 여러 단점이 존재
EXT4의 발전
파티션 당 하나의 파일 시스템이 존재한다
그리고 또다른 파일시스템
XFS: 64bit
Btrfs: Copy-on-Write 파일시스템
ZFS: Sun Microsystems에서 개발한 파일시스템으로 Solaris에 탑재
이거에 대한 자세한 내용은 이 글 참고
유닉스 계열 운영체제는 계층적 디렉토리 구조(hierarchical directory structure) 라고 하는 방식으로 파일을 구성
각 저장 장치마다 별도의 파일 시스템 트리가 있는 Windows와 달리 리눅스와 같은 유닉스 계열 시스템에서는 컴퓨터에 연결된 드라이브 또는 저장 장치 수에 관계없이 항상 하나의 파일 시스템 트리가 있다
저장 장치는 시스템 유지 관리를 담당하는 시스템 관리자(system administrator) 의 변덕에 따라 트리의 여러 지점에 연결(또는 더 정확하게는 마운트)된다
$ pwd # 현재 작업 디렉토리 이름 출력
$ cd # 디렉토리 변경
$ cd - # 이전 작업 디렉토리로 변경
$ cd ~user_name # 작업 디렉토리를 user_name의 홈디렉토리로 변경
ls
디렉토리 내용을 나열한다
short | long version | description |
---|---|---|
-a | 숨겨진 파일 포함 현재 디렉토리의 전체 내용 나열 | |
-A | --almost-all | . (현재 디렉토리) 및 .. (상위 디렉토리)를 나열하지 않는다는 점을 제외하면 위의 -a 옵션과 비슷합니다. |
-d | --directory | 일반적으로 디렉토리를 지정하면 ls는 디렉토리 자체가 아니라 디렉토리의 내용을 나열합니다. 이 옵션을 -l 옵션과 함께 사용하면 디렉토리의 내용이 아닌 디렉토리에 대한 세부 정보를 볼 수 있습니다. |
-F | --classify | 이 옵션은 나열된 각 이름 끝에 표시 문자를 추가합니다. 예를 들어, 이름이 디렉토리인 경우 슬래시(/)를 추가합니다. |
-h | --human-readable | 긴 형식의 목록에서는 파일 크기를 바이트 단위가 아닌 사람이 읽을 수 있는 형식으로 표시합니다. |
-l | 결과를 긴 형식(long format)으로 표시 | |
-r | --reverse | 결과를 역순으로 표시합니다. 일반적으로 ls는 결과를 알파벳 오름차순으로 표시합니다. |
-S | 파일 크기별로 결과 정렬 | |
-t | 파일 수정 시간별로 결과 정렬 |
ls
의 상세 필드-rw-r--r-- 1 root root 3576296 2017-04-03 11:05 Experience ubuntu.ogg
-rw-r--r-- 1 root root 1186219 2017-04-03 11:05 kubuntu-leaflet.png
-rw-r--r-- 1 root root 47584 2017-04-03 11:05 logo-Edubuntu.png
-rw-r--r-- 1 root root 44355 2017-04-03 11:05 logo-Kubuntu.png
-rw-r--r-- 1 root root 34391 2017-04-03 11:05 logo-Ubuntu.png
-rw-r--r-- 1 root root 32059 2017-04-03 11:05 oo-cd-cover.odf
-rw-r--r-- 1 root root 159744 2017-04-03 11:05 oo-derivatives.doc
-rw-r--r-- 1 root root 27837 2017-04-03 11:05 oo-maxwell.odt
-rw-r--r-- 1 root root 98816 2017-04-03 11:05 oo-trig.xls
-rw-r--r-- 1 root root 453764 2017-04-03 11:05 oo-welcome.odt
-rw-r--r-- 1 root root 358374 2017-04-03 11:05 ubuntu Sax.ogg
field | meaning |
---|---|
-rw-r--r-- | 파일에 대한 접근 권한. 첫 번째 문자는 파일 타입을 나타냅니다. 여러 타입 중 앞의 대시는 일반 파일을 의미하며, "d"는 디렉토리를 나타냅니다. 다음 세 문자는 파일 소유자에 대한 액세스 권한, 그 다음 세 문자는 파일 그룹 구성원에 대한 액세스 권한, 마지막 세 문자는 그 외 모든 사람에 대한 액세스권한 |
1 | 파일의 하드 링크 수. |
root | 파일 소유자의 사용자명 |
root | 파일을 소유한 그룹의 이름 |
32059 | 파일의 크기(바이트) |
2017-04-03 11:05 | 파일을 마지막으로 수정한 날짜 및 시간 |
oo-cd-cover.odf | 파일 이름 |
file
[me@linuxbox ~]$ file picture.jpg
picture.jpg: JPEG image data, JFIF standard 1.01
유닉스 계열 운영 체제의 일반적인 생각 중 하나는 "모든 것이 파일이다"
less
파일 내용을 보는 프로그램
긴 텍스트 문서를 한 페이지씩 쉽게 볼 수 있도록 하는 프로그램인 "Pager" 부류 프로그램에 속한다.
more이라는 프로그램도 있었으나, more은 앞으로만 페이징 가능하지만, less는 앞뒤로 페이징할 수 있고, 다른 기능도 많음
명령 | 동작 |
---|---|
Page Up or b | 한 페이지 위로 스크롤 |
Page Down or space | 한 페이지 아래로 스크롤 |
Up arrow | 한 줄 위로 스크롤 |
Down arrow | 한 줄 아래로 스크롤 |
G | 텍스트 파일의 끝으로 이동 |
1G or g | 텍스트 파일의 시작 부분으로 이동 |
/characters | 다음 검색 characters 앞으로 이동 |
n | 이전 검색의 다음 항목 검색 |
h | 도움말 화면 표시 |
q | less 종료 |
mkdir
디렉토리를 만든다
mkdir directory...
: 명령어에서 마침표 세 개(...)가 인수 뒤에 오는 경우, 해당 인수가 반복될 수 있음을 의미
mkdir dir1
mkdir dir1 dir2 dir3 # 세 개의 디렉토리가 생성된다
cp
파일이나 디렉토리를 복사한다
cp item1 item2 # 단일 파일(디렉토리) item1을 파일(디렉토리) item2에 복사한다
cp item... directory # 여러 item(파일 또는 디렉토리)을 directory에 복사한다
옵션 | 긴옵션 | 의미 |
---|---|---|
-a | --archive | 파일 및 디렉토리와 소유권 및 권한을 포함한 모든 속성을 복사합니다. 일반적으로 복사는 복사를 수행하는 사용자의 기본 속성을 갖습니다. |
-i | --interactive | 기존 파일을 덮어쓰기 전에 사용자에게 확인 메시지를 표시합니다. 이 옵션을 지정하지 않으면 cp가 자동으로(즉, 경고 없이) 파일을 덮어씁니다. |
-r | --recursive | 디렉토리와 그 내용을 재귀적으로 복사합니다. 디렉토리를 복사할 때 이 옵션(또는 -a 옵션)이 필요합니다. |
-u | --update | 한 디렉토리에서 다른 디렉토리로 파일을 복사할 때 대상 디렉토리에 존재하지 않거나 기존 해당 파일보다 최신인 파일만 복사합니다. 이 기능은 복사할 필요가 없는 파일을 건너뛰기 때문에 많은 수의 파일을 복사할 때 유용합니다. |
-v | --verbose | 복사가 수행될 때 정보 메시지를 표시합니다. |
cp file1 file2 dir1
# file1과 file2를 디렉토리 dir1에 복사합니다.
# dir1 디렉토리가 이미 존재해야 합니다.
cp dir1/* dir2
# 와일드카드를 사용하여 dir1에 있는 모든 파일을 dir2에 복사합니다.
# dir2 디렉토리는 이미 존재해야 합니다.
cp -r dir1 dir2
# 디렉토리 dir1의 내용을 디렉토리 dir2로 복사합니다.
# 디렉토리 dir2가 존재하지 않으면 디렉토리가 생성되고 복사 후 디렉토리 dir1과 동일한 내용을 포함합니다.
# 디렉토리 dir2가 존재하면 디렉토리 dir1(및 그 내용)이 dir2에 복사됩니다.
mv
파일 이동 및 이름 바꾸기
cp와 거의 동일한 방식으로 사용된다
옵션 | 긴옵션 | 의미 |
---|---|---|
-i | --interactive | 기존 파일을 덮어쓰기 전에 사용자에게 확인 메시지를 표시합니다. 이 옵션을 지정하지 않으면 mv가 자동으로 파일을 덮어씁니다. |
-u | --update | 한 디렉토리에서 다른 디렉토리로 파일을 이동할 때는 대상 디렉토리에 존재하지 않거나 기존 해당 파일보다 최신인 파일만 이동합니다. |
-v | --verbose | 이동이 수행될 때 정보 메시지를 표시합니다. |
rm
파일 및 디렉토리 제거
옵션 | 긴옵션 | 의미 |
---|---|---|
-i | --interactive | 기존 파일을 삭제하기 전에 사용자에게 확인 메시지를 표시합니다. 이 옵션을 지정하지 않으면 rm이 자동으로 파일을 삭제합니다. |
-r | --recursive | 디렉토리를 재귀적으로 삭제합니다. 즉, 삭제할 디렉토리에 하위 디렉토리가 있는 경우 하위 디렉토리도 삭제합니다. 디렉토리를 삭제하려면 이 옵션을 지정해야 합니다. |
-f | --force | 존재하지 않는 파일을 무시하고 메시지를 표시하지 않습니다. 이 옵션은 --interactive 옵션을 재정의합니다. |
-v | --verbose | 삭제가 수행될 때 정보 메시지를 표시합니다. |
rm 사용할 때 유의할 점
유닉스 계열 운영체제에는 삭제 취소 명령이 없다.
와일드카드를 사용할 때 특히 주의해야한다rm *.html
를
rm * .html
이렇게 *와 .html 사이에 공백을 넣으면 디렉토리의 모든 파일을 삭제한 다음, .html 파일이 없다고 말할 것이다
TIP rm과 함께 와일드카드를 사용할 때마다 먼저 ls를 사용하여 와일드카드를 테스트하자. 그럼 삭제할 파일을 확인하고, 이전 명령어에서 ls->rm하여 명령어를 실행한다!
리눅스의 기본 디렉토리
디렉토리 | 설명 |
---|---|
/ | root 디렉토리. 모든 것이 시작되는 곳입니다. |
/bin | 시스템을 부팅하고 실행하기 위해 반드시 있어야 하는 바이너리(프로그램)가 들어 있습니다. |
/boot | 리눅스 커널, 초기 RAM 디스크 이미지(부팅 시 필요한 드라이버용) 및 부트 로더가 포함되어 있습니다. |
/dev | 이것은 device node가 포함된 특수 디렉토리입니다. "모든 것이 파일이다"라는 말은 디바이스에도 적용됩니다. 커널이 이해하는 모든 디바이스의 목록을 유지하는 곳입니다. |
/etc | /etc 디렉토리에는 시스템 전체의 모든 구성 파일이 포함되어 있습니다. 또한 부팅 시 각 시스템 서비스를 시작하는 셸 스크립트 모음도 포함되어 있습니다. 이 디렉토리에 있는 모든 파일은 읽을 수 있는 텍스트여야 합니다. |
/home | 일반적인 구성에서는 각 사용자에게 /home에 디렉토리가 제공됩니다. 일반 사용자는 자신의 홈 디렉토리에만 파일을 쓸 수 있습니다. 이 제한은 잘못된 사용자 활동으로부터 시스템을 보호합니다. |
/lib | 핵심 시스템 프로그램에서 사용하는 공유 라이브러리 파일을 포함합니다. 이는 Windows의 동적 링크 라이브러리(DLL)와 유사합니다. |
/lost+found | ext4와 같은 리눅스 파일 시스템을 사용하는 포맷된 각 파티션 또는 장치에는 이 디렉토리가 있습니다. 이 디렉토리는 파일 시스템 손상 이벤트에서 부분적으로 복구하는 경우에 사용됩니다. 시스템에 정말 심각한 문제가 발생하지 않는 한 이 디렉토리는 비어 있는 상태로 유지됩니다. |
/media | 최신 리눅스 시스템에서 /media 디렉토리에는 삽입 시 자동으로 마운트되는 USB 드라이브, CD-ROM 등의 이동식 미디어에 대한 마운트 지점이 포함됩니다. |
/mnt | 구형 리눅스 시스템에서는 /mnt 디렉토리에 수동으로 마운트한 이동식 장치에 대한 마운트 지점이 있습니다. |
/opt | /opt 디렉토리는 "선택적(optional)" 소프트웨어를 설치하는 데 사용됩니다. 주로 시스템에 설치될 수 있는 상용 소프트웨어 제품을 보관하는 데 사용됩니다. |
/proc | /proc 디렉토리는 특별합니다. 하드 드라이브에 저장된 파일이라는 의미에서 실제 파일 시스템이 아닙니다. 그보다는 리눅스 커널에 의해 유지되는 가상 파일 시스템입니다. 여기에 포함된 "파일"은 커널 자체에 대한 엿보기입니다. 파일은 읽을 수 있으며 커널이 컴퓨터를 어떻게 보는지 알 수 있습니다. |
/root | root 계정의 홈 디렉토리입니다. |
/sbin | 이 디렉토리에는 "시스템(system)" 바이너리가 포함되어 있습니다. 일반적으로 수퍼유저를 위해 예약된 중요한 시스템 작업을 수행하는 프로그램입니다. |
/tmp | tmp 디렉토리는 다양한 프로그램에서 생성된 임시 임시 파일을 저장하는 용도로 사용됩니다. 일부 구성에서는 시스템을 재부팅할 때마다 이 디렉토리가 비워지기도 합니다. |
/usr | /usr 디렉토리 트리는 리눅스 시스템에서 가장 큰 디렉토리 트리일 가능성이 높습니다. 여기에는 일반 사용자가 사용하는 모든 프로그램과 지원 파일이 포함되어 있습니다. |
/usr/bin | /usr/bin에는 리눅스 배포에서 설치한 실행 프로그램이 들어 있습니다. 이 디렉토리에 수천 개의 프로그램이 있는 경우도 드물지 않습니다. |
/usr/lib | /usr/bin에 있는 프로그램에 대한 공유 라이브러리. |
/usr/local | /usr/local 트리는 배포판에 포함되어 있지 않지만 시스템 전체에서 사용하기 위한 프로그램이 설치되는 곳입니다. 소스 코드에서 컴파일된 프로그램은 일반적으로 /usr/local/bin에 설치됩니다. 새로 설치된 리눅스 시스템에는 이 트리가 존재하지만 시스템 관리자가 무언가를 넣을 때까지는 비어 있습니다. |
/usr/sbin | 더 많은 시스템 관리 프로그램이 포함되어 있습니다. |
/usr/share | /usr/share에는 /usr/bin에 있는 프로그램에서 사용하는 모든 공유 데이터가 들어 있습니다. 여기에는 기본 구성 파일, 아이콘, 화면 배경, 사운드 파일 등이 포함됩니다. |
/usr/share/doc | 시스템에 설치된 대부분의 패키지에는 일종의 문서가 포함되어 있습니다. /usr/share/doc에서는 패키지별로 정리된 문서 파일을 찾을 수 있습니다. |
/var | 지금까지 살펴본 디렉토리 중 /tmp와 /home을 제외하고는 비교적 정적인, 즉 내용이 변경되지 않는 디렉토리입니다. /var 디렉토리 트리는 변경될 가능성이 있는 데이터가 저장되는 곳입니다. 각종 데이터베이스, 스풀 파일, 사용자 메일 등이 여기에 있습니다. |
/var/log | /var/log에는 다양한 시스템 활동의 기록인 로그 파일이 들어 있습니다. 이러한 파일은 중요하므로 수시로 모니터링해야 합니다. 가장 유용한 파일은 /var/log/messages와 /var/log/syslog입니다. 일부 시스템에서는 보안상의 이유로 수퍼유저만 로그 파일을 볼 수 있다는 점에 유의하세요. |
흥미로운 파일
/boot/grub/grub.conf
또는menu.lst
: 부트 로더를 구성하는 데 사용/boot/vmlinuz
(또는 이와 유사한 것) : 리눅스 커널/etc/crontab
: 자동화된 작업이 실행되는 시기를 정의하는 파일/etc/fstab
: 저장 장치 및 관련 마운트 지점에 대한 테이블/etc/passwd
: 사용자 계정 목록
참고하면 좋을 링크 https://www.yalco.kr/35_linux/