백엔드 개발자 로드맵을 보게 되면 basic 레벨에서 Git과 함께 Linux 학습이 위치해 있는 것을 볼 수 있다. 하지만 실제로 비전공자 입장에서 로드맵대로 git과 linux를 먼저 학습하는 것이 실효성이 있는지 의문이었고 실제로 로드맵에 따라 리눅스를 공부하지는 않았다. 개발공부를 시작하면서부터 익숙하지 않은 cli환경에서 검정색 화면만 바라보는것이 재미가 없기도 했고 동기부여가 되지 않았기 때문이다.
하지만 어느정도 java를 공부하고 aws나 docker를 학습하다보니 서비스를 배포하고 클라우드 환경 혹은 어플리케이션 서버를 구축하기 위해서 리눅스공부가 필요하게 되었다.
뭐든 필요할 때 요구에 따라서 공부하는 것이 동기부여가 잘 되고 학습효율도 올라가는 것 같다.
평생 윈도우 환경에서 gui만 익숙하다가 cli를 접하다보니 처음에는 어색했지만 시간이 지나면서 리눅스의 매력을 느끼게 되었다. 명령어에 익숙해지는데 진입장벽이 있지만 리눅스는 윈도우에서처럼 화면과 상호작용하는데 리소스를 쓰지 않기 때문에 빠르고 가볍고 게다가 오픈소스라 무료라는 장점덕에 익숙해진다면 개발자 친화적인 os가 맞긴 한거같다.
리눅스를 설치하는 방법은 여러가지가 있다. 나는 윈도우에서 제공하는 wsl을 사용에 ubuntu를 설치하여 사용하고 있다. 설치 방식은 가상머신 혹은 wsl, 직접 설치등 여러가지가 있지만 여기서는 설치방법을 따로 다루지는 않는다. 기회가 된다면 다른 포스팅에서 다루도록 하겠다.
오랫동안 오픈소스로 제공되는 os이다보니 깊게 익히려면 내용이 방대하고 백엔드개발자에게는 공부해야할 다른 중요한 것들이 많으니 최대한 중요도가 높은 기본 기능만 압축해서 포스팅해보려 한다.
파일시스템
1) 파일시스템 탐색
#홈디렉토리, 루트 디렉토리 이동
cd: 리눅스 환경에서 작업디렉토리를 이동할 때 사용한다. `cd` 뒤에 공백을 두고 디렉토리 경로를 기입하면 해당 경로로 이동한다. ls와 함께 가장 많이 사용하는 명령어가 아닐까 싶다.
cd ~ :홈 디렉토리로 이동한다.
cd / :루트 디렉토리로 이동한다.
cd 이동할 경로
cd ~
cd /
`cd ~` 는 홈디렉토리로 이동한다. 리눅스에서 home경로는 /home/user를 말한다. 현재 나의 경우 garden이라는 user명으로 linux를 사용중이기 때문에 /home/garden경로가 나의 home디렉토리가 된다.
`cd /` 는 루트디렉토리로 이동한다. 우분투의 최상위 경로로 각종 설정파일이나 시스템파일들에 접근할 수 있다.
#현재 디렉토리 확인
pwd: 현재 디렉토리 위치를 출력해준다.
pwd
디렉토리에 접근하다보면 경로가 길어지면서 현재 사용중인 디렉토리가 어디인지 헷갈릴때가 있다. 그 때 pwd명령어를 사용하게 되면 root경로로부터 현재 디렉토리까지 경로를 출력해준다. 나는 home디렉토리에서 작업중이기 때문에 현재 위치가 출력되는 것을 볼 수 있다.
#현재 디렉토리 파일목록 보기
ls: 현재 디렉토리에 속한 파일목록을 출력해준다.
ls
현재 디렉토리에 속한 파일 혹은 디렉토리 등을 출력해준다. 리눅스에서 작업을 하다보면 밥먹듯이 사용하게 될 커맨드이다. ls는 list의 줄임말이다.
2) 파일 및 디렉토리 조작
#새로운 디렉토리 만들기
mrdir: 새로운 디렉토리를 생성해준다.
mkdir 디렉토리명
mkdir new_directory
home경로에서 `mkdir`로 새로운 디렉토리를 생성한다. mkdir는 "make directory" 의 줄임말로 생각된다. mkdir뒤에는 생성할 디렉토리명을 기입한다. 위 예제에서는 `new_directory`라고 하였다. ls커맨드로 생성여부를 확인할 수 있다.
#새로운 파일 만들기
touch: 새로운 파일을 생성한다.
touch 생성할파일경로
touch new_directory/new_file.txt
touch로 작업할 디렉토리를 지정해주고 파일을 생성한다. 현재 디렉토리에있는 `new_directory` 안에 `new_file.txt`라는 텍스트 파일을 생성한다는 의미가 된다. 해당경로에 파일이 잘 생성된 것을 확인할 수 있다.
#파일 이동
mv: 파일을 이동한다.
mv 대상파일경로 옮겨질경로
mv new_directory/new_file.txt new_directory/renamed_file.txt
mv는 파일의 위치를 이동시킬 수 있고 이동하면서 파일명을 새로 변경해줄 수도 있다. 즉 파일위치변경 기능과 파일명 변경기능을 함께 한다고 할 수 있다.
위예제는 대상파일경로에서 파일명을 변경하는 예제이다. 옮겨질경로를 다른 디렉토리로 지정한다면 파일이 이동된다. 파일명이 변경되는 것을 원하지 않는다면 경로만 바꾸고 파일명은 그대로 하면 된다.
#파일 복사
cp: 파일을 복사한다.
cp 복사할파일경로 복사된파일경로
cp new_directory/renamed_file.txt new_directory/copy_text.txt
리눅스 작업의 대략적인 패턴이 보인다. 커맨드가 가장 먼저 온 후 작업을 할 대상이 먼저 나오고 작업완료된 대상이 뒤쪽에 나오는 것을 알 수 있다.
cp명령어로 해당경로에 파일을 `copy_text.txt`라는 이름으로 복사하였다.
#파일 삭제
rm: 파일을 삭제한다.
rm 파일경로
rm new_directory/copy_text.txt
위에서 생성한 `copy_text.txt`는 삭제되고 `renamed_file.txt`파일만 남은 것을 확인할 수 있다.
#디렉토리 삭제
rmdir: 디렉토리를 삭제한다.
rmdir 대상디렉토리
rmdir new_directory
디렉토리를 삭제하려고 하니 이런 오류메시지가 출력된다. 현재 `new_directory`안에는 파일이 들어있다. 때문에 `rmdir` 명령어로는 디렉토리를 삭제할 수 없다. 빈 디렉토리라면 위 명령어로 잘 작동하지만 안에 파일이 존재하는 경우는 다른 방식을 사용해야 한다.
rm -옵션 해당디렉토리
rm -rf new_directory
특이하게도 디렉토리와 내부 파일을 전부 삭제하기 위해서는 `rmdir`이 아니라 파일을 삭제하는 `rm`명령어가 사용된다. 리눅스에서는 명령어에 붙는 다양한 옵션들이 있다. 옵션은 대부분 비슷한 의미를 갖지만 너무 다양해서 여기서는 위 예제에서 사용하는 두가지 옵션인 `-r`과 `-f`만 설명하겠다.
*r: 재귀적으로 디렉토리와 안에 있는 파일을 전부 삭제한다.
*f: 강제로 수행한다.
위 옵션을 붙여 명령어를 수행하니 디렉토리와 파일이 깨끗하게 삭제된 것을 볼 수 있다.
이번 시간에는 파일을 생성하고 파일명을 변경하고 삭제하는 방법까지 알아보았다. 다음 시간에는 사용자를 생성하고 권한을 부여하는 방법에 대해서 알아보겠다.
'공부하자 > Linux' 카테고리의 다른 글
[Linux]linux-ubuntu 20.04 실전 기본 명령어 -4(네트워크2) (0) | 2024.06.27 |
---|---|
[Linux]linux-ubuntu 20.04 실전 기본 명령어 -3(네트워크상태확인, ifconfig, ping) (0) | 2024.06.26 |
[Linux]linux-ubuntu 20.04 실전 기본 명령어 -2(사용자 및 권한관리) (0) | 2024.06.21 |