연습용으로 다룰 work
디렉터리 생성.
-p
옵션 사용하여 중첩된 디렉터리 한 번에 생성.
중간경로의 디렉터리가 존재하지 않으면 에러가 발생
원래 touch
는 파일의 타임스탬프를 갱신하기 위한 명령어이다. 이때 대상이 되는 파일이 존재하지 않으면 새롭게 파일을 만든다. 그래서 단순히 빈 파일을 만드는 용도로도 많이 사용된다.
(touch
로 이미 존재하는 파일을 지정해도 내용이 지워지거나 하지는 않는다.)
rm newfile
: newfile
이라는 파일을 삭제
rm
명령어로 디렉터리를 지우려면 재귀적으로 디렉터리 트리를 삭제하는 옵션인 -r
을 지정해야 한다. 이때 대상이 되는 디렉터리와 그 안의 파일을 전부 지우므로 주의해야 한다.
윈도나 맥에서는 파일을 지우더라도 휴지통에 있어서 복구할 수 있지만, 리눅스에서는 파일이 곧바로 지워진다. 다만 실행할 때 -i
옵션을 붙이면 확인 메시지가 출력
rm
명령어와 비슷한 명령어로 rmdir
이라는 명령어가 있다. 이는 빈 디렉터리를 삭제하는 명령이다.
대상 디렉터리가 빈 디렉터리가 아니면 에러를 출력한다.
숨겨진 파일이 있는 경우 ls testfile
로 testfile 디렉터리 내용이 비었음을 짐작했고 rmdir testfile
하였을 때 실제로는 디렉터리가 비어있지 않기 때문에 오류가 뜨는 이런 상황을 마주할 수 있다.
이게 rm
명령어와의 큰 차이점이다.
시스템의 호스트 이름을 설정하는 파일의 내용을 출력해본다.
특정 명령어를 스케줄에 맞게 자동으로 실행하는 설정 파일의 내용을 출력해본다.
이 명령어 또한 cat /etc/hostname /etc/crontab
이렇게 여러 파일의 내용을 출력할 수도 있다.
cat 명령어를 실행할 때 옵션으로 -n을 지정하면 행 번호가 함께 출력된다. 소스 코드를 출력할 때 유용한 옵션이다.
cat
명령어 뿐만 아니라 리눅스에서 사용하는 많은 명령어가 입력 파일을 지정하지 않으면 키보드의 입력을 기다린다.
파일을 지정하지 않고 cat
명령어를 실행해보니 커서가 멈춘 상태로 프롬프트도 표시되지 않는다. 아무 문자나 입력해보니 입력한 문자가 그대로 출력된다.
여기서 Ctrl
+ d
로 명령어를 종료시킨다.
cat
명령어로 내용이 긴 파일을 출력하면 화면이 스크롤되면서 전부 출력이 된다. 파일의 첫 부분부터 필요한 만큼 읽고 싶다면 less
명령어를 사용하는 것이 좋다.
less
: 지정한 파일을 보기 좋게 화면 단위로 출력하며 위아래로 스크롤하며 파일을 볼 수 있게 해준다.
less
명령어로 파일을 볼 때 사용하는 단축키
Space
: 한 화면 아래로 스크롤b
: 한 화면 위로 스크롤j
: 한 행 아래로 스크롤k
: 한 행 위로 스크롤q
: less 명령어 종료
또한 열려 있는 파일에서 문자열을 검색할 수 있다.
/를 입력하여 문자열을 입력 후 엔터를 누르면 해당 문자열이 있는 위치로 이동한다.
만약 검색 결과가 여러 개라면 n
을 눌러 다음 문자열이 있는 위치로 이동 가능하다.
이전 문자열로의 이동은 N
/문자열
: 문자열을 아래 방향으로 검색
?문자열
: 문자열을 위 방향으로 검색
cp
명령어로 파일을 복사해본다
기존의 testfile
을 testfile1
로 복사해보았다.
파일을 특정 디렉터리 안에 복사할 수도 있다.
cp
로 복사할 때 이미 같은 이름의 파일이 있다면 덮어쓴다.
따라서 복사하기 전 같은 이름의 파일이 있는지, 덮어써도 되는지를 확인해야 한다.
-i
명령어를 사용하면 덮어 쓰기 전 진행 여부를 확인한다.
cp
명령어로 디렉터리를 복사하려고 하면? 오류가 발생재귀적으로 복사하도록 -r
옵션을 지정해주어야 오류가 발생하지 않는다.
-r
옵션을 사용하면 원본 디렉터리 안의 파일과 디렉터리가 모두 재귀적으로 복사된다.
파일file1
을 file2
로 바꾸어본다.
mvtest
디렉터리에 있는 파일file2
를 dir1
디렉터리로 이동해본다.
마찬가지로 명령어 실행 전 -i
옵션을 추가하여 재확인 할 수 있다.
디렉터리를 이동할 때에는 cp
에서처럼 -r
옵션을 지정하지 않아도 디렉터리 안의 모든 파일과 디렉터리를 전부 옮긴다.
리눅스의 파일 시스템에서는 파일에 별명을 붙이는 것이 가능하다. 이를 링크라 부르며 별명을 붙이는 것을 '링크를 생성한다' 라고 한다.
링크에는 하드 링크와 심볼릭 링크 두 종류가 있다.
/etc/crontab
을 file1
에 복사한 뒤 file1
에 대해 file2
라는 이름의 하드 링크를 만들어본다.file2
가 만들어졌고 이제 하드 링크 file2
에 접근하는 것은 file1
에 접근하는 것과 동일하다.cat file2
했을 때 file1
의 내용이 출력된다는 뜻.file1
을 출력해도 file1
의 내용이 출력된다.ln
명령어 사용 시 -s
옵션을 붙이면 심볼릭 링크가 만들어진다.ls
명령어 실행 시 -l
옵션을 지정하면 심볼릭 링크 여부를 확인할 수 있다. 다음과 같이 어떤 파일에 연결되었는지 화살표로 표시된다.file3
에 접근하면 링크로 연결된 파일file1
에 접근할 수 있다.file3
를 지우지 않은 채 원본 파일file1
을 지울 수도 있다. 그렇게 되면 심볼릭 링크가 깨짐 상태가 된다.이러한 링크는 어떤 상황에서 사용되어질까?
- 긴 경로명을 짧게
다음은local/work/code/project/source
라는 긴 경로를source
라는 이름으로 심볼릭 링크를 만드는 예이다.
ln -s local/work/code/project/source source
cd source
이렇게 긴 경로명에 쉽게 이동 가능- 여러 버전의 프로그램이 있는 경우
프로그램을 설치할 때 디렉터리의 이름에 버전 정보를 붙여 여러 버전의 소프트웨어를 배치하는 경우가 있다.
다음과 같이 여러 버전을 심볼릭 링크로 관리할 수 있다.
각 버전의 경로를 직접 지정하지 않고 심볼릭 링크latest
를 만들어 링크에 연결된 버전을 사용.