운영체제실습 리눅스기본명령어 2019. 4 표월성 wspyo74@naver.com cherub.sungkyul.ac.kr 목차 Ⅰ. 기본명령어 1. 시스템정보 2. 파일및디렉토리명령어
시스템정보 1. 시스템정보출력 시스템정보출력 uname - 시스템정보출력
파일및디렉토리관련 명령어 파일및디렉토리 파일 (File) - 데이터를저장하기위해사용되는객체 ( 텍스트파일, 실행파일 ( 실행가능한바이너리파일 ), 그림파일, 동영상파일등 ) 디렉토리 (Directory) - 윈도우의 폴더 (Folder) = 디렉토리 - 파일이나디렉토리를저장하기위해사용되는객체 - 디렉토리도파일 리눅스의파일및디렉토리의 Naming Rules - 파일과디렉토리이름에 / 을사용할수없다. ( 슬래쉬 (/) 는경로명구분자로사용 ) - 알파벳, 숫자, 붙임표 (-), 밑줄 (_), 마침표 (.) 만사용 - 공백문자, *,,,, @, #, $, %, ^, & 등사용불가 - 대소문자구별 - 마침표 (.) 로시작하는파일과디렉토리는숨김파일로간주 예 1) 예 2) 예 3) test.txt &test myhome/,/test hello.c my home bad/name game11
리눅스디렉토리구조 리눅스의디렉토리구조 - 역트리구조 - 최상위디렉토리 : 루트디렉토리 (/) - 디렉토리구분자 : 슬래쉬 (/) 기호사용 ( windows의경우 : 역슬래쉬 (\) 사용 ) 라즈비안디렉토리구조 리눅스디렉토리구조 리눅스의디렉토리구조 / bin etc boot home usr vmlinuz ls pi bin lib
리눅스디렉토리구조 리눅스의디렉토리구조 리눅스디렉토리구조 리눅스의디렉토리구조
리눅스디렉토리구조 리눅스의디렉토리구조 pwd 현재작업중인디렉토리 (Present Working Directory) $pwd cd cd (change directory) - 디렉토리변경 ( 현재작업디렉토리위치를변경하는것 ) $cd [ 이동할디렉토리명 ] 예1) $cd / 예2) $cd /usr 예3) $cd /home/pi
ls ls (List) 디렉토리내의파일및디렉토리목록출력 Windows의 dir명령과유사 사용법 - $ls [ 옵션 ] [ 디렉토리 ] // 예 ) $ls al /boot ls (List) ls i-node 번호
ls (List) ls ls (List) ls 소유권 ( 파일소유자, 파일소유그룹 ) 링크수 최종수정된날짜및시간 파일및디렉토리이름 파일유형 (type) 허가권 (permission) 파일크기 (byte)
ls 파일유형 (type) ls 파일유형 (type)
ls 와일드카드문자 (Wildcard Character) * : 모든문자? : 하나의문자 마운트 (mount) 시스템마운트 (mount) 특정위치에서파일시스템, 파일, 디렉토리, 장치및특수파일을사용가능하게만드는작업 - 마운트를통해파일시스템, 파일, 디렉토리, 장치, 특수파일을사용자가사용할수있도록함 물리적장치 ( 하드드라이브, DVD/CD-ROM드라이브, FDD 등 ) 도파일시스템으로인식시켜야사용할수있음 어느특정위치 ( 디렉토리 ) 에파일시스템을연결해주어야함 루트권한이필요 $mount - 현재시스템마운트정보출력 $sudo blkid - 현재블록장치에대한속성조회 $sudo fdisk -l
마운트 (mount) 시스템마운트 (mount) #mount -t < 파일시스템타입 > < 장치파일 > < 마운트포인트 > - 장치파일 : /etc/dev - 마운트포인트 : 마운트에사용할디렉토리 #umount < 마운트포인트 > 또는 < 장치파일 > 라즈베리파이는자동마운트안됨 FAT32 는기본적으로지원 마운트 (mount) 시스템마운트 (mount) 마운트할디렉토리생성 ( 마운트포인트생성 ) $sudo mkdir /media/usb
마운트 (mount) 시스템마운트 (mount) 마운트 $sudo mount /dev/sda1 /media/usb 마운트확인 $sudo fdisk -l $sudo df -h $ls /media/usb 언마운트 $sudo umount /media/usb $ls /media/usb 마운트 (mount) 시스템마운트 (mount) 예 ) 시디롬마운트 # mount -t iso9660 /dev/cdrom /media/cdrom # mount /dev/cdrom /media/cdrom MS-DOS 마운트 # mount -t msdos /dev/hda3 /msdos Windows XP 마운트 # mount -t ntfs /dev/hda1 /media/xp ISO 파일마운트 # mount -o loop /root/test.iso /media/iso NFS 파일시스템마운트 # mount -t nfs fedora.net:/home/nfs /fedora-nfs // fedora( 콜론 :)net/home/nfs
마운트 (mount) 자동마운트 : - 파일시스템마운트테이블 : /etc/fstab < 장치명 >, < 마운트디렉토리 >, < 파일시스템 >, < 옵션 >, < 덤프 (dump)>, < 파일시스템점검여부 > $sudo vi /etc/fstab 마운트 (mount) 자동마운트 : - 파일시스템마운트테이블 : /etc/fstab < 장치명 >, < 마운트디렉토리 >, < 파일시스템 >, < 옵션 >, < 덤프 (dump)>, < 파일시스템점검여부 >
마운트 (mount) 자동마운트 : - 파일시스템마운트테이블 : /etc/fstab < 장치명 >, < 마운트디렉토리 >, < 파일시스템 >, < 옵션 >, < 덤프 (dump)>, < 파일시스템점검여부 > 마운트 (mount) 자동마운트 : - 파일시스템마운트테이블 : /etc/fstab < 장치명 >, < 마운트디렉토리 >, < 파일시스템 >, < 옵션 >, < 덤프 (dump)>, < 파일시스템점검여부 >
마운트 (mount) NTFS 파일시스템마운트 #mount -t < 파일시스템타입 > < 장치파일 > < 마운트포인트 > $sudo apt-get install ntfs-3g $sudo mount -t ntfs /dev/sda1 /media/usb # NTFS 인식을위한모듈설치 $sudo nano /etc/fstab /dev/sda1 /media/usb ntfs default 0 0 ( 참고 ) 라즈베리파이에서 FAT32 / NTFS 지원가능 경로 (path) 경로 (path) - 디렉토리계층구조에있는특정파일이나디렉토리의위치 - 경로를구분하는구분자 : / 절대경로 (Absolute Path) / ( 루트디렉토리 ) 를기준으로한경로 반드시 / ( 루트디렉토리 ) 로시작한다. 루트디렉토리 /bin/ls 디렉토리구분자 / ( 루트디렉토리 ) 로부터시작하여, 특정파일이나디렉토리위치까지이동하면서, 거치게되는모든중간디렉토리의이름을표시 특정위치를가리키는절대경로명은항상동일
경로 (path) 상대경로 (Relative Path) 현재작업디렉토리를기준으로한경로 상대경로명은현재디렉토리가어디냐에따라달라짐 ( 상대경로명은항상달라짐 ) / ( 루트디렉토리 ) 이외의문자로시작 현재디렉토리를기준으로, 서브디렉토리로내려가면서, 서브디렉토리의이름을추가 현재디렉토리를기준으로상위디렉토리로가려면,..( 마침표 2개 ) 를사용 / bin etc boot home usr vmlinuz ls pi bin lib 경로 (path) 홈디렉토리 (~) 각사용자에게할당된디렉토리 처음사용자계정을만들때지정 - $cd ~pi - $cd ~ - $cd
mkdir 디렉토리생성 (make directory) 하나의 Directory 생성 $mkdir < 생성할디렉토리명 > ex) $mkdir test // test 디렉토리생성 2 개이상 Directory 생성 $mkdir < 디렉토리 1> < 디렉토리 2> ex) $mkdir dir1 dir2 // dir1 디렉토리와 dir2 디렉토리생성 하위디렉토리까지한번에생성 $mkdir -p < 디렉토리명 > ex) $mkdir p./infolinux/201ho/3com // 한번에하위디렉토리까지한번에생성 cp 파일 or 디렉토리복사 (copy) 파일복사 $cp [ 옵션 ] < 원본파일 > < 대상파일 > 예 ) $cp./exam.c./temp.c // 현재디렉토리에있는 exam.c파일을현재디렉토리에 temp.c로복사 $cp [ 옵션 ] < 원본파일 > < 원본파일2> 대상디렉토리예 ) $cp./exam.c./temp.c./sss // 현재디렉토리에있는 exam.c와 temp.c파일을 sss 디렉토리로복사 디렉토리복사 $cp [ 옵션 ] < 원본디렉토리 > < 대상디렉토리 > 예 ) $cp -r dir1 dir2 // dir1디렉토리와 dir2디렉토리복사
rm 파일 or 디렉토리삭제 (remove) 파일및디렉토리삭제 $rm [ 옵션 ] < 삭제할파일 > 예 ) $rm./exam.c // 현재디렉토리에있는 exam.c 파일을삭제 $rm [ 옵션 ] < 삭제할파일 1> < 삭제할파일 2> 예 ) $rm -rf./exam.c./temp.c./sss // 현재디렉토리에있는 exam.c 와 temp.c 파일와 sss 디렉토리를강제로삭제 비어있는디렉토리삭제 (rmdir) $rmdir < 삭제할빈디렉토리 > 예 ) $rmdir dir1 // 비어있는 dir1디렉토리삭제 rm 파일 or 디렉토리삭제 (remove)
mv 파일 or 디렉토리이동 (move) / 이름변경 (rename) 이름변경 (rename) $mv [ 옵션 ] < 원본파일 > < 이름변경파일 > 예 ) $mv./exam.c./temp.c // 현재디렉토리에있는 exam.c파일의이름을 temp.c파일로이름변경 $rm [ 옵션 ] < 원본디렉토리 > < 변경디렉토리 > 예 ) $mv dir1 dir2 // 현재디렉토리에있는 dir1 디렉토리의이름을 dir2 로변경 이동 (move) $mv [ 옵션 ] < 원본파일 > < 디렉토리 > 예 ) $mv./exam.c./dir2 // 현재디렉토리에있는 exam.c 파일을 dir2 디렉토리로이동 touch 크기가 0인파일생성 $touch < 파일명 > 예 ) $touch tempfile cat 텍스트 (txt) 파일의내용출력 $cat <txt 파일 > - 예 ) $cat./test.txt // test.txt 파일의내용보기 텍스트 (txt) 파일생성 1. $cat > txt 파일 - 예 ) $cat > test.txt // test.txt 파일생성 2. $cat >> txt 파일 - 예 ) $cat >> test.txt // test.txt 파일생성 <Ctrl>+d
리다이렉션 (Redirection) 입력리다이렉션 ( > ) > : 파일생성 / 덮어쓰기 - 파일생성 - 파일내용덮어쓰기 예 ) $cat > test.txt (test.txt 파일이존재하는경우, 내용을덮어씀 ) >> : 파일생성 / 내용추가 - 파일생성 : 파일이존재하는경우 - 내용추가 : 파일이존재하지않는경우 예 ) $cat >> test.txt 출력리다이렉션 ( < ) - 텍스트파일내용출력 예 ) $cat < test.txt 리다이렉션 (Redirection) 1. vi 로 test.txt 파일생성 2. cat 명령으로 test.txt 파일내용보기 3. cat 명령과리다이렉션 (>>) 을활용하여 test.txt 파일에내용추가 - 저장 : <Ctrl> + d 4. cat 명령으로 test.txt 파일에서추가한내용보기 -b : 라인번호표시 ( 빈줄제외 ) -n : 라인번호표시 ( 빈줄까지 )
more 파일의내용을화면단위로분할출력 한줄씩출력 : <enter> 키 한화면단위출력 : <space bar> 키 $more < 파일명 > - 예 ) $more test.txt - test.txt 파일의내용을화면단위로출력 $more n < 파일명 > - 예 ) $more -10 test.txt - test.txt 파일의내용을 10 줄씩출력 $more +n < 파일명 > - 예 ) $more +10 test.txt - test.txt 파일의내용을 10 번째줄부터출력 less 파일의내용을화면단위로분할출력 More명령어를확장한명령어 화살표키, PageUP/Down키등을사용가능 종료 : q $less < 파일명 > 예 ) $less test.txt - test.txt 파일의내용을화면단위로출력 $less +n < 파일명 > 예 ) $less +10 test.txt - test.txt 파일의내용을 10 번째줄부터출력 head 파일의내용중처음 10줄만화면에출력 $head < 파일이름 > $head -3 < 파일이름 > // default : 10 줄 // 앞에서 3 줄만출력 tail 파일의내용중, 마지막 10 줄을화면에출력 $tail < 파일이름 > $tail -5 < 파일이름 > // default : 10cnf // 마지막 5 줄출력
find 파일찾기 $find < 경로명 > < 검색조건 > [ 동작 ] 검색조건 ( 옵션 ) 1 - name < 파일이름 > : 파일이름으로검색 // $find /home/pi -name test.txt 2 - type < 파일종류 > : 파일종류로검색 // $sudo find / -name etc* -type d : etc로시작하는디렉토리검색 3 - user <id> : 사용자 (ID) 가소유한파일검색 4 - perm < 접근권한 > : 접근권한과일치하는파일검색 // 동작 1 - exec 명령 {} \; // 해당명령실행 $find /home/pi/test -user pi -exec rm {} \; find 명령으로찾은파일의절대경로가 {} 가있는위치에삽입 2 - ok 명령 {} \; $find /home/pi/test -user pi -ok rm {} \; // 해당명령을실행하기전에사용자에게확인 3 - ls $find /home/pi -name.bash* -ls // 검색결과를 ls 형식으로출력 find 검색조건 ( 옵션 ) 1 - name < 파일이름 > : 파일이름으로검색 // $find /home/pi -name test.txt
find 검색조건 ( 옵션 ) 2 - type < 파일종류 > : 파일종류로검색 // $sudo find / -name etc* -type d : etc로시작하는디렉토리검색 3 - user <id> : 사용자 (ID) 가소유한파일검색 4 - perm < 접근권한 > : 접근권한과일치하는파일검색 find 동작 1 - exec 명령 {} \; // 해당명령실행 $find /home/pi/test -user pi -exec rm {} \; find 명령으로찾은파일의절대경로가 {} 가있는위치에삽입
find 파일찾기 $find < 경로명 > < 검색조건 > [ 동작 ] grep 파일내용중원하는문자열검색 $grep [ 옵션 ] 문자열 < 파일명 >
grep 명령어결과중원하는문자열검색 /etc/services 파일에서 NETBIOS 를포함한행을행번호와함께출력하라? clear 화면의내용을지워줌 $clear file 파일의종류를출력 - windows는확장자를보고파일의종류를확인 - 리눅스는확장자가없는경우도많음 - 예 ) $file /bin/gzip
파일링크 링크 - 기존파일에새로운파일명을붙이는것 - 경로가복잡하거나, 파일명이복잡한경우, 짧게줄여서사용 링크의목적 - 긴파일명이나디렉토리명을짧게줄여사용하기위해사용 - 파일의위치가비실행경로에있을경우, 해당파일을실행하기위해사용 - 파일의경로의길이가긴경우, 간단하게이동하기위해사용 링크의종류 - 하드링크 (Hard Link) - 심볼릭링크 (Symbolic Link) 하드링크 하드링크파일 - 기존파일에새로운파일명을붙이는것 - 원본파일의또다른이름 하드링크의특징 - 링크파일을수정하면, 원본파일도수정됨 - 링크시, 원본파일, 링크파일모두 Link수 1 증가 Inode 동일 - 원본삭제시, 링크파일은정상 - 각각같은 inode 를갖는다. ($ls -il) 링크수 : 1 증가 (1 2) 사용법 $ln < 원본파일 > < 링크파일 > 예 ) $ln srcfile hdlink srcfile 파일을 hdlink 파일로하드링크 링크파일수정시, 원본파일도수정 srcfile hdlink 링크수 : 1 감소 (2 1) 원본파일삭제시, 링크파일문제없음
심볼릭링크 심볼릭링크파일 - 기존파일을가리키는새로운파일생성하는것 - 원본파일을가리키는포인터의개념 ( 윈도우바로가기 ) 하드링크의특징 Inode 다름링크수 : 1 - 링크파일을수정하면, 원본파일도수정됨 - 링크시, 원본파일, 링크파일모두 Link수증가하지않음 - 원본삭제시, 링크파일은문제발생 ( 링크깨짐 ) - 각각다른 inode 를갖는다. ($ls -il) 링크파일수정시, 원본파일도수정 사용법 $ln -s < 원본파일 > < 링크파일 > 예 ) $ln -s srcfile hdlink srcfile 파일을 hdlink 파일로심볼릭링크 srcfile 링크수 : 1 로변화없음 symlink 원본파일삭제시, 링크파일문제발생