기본 콘텐츠로 건너뛰기

리눅스 스터디 - 첫째 주2

2.파일과 디렉터리

파일의 종류:

ordinary file - 리눅스에 있는 대부분의 파일이 일반 파일이다. 아스키코드 텍스트나 실행 가능한 프로그램 등을 가진 데이터의 기본 저장소이다.
directory - 다른 파일과 디렉토리를 추적하고 장소를 알아내는데 사용한다. 다른 디렉토리(폴더)을 포함하면서 계층구조를 이룬다. 이진수의 형태로 이루어졌기 때문에 수많은 디렉토리(폴더)들을 빠르게 찾을 수 있다.
❆폴더과 디렉토리 - 비슷한 의미를 가진다. 윈도우에서는 폴더를, 리눅스에서는 디렉토리라는 말을 더 자주 쓴다.
special file - 시스템에 접속하는 기기에 대응하는 파일이다. 키보드, 프린터 등을 파일처럼 사용한다.
❄파일과 폴더 - 파일은 책, 폴더는 책꽂이와 같은 개념이다. 폴더는 파일을 분류해 담아놓는 역활을 한다.

디렉토리의 계층구조:

리눅스의 디렉토리는 트리  형태를 가진다. 
/ - 루트 디렉토리, 시작점
/bin - 기본 명령어(실행 파일)
/sbin - 부팅과 관련된 명령어
/etc  - 시스템 관리를 위한 명령어와 파일(부팅, 셧다운, 설정 등)
/boot - 커널 이미지
/dev - 물리적인 장치를 가리키는 특수파일
/home - 사용자 홈 디렉토리(로그인 했을 때 처음 위치하는 곳)
/root - 관리자 홈 디렉토리
/lib - 프로그램의 라이브러리(공유 라이브러리, 커널 모듈 존재)
/var - 변할 수 있는 변수들을 포함(메일, 로그 스풀링, 웹 서비스)
/tmp - 임시 저장용으로 사용(시스템 시동시, 내용이 모두 삭제됨)
/user - 명령어, 시스템 프로그램, 라이브러리 등



디렉토리 관련 명령어

pwd(print working directory)

현재 위차한 곳을 알 수 있다. 
현재 위치: home--choi

mkdir(make directory)

mkdir 만들 디렉터리 이름

foo라는 디렉터리가 생긴 것을 확인할 수 있다. 


cd


cd 이동할 디렉토리 이름

현재 위치가 foo로 이동한 걸 확인할 수 있다. 

ls(list)

디렉터리의 내용을 출력해줌




ls - s(size)

디렉터리 안의 파일 이름과 블록의 크기를 같이 출력함


ls -a(all)

숨겨진 파일까지 모두 출력한다.

"."은 현재의 디렉터리, ".."은 부모 디렉터리를 뜻한다.

ls -l(long)


디렉터리 안의 파일에 정보를 모두 출력한다.
파일 이름, 소유자, 소유 그룹, 크기 날짜를 확인 할 수 있다.


ls -sal

-s, -a, -l 을 모두 합쳐서 출력한다.


☘주로 ls -l을 많이 사용한다. 파일들이 세로 정렬하여 출력하기 때문에 알아보기 쉽고 많은 정보를 포함하기 때문이다.


☘ls [옵션] 디렉터리* 파일*





경로명

절대 경로명
/home/practice/tiger.txt

상대 경로명
현재 작업 위치가 practice 일 경우
tiger.txt

홈디렉터리: ~
현재 디렉터리: .
부모 디렉터리: ..

파일 내용 리스트 형식

명령어 파일이름*
→ * :만일 파일 이름이 여러 개라면(0~다수) 모든 파일에 대해 명령어를 실행한다는 의미(more제외)
more 파일이름+
→+: 하나 이상의 파일을 적어야 함

cat(concatenate)

cat > 파일

내용

^D

→파일이 새롭게 만들어짐

cat 파일

파일 내용 출력

cat

내용

^D

입력받은 내용을 출력함

윗 줄 1234를 입력한 엔터를 누르면 아랫줄의 1234가 출력됨
작업을 끝내고 싶으면 ^D를 누름

more 파일

하나 이상의 파일을 입력받아 각각의 파일은 페이지 단위로 출력

