[linux] 파일/디렉토리 관리

  1. 와일드 카드
    ? : 어떤 한 문자
  • : 어떤 문자도 없거나 그 이상
    [] : [] 내에 지정된 각각의 문자
    [a-d] 는 a,b,c,d를 의미, [acd]는 a,c,d를 의미한다. [abcd]* 는 a,b,c,d로 시작하는 파일 모두를 의미한다.
    [abcd]?, [a-d]? 등등의 예시가 많다. “rm [abc]*” 처럼 사용할 수 있다.
  1. 리다이렉션
    표준 입출력을 키보드나 모니터가 아닌 파일로 받거나, 출력하는 것을 의미.

표준 출력의 변경 : >, >>
결과를 파일로 보냄, >>는 기존 파일의 내용을 유지한 채 내용을 추가할 떄 사용한다.

access.log 와 같이 사용하면 access.log 파일의 내용을 모두 지우고 크기를 0으로 만들어 버릴 수 있다.
아무것도 없는 내용을 access.log에 전달하기 때문

표준 입력의 변경 : <
cat < testFile 과 같이 사용. 표준 출력은 터미널로 하고 표준 입력에 키보드가 아닌 testFile 이라는 파일을 사용한다
일반적으로 cat 파일명 < 파일명 의 형태가 많이 사용된다.

표준 에러 : 2>, 2>>
에러 내용을 파일로 저장하고자 할 때 사용한다. ls /asdfas 2> errorFile
2인 경우는 파일 디스크립터의 순서가 입력 0, 출력 1, 에러 2 이기 때문

표준출력과 표준에러를 한꺼번에 저장하려면 &>를 사용한다.
find / -name aa* &> errorLog

명령 > 파일명 : 명령의 결과가 파일에 저장. 에러는 모니터로 출력
명령 2> 파일명 : 에러 내용이 파일에 저장. 명령 결과는 모니터 출력
명령 &> 파일명 : 명령 결과, 에러 내용이 파일에 저장

  1. 파이프라인
    한 명령의 표준 출력을 다른 명령의 표준 입력으로 보내는 방식
    사용되는 기호는 | 이며, |로 구분 되면 한 개 이상의 명령이 연속되어 나올 수 있다
    이전 명령의 표준 출력이 다음 명령의 표준 입력이 되는 방식이다.
    command1 | command2 | command3 | command4 …
    1의 출력이 2의 입력, 2의 출력이 3의 입력, 3의 출력이 4의 입력…
    |&을 사용하면 표준출력 + 표준에러를 다음 명령의 표준 입력으로 사용할 수 있다.
    $? 는 특수한 변수로써, 앞서 실행한 명령의 종료 상태값을 받는다.

※ 파이프라인에 자주 사용되는 grep 명령어는 패턴에 맞는 문자열을 찾아주는 명령어이다.
grep 123 라고 입력하면, 사용자로부터 입력을 받아서 패턴에 맞을 경우 화면에 출력해준다.
grep만 입력하면 키보드로 표준 입력을 받는다. 보통은 파이프라인을 사용하여 명령의 결과값을
grep에게 표준입력으로 전달한다.

  1. 기타(||, &&, ;, &)
  1. ; : 한줄에 여러 명령어 입력.
    mkfs -t sfs -f /dev/sda5; mkdir /backup; mount /dev/sda5/backup 와 같이 사용
    하나의 작업을 기다렸다가 다시 입력하고 하는 방식보다 위와 같이 세미콜론으로 연결해서 사용 가능하다.

  2. &&, || : 앞에서 실행한 명령의 결과에 따라 다음 명령어 실행. 각 연산자의 특징을 이용하여 사용된다.
    ; 으로 연결했을 경우 앞의 명령의 실패여부에 관계없이 뒤의 명령이 무조건 실행된다.
    포멧이 실패했는데 마운트가 되는 경우가 발생할 수도 있는 셈이다.
    그리하여 &&과 ||를 써서 적절히 성공여부에 따라 명령을 조절할 수 있다.
    &&의 경우 앞,뒤가 참이여야 하는 논리연산자이다.
    그러므로 앞의 연산이 거짓일 경우, 뒤의 연산을 실행하지 않는다. -> 이것이 중요하다.
    cat asddd && echo ‘test’ 해보면, asddd 파일이 없을 경우 첫번째 연산결과가 거짓이므로 뒤의 echo는 실행되지 않는다.
    || 또한 마찬가지다. ||는 둘중 하나만 참이면 되는 논리연산자이다.
    그리므로 앞의 연산이 참일 경우, 뒤의 연산을 실행하지 않는다.
    cat asddd || echo ‘test’ 했을 경우, 앞의 연산이 참이면 뒤의 연산이 실행되지 않는다.
    즉, 위 두 연산자를 사용하려면 &&는 명령이 성공할 경우의 명령을 나열하면 되고, ||는 명령이 실패할 경우의 명령을 나열하면 되겠다.

  3. & : 백그라운드 모드로 실행
    명령어 마지막에 &를 붙여주면 백그라운드 모드로 실행 가능하다.

  1. 디렉토리 구조
    모든 디렉토리는 / 부터 시작한다.
    .는 현재 디렉토리 …는 부모 디렉토리 ~는 사용자의 홈 디렉토리를 의미한다.

  2. 파일

  1. 일반 파일 : 우리가 평상시 쓰는 파일
  2. 디렉토리 파일 : 파일을 포함하고 있는 파일. 일반 파일,디렉토리 파일, 특수 파일을 포함할 수 있다.
    근데 실제로 들어가보면 파일을 포함하고 있는 것이 아니라, 리눅스가 파일을 엑세스 하는데 필요한 정보를 가지고 있을 뿐이다.
  3. 특수 파일 :