몇몇 명령어들은 제가 다른 포스팅에서 다룬 적이 있는데요.
리눅스의 명령어들은 옵션에 따라서, 그리고 인자들의 상태에 따라서(존재유무,갯수) 결과가 전혀 다른데 이에 대한 설명이 부실한 면이 있었습니다. 이 때문에 다시 이 포스팅에 조금 더 디테일하게 정리를 했습니다.
Cat
- 파일 내용을 출력하는 명령어
- 간단한 내용의 파일을 출력할 때 좋다.
리눅스에 원래 있는 파일에 cat 명령을 사용해보겠습니다.
/etc/hosts 파일에 간단한 데이터가 저장된 것을 확인할 수 있습니다. -n 옵션의 경우 행 번호가 같이 출력되도록 해줍니다.
파일에 행 번호는 없습니다. -n 옵션을 통해 저희 눈에 보기 편하게 보여줍니다.
More
-파일 내용을 화면 단위로 출력한다.
-cat 명령은 연속적으로 출력하기에 간단한 내용 확인하기에는 좋지만, 내용이 많으면 스크롤되는 내용 확인이 어렵다. 이 때는 화면 단위로 파일 내용을 출력하는 more 명령을 사용한다.
- 출력되지 않은 내용이 있으면 화면 하단에 '--More--(10%)' 와 같이 표기된다.
이 때,
1) 스페이스바를 누르면 다음 화면이 화면 단위로 출력된다.(=스크롤 내려간다.)
2) '엔터'를 누르면 한 줄씩 스크롤 된다.
3) '/문자열'을 입력하면 해당 문자열로 찾아서 이동한다.
4) q 키를 누르면 종료된다.
less
- 화면 단위로 출력한다.
- 하지만 more 과는 다르게 지나간 내용을 다시 볼 수 있다. (=파일 앞뒤로 스크롤하며 이동할 수 있다.)
- 마우스 스크롤을 내리면서 이동 가능.
- j : 한 줄씩 다음 행으로 스크롤
-k: 한 줄씩 이전 행으로 스크롤
- space bar : 다음 화면으로 이동
$ less /etc/services
tail
-파일 뒷부분의 일부 행들을 출력한다.(=끝에서 n번째 까지의 행 출력)
- 기본값은 10으로 되어 있다. (=마지막 행을 기준으로 10개의 행을 출력)
cp
- 파일이나 디렉터리를 복사한다.
- 형식: cp [옵션] 파일1(또는 디렉터리1) 파일2(또는 디렉터리2)
-- 옵션: -r : 디렉터리를 복사할 때 지정.
우선 mkdir -p 옵션을 사용해서 중간 디렉터리까지 한 번에 다 생성되로고 경로를 하나 만들어 줍니다.
1) 두 인자 모두 파일일 때
cp /etc/hosts/ text1 명령어가 중간 좀 밑에 보이는데요.
이 때에는 파일을 다른 파일로 복사합니다. 두 번째 인자가 존재하지 않으면 원본 파일을 복사해서 두번째 인자 이름으로 새 파일이 형성되고, 기존에 있다면 그 위에 덮어쓰고 원래 내용은 없어집니다. 즉, 복사해서 '덮어쓰기'되는 것입니다.
2) 첫 번째 인자는 파일, 두 번째 인자는 디렉터리인 경우
cp text1 temp
명령어가 그 경우인데요. 이 대는 디렉터리temp 하위에 text1 파일이 생깁니다. 위 캡쳐해서는 확인하는 모습이 안 나옵니다. 따로 확인해주세요 :)
이 때, 복사하려는 디렉터리에 쓰기 권한이 있어야 복사가 됩니다. 없을 경우, 허가 거부 라고 나오니깐 주의해주세요.
3) 여러 인자를 지정하는 경우
첫 번째 인자 자리에 여러 파일을 지정할 수 있습니다. 이 때 ,마지막 인자는 반드시 디렉터리여야 합니다. (위 실습 스샷 참고)
4) 디렉터리 복사하기
디렉터리를 복사할 때는 -r 옵션이 들어가야 오류 메시지 없이 복사가 됩니다.
mv
- 파일을 다른 디렉터리로 이동하거나 파일 명을 바꿀 때 사용한다.
- 첫 번째 인자는 원본 파일이나 디렉터리를 지정, 두 번째 인자는 목적지 파일이나 디렉터리를 지정한다.
- cp명령처럼 인자들의 구성에 따라 결과는 다양하게 나타난다.
1) 파일 -> 파일
파일을 다른 파일로 이동하는 것은 잘 생각해보면, 원본 파일의 이름이 다른 이름으로 바뀌는 것이다. 만약, 두 번째 인자로 정한 목적 파일이 존재하면 원본 파일의 내용(=첫 번째 인자)이 덮어씌워지고 기존 내용이 삭제된다. 그러나 두 번째 인자로 지정한 파일이 존재하지 않는다면 새 파일이 생성된다.
위 결과를 보면 text1 파일명이 data1 으로 바뀐 것을 알 수 있다.
2) 파일을 다른 디렉터리로 이동하기
두 번째 인자로 디렉터리가 지정되면 원본 파일이 해당 디렉터리로 이동한다.
또한, 두 번째 인자에 디렉터리와 파일을 함께 지정하면, 파일(=첫 번째 인자)은 지정한 디렉터리로 이동하고 파일명도 바뀌게 된다. 위 캡쳐에서
mv text1 temp/data2
부분이 이에 해당된다.
쓰기 권한이 없는 디렉터리로 파일을 이동하려면 당연히 오류가 발생한다.
3) 여러 파일을 디렉터리로 이동하기
첫 번째 인자에 파일을 여러 개 지정하면 디렉터리로 한 번에 이동할 수 있습니다. 이 때, 두번째 인자(명령어의 마지막 부분)는 반드시 디렉터리여야 합니다. 명령을 실행하면 지정한 디렉터리로 파일이 모두 이동합니다.
4) 디렉터리 -> 디렉터리
mv 명령에서 인자가 모두 디렉터리면 첫 번째 인자의 디렉터리가 두 번째 인자의 디렉터리로 이동합니다.
이 때, 두 번째 인자가 존재하지 않는 디렉터리면 디렉터리명이 변경됩니다.
두 번째 인자가 존재하는 경우, 원본 디렉터리는 두 번째 인자인 디렉터리 아래로 이동합니다.
(아래 예에서 이 2가지 경우를 확인할 수 있습니다.)
r m
- 파일을 삭제하는 명령입니다.
- -- -r 옵션을 지정하면 디렉터리를 삭제합니다.
rmdir 을 저번에 다룬적이 있는데 이 명령어의 경우 빈 디렉터리만을 삭제하기 디렉터리에 파일이 하나라도 있다면,
rm -r 을 통해서 디렉터리를 삭제해야 합니다.
아래 실습 사진을 참고하셔서 이해하시면 됩니다.
-i 옵션은 앞에서 몇 번 말했지만 정말 지울건지 재차 확인차 묻게 해주는 옵션이며 리눅스에서 커맨드의 옵션들은 같이 붙여서 사용이 됩니다. 아래 커맨드에 나온 -ri 옵션처럼 말이죠.
'CS+ > 리눅스' 카테고리의 다른 글
리눅스 파일 링크 - 하드 링크, 심벌릭 링크 (0) | 2020.08.22 |
---|---|
리눅스 우분투 디렉터리와 파일 사용하기 (1) (0) | 2020.08.15 |
리눅스 우분투 기초명령어 4. 명령행 편집, man, passwd, 터미널 종료 (0) | 2020.08.15 |
리눅스 conky 설치 (2020.08.15) (0) | 2020.08.15 |
깃&깃허브 입문 3일차 - branch, checkout, status, merge, stash (0) | 2020.03.15 |