가장 아랫쪽에 얼마 만큼 출력됐는지 퍼센트가 나온다. 



계속해서 보려면 스페이스바를, 끝내려면 q를 누르면 된다.

2개의 파일을 입력

중간에 파일이 넘어가는 것을 표시

각 파일의 윗 부분에는 내용을 출력하기 전에 파일의 이름을 출력함

head 파일

앞의 10줄을 출력

화면이 작아서 아랫쪽 줄이 잘림(사진에서만)

head -숫자 파일

앞에서 부터 숫자만큼의 줄을 출력함



tail 파일

파일 뒤에서 부터 10줄을 출력함

화면이 작아서 아랫줄이 잘림(사진에서)

tail -숫자 파일

파일 뒤에서부터 '숫자'번째 줄까지 출력함

화면이 작아서 아랫줄리 잘림(사진에서)

wc 파일

파일에 저장된 줄, 단어, 문자의 개수를 출력한다.

문자의 개수 = 파일의 크기(바이트 수)
옵션:
-l 줄 수
-w 단어 수
-c 문자 수

cp 파일1 파일2

파일1을 복사해서 파일2를 만든다. 

cakelover2.txt 가 새로 생김

cp 파일 디렉터리

파일의 복사본을 디렉터리에 만들어준다.



mv 파일1 파일2

파일1의 이름을 파일2로 바꿈



ls -l로 확인해 보면 tiger.txt 가 사라지고 tigerimformation.txt가생겼다.

mv 파일 디렉터리

파일을 디렉터리로 이동함


tmp에서 cakelover.txt를 찾을 수 있다. 

 rm 파일+

파일을 지움

파일이 사라진 것을 확인할 수 있다.














댓글

이 블로그의 인기 게시물

C언어 - 1~100 사이의 소수 구하기

  C 문제 정수 값을 인자로 받아서 소수인지 판단하는 IsPrime 함수를 정의하고 이 함수를 이용해 1 부터 100 사이의 소수를 모두 구해서 출력하는 프로그램을 작성하시오 .   1.main 함수 만들기 IsPrime 이라는 함수에 인자를 2 부터 99 로 넣어주는 함수를 만들어야 한다 . 반복을 위해 for 함수를 사용한다 . main 함수의 타입이 int 이기 때문에 return 값을 적어줘야 함 .   2.IsPrime 함수 만들기 딱히 반환해야 할 값이 없기 때문에 타입은 void 경우를 2 가지로 나눔 . ①if  인자가 2 일 경우 --> 2 는 소수이기 때문에 2 를 출력함 ②else  인자가 2 가 아닐 경우 --> 2 부터 ( 인자 -1) 까지의 수로 인자를 나눠서 모든 경우에 나머지가 0 이 아니면 소수임 . 즉 어떤 숫자로 나눠 떨어지면 소수가 아니라는 의미로 더이상의 경우를 확인할 필요가 없음 . 따라서 반복하던 for 문을 빠져나옴 . for 문이 끝난 후 인자의 값과 count 의 값이 같다면 count 의 어떠한 숫자로도 인자가 나누어지지 못했다는 의미이다 . 이는 소수라는 뜻과 마찬가지이기 때문에 이 경우에 인자를 출력한다 .   3. 기타 출력한 후 모습을 살펴보는데 IsPrime 에서의 출력이 숫자 끝에 콤마 (,) 가 붙기 때문에 모든 출력이 끝나도 마지막 숫자 뒤에 콤마가 붙어 있다 . 이를 없애기 위해서는 이스케이프 문자 ‘\ b’ 를 사용했다 . 출력 화면이 더 편하게 보이도록 ‘\b\n’ 를 썼으나 이럴 경우 '\b' 의 효과가 사라졌다 . ‘\b\b\n’ 처럼 사용했으나 결과는 역시나 \ n 의 효과만 나타날 뿐 \ b 의 효과는 없었다 . 이를 해결하기 위해 구글링도 했지만 적절한 답을...

C언어 - 입력받은 숫자의 이진수 표현에서 1의 개수를 세는 코드를 짜기

C 언어 문제: 입력받은 숫자의 이진수 표현에서 1의 개수를 세는 코드를 짜기 이 문제를 해결하기 위해서는 시프트 연산자에 대해 알아야 한다. 컴퓨터에서는 숫자를 2진수로 표현하는데 정수는 32비트로 나타낸다. 가장 앞쪽에 있는 비트는 음수와 양수를 구분해 주는 비트이고 이 이하가 숫자를 의미한다. 시프트 연산자는 숫자를 이진수로 표현했을 때 연산을 편리하게 해 주는 연산자이다. 연산자에 대해 자세히 알고 싶으면 ( http://rockykim5581.tistory.com/19 )을 참고하길 바란다. 여기에서는 필요한 부분만 다룰 예정이다. 1. 숫자 입력받기 입력한 숫자를 변수에 대입해야 한다. 2.입력한 숫자의 이진수 표현에서 1의 개수 구하기 이진수에서도 비교 연산자를 사용할 수 있다. AND를 의미하는 &는 두 수가 모두 1일 때만 1(참)을 나타낸다. 이 성징을 이용하면 입력받은 숫자의 이진수를 셀 수 있다. 비트는 1부터 31가지 비교해야 한다.(32비트-사인비트-는 제외) 이 과정을 하기 위해서는 반복문이 필요하다. 여기서는 조건과 초기화, 반복후 실행하는 문이 있어서 for를 사용했다. 비교는 입력은 숫자(이진수 표현)의 n번째(이는 0아니면 1이다)와  n번째가 1인 숫자를 &으로 비교해서 둘 다 모두 1인 경우만 count라는 변수를 하나씩 올려준다. 그러면 입력받은 수의 이진수 표현 1을 셀 수 있게된다. 그러면 n번째가 1이라는 숫자를 어떻게 만들까? 이는 변수(one)를 하나 잡아 반복문의 실행에 따라 1을 시프트 연산자로 이동시킨 수를 대입한다. 예를 들어 처음일 때는 입력받은 수와 1을 옯기지 않은 상태로 비교, 두번째 자리를 비교할 땐 입력받은 수와 1을 한칸 옮긴 상태로 비교하는 식이다. 여기서 주의해야 할 점은 (비교하려는 자리의 수-1)만큼 시프트 연산자로 밀어줘야 한다는 것이다. 1이 한 자리도 차지하기 때문이다. <전체 코드> ...

C언어 - 입력된 정수 홀수와 짝수로 나눠 크기순으로 출력하기

2 번째 주 - C 언어 문제 길이가 10 인 배열을 만들고 그 배열에 10 개의 정수를 입력 받는다 . 이 때 입력받은 정수가 홀수면 배열의 앞부터 채워나가고 짝수면 배열의 맨 뒤에서부터 채워나가는 프로그램을 만들어라 .( 정수는 항상 10 개를 모두 입력한다고 가정한다 .) 실행화면 조건 1. int arr[10], i, num[10];// arr = 짝수 홀수 정리할 배열 , num = 숫자 입력 배열 \ 2.int lennum =() ; // 배열 num 의 크기 , 배열 입력받을 때 for 문에서 10 으로 하지말 고 lennum 사용해서 받을 것 int lenarr =(); // 배열 arr 의 크기 , {1,3,5,7,9,1,8,6,4,2} 형식을 위해 사용 -->hint: sizeof 사용 3.lenarr 출력 포맷을 위 사진과 동일하게 만들기 위해 사용한다 . 처음과 끝은 { 과 } 를 사용하고 마지막 숫자 뒤에는 콤마가 없어야 한다 . -->hint: if 문 사용   < 풀이 > 코드는 총 4 부분으로 나뉜다 . 입력 받기 , 홀수 정리 , 짝수 정리 , 출력 .   1. 입력받기 입력 받기 위해 for 문을 사용해서 반복한다 . 여기서 조건을 만족시키기 위해 lennum 을 구해야 한다 . siezof 크기를 알려주는 함수인데 단순히 sizeof(num) 을 한다면 10 이 나오지 않는다 . 40 이 나올 것이다 . 이는 배열이 가진 인덱스 X 타입형의 크기 값이 총 배열의 크기이기 때문이다 . 따라서 lennum 을 구하기 위해서는 다음과 같이 해야 한다 . lennum = sizeof (num) / sizeof ( int ); for 문 안에서는 scanf 를 사용해 입력한 숫자를 num 배열에 넣는다 . 입력받기 코드   2. 홀수 정리 ...