왕초보 리눅스 명령어 기초훈련
안녕하세요 오늘은 왕초보 리눅스 명령어 기초훈련이라고 해서 정말로 명령어를 처음으로 입력하신 분들을 위해서 한번 영상을 준비해 봤습니다
명령어 입력하는 것 자체가 굉장히 힘드신 분들도 있을 거고 아예 경험이 없으신 분들도 있을 거에요 먼저 간단하게 우리가 명령어라는 게 무엇인지 한번 보여드리겠습니다
터미널 입출력 환경 안에서 예를 들어서 whoami 라고 해서 현재 계정이 뭔지 뭐 이런 거라든지
그리고 ls 라고 해서 실제 특정 폴더 안에 있는 그 파일 리스트를 확인한다든지 약간 이런 문자열 기반으로 해서 텍스트 기반에 입력을 할 수 있는 명령어 인터페이스를 의미하게 됩니다
이런 것들을 command line interface 라고도 얘기하게 되는데요 우리가 이제 GUI 라고 해서 그래픽 유저 인터페이스를 많이 쓰죠
그런데 꼭 GUI가 좋고 CLI가 나쁘고 이렇다라고 볼 수는 없구요
역할마다 장단점이 있다라고 보시는게 맞습니다
자 우선은 우리가 명령어 기초훈련이니까 기초훈련들 위에서 한가지 개념설명 좀 드려보도록 할게요
우리가 터미널 입출력 환경에서 사용하는것이 쉘(Shell) 이라는 겁니다
쉘(Shell)은 사실 종류가 여러가지가 있을 수 있어요
일반적인 POSIX Shell(Bourne shell)이 있구요 "Bourne Again Shell" 이라고 해서 Bash Shell 도 있구요
Z Shell(zsh) 이라는 것도 있습니다 굉장히 다양한 쉘들이 존재하고 있는데요
쉘은 사실상 명령어 반응어 프로그램이라고 이해하시는 게 좀 더 편해요 내가 실시간으로 명령을 입력하고 그거에 반응해서 동작하는 프로그램입니다
그런데 여기서 많은 분들이 헷갈려 하시는 게 쉘과 터미널도 많이 헷갈려 하시는 거거든요 그런데 그게 차이점이 있죠
쉘은 명령에 반응해주는 실질적인 프로그램이지만 터미널은 그냥 껍데기입니다
그러니까 터미널 입출력 환경이라고 해서 텍스트 기반으로 입력을 할 수 있고 출력을 할 수 있는 그런 입출력 환경일 뿐이에요
그래서 콘솔과 터미널은 입출력 환경이구요 실제 안에서 우리가 동작하게 되는 것은 쉘이라고 보시면 되겠습니다
쉘 안에서 명령으로 입력하시게 되면은 이런 순서로 보통 실행이 되요 그러니까 Alias로 등록되어 있는 별칭이라고 해서 명령어가 너무 길면 그 명령어 긴 거 대신에 짧게 약어로 적혀져 있는 것을 기준으로 해서 구동되는 것이 첫 번째 그 다음에는 Built-in 명령어라고 해서 쉘 내부에 내장되어 있는 명령어가 있어요 그걸로 이제 동작이 되는 경우도 있고요
그 다음에 외부 명령어로 동작이 될 수 있습니다 1, 2, 3은 동시에 실행되는 건 아니고요
만약에 특정 명령어를 입력했을 때 Alias가 있으면 Alias가 먼저 잡히고 그 다음에 Built-in 있으면 Built-in 이 잡히고 그 다음에 외부 명령어 잡힌다 라고 이해를 하시면 좋을 것 같아요
자 한번 보여드리도록 하겠습니다
우선 이제 whoami라는 명령을 이렇게 똑같이 입력을 할 수가 있는데요 아까도 저희가 이제 입력을 했던 것처럼 한번 입력을 해보도록 할게요
whoami 이렇게 입력을 하면은 입력을 하고 출력이 나왔잖아요 whoami 이라고 하는 명령어 이렇게 입력을 하거나 또 다른 명령을 입력한다고 했을 때
1번부터 찾는 거에요 아 별칭으로 된 게 있는지 없어?
그러면 2번, 2번도 없어?
그러면 3번 이런 식으로 찾는다고 보시면 될 것 같구요 예를 들어서 내가 alias를 지칭을 해 보도록 할게요
그래서 만약에 Alias를 지칭한다면 지금 현재 Alias로 등록되어 있는 것들을 이런 식으로 확인이 가능하고요
지금 보면은 여기에 다양하게 alias 가 있는데 그중에 ll 이라는 것도 있죠 ll 이라고 하는 /를 하게 되면은 여기서 오른쪽에 보이는 것처럼 명령어를 이렇게 옵션까지 길게 준 것과 동일한 효과입니다
그러니까 이렇게 하고 슬래시를 한 것과 동일한 효과인 거죠
그래서 이런식으로 명령어를 쓰게 되면 너무 길잖아요 이런 것들을 약어로 줄여서 한다고 보시면 되겠고요 alias는 이런식으로 이제 사용된다 라고 보실 수가 있습니다
우리가 명령을 입력하면 이제 alias 중에서 먼저 찾아요 그 다음에 이제 built -in으로 찾는데 built -in 은 help 라고 입력을 하셨을 때
shell 안에서 입력할 수 있는 built -in 명령어들이 함께 출력이 됩니다 그 중에 대표적인것이 cd 라고 하는 거구요
change directory 이 같은 경우에는 예를 들어서 우리가 /bin 폴더나 /usr/bin폴더 안에 있는 명령어가 아니라 shell 이라고 하는 프로그램 안에 내장되어 있는 명령어라고 보실 수 있어요
내장 명령어를 기준으로 찾을 수가 있겠고 cd 같은 경우에는 여기 안에 있는 바이너리 파일이 아닙니다
그래서 그렇게 실행이 될 수가 있겠구요 그 다음에 ls 같은 경우에는 bin에 bin에 ls라는 파일이 있는 것처럼 빈 폴더 안에 이 바이너리 파일이 존재하고 있어요 그래서 이런 실행 파일들은 이렇게 ELF로 되어 있는 X86머신에 맞게 실행될 수 있는 이 바이너리 윈도우로 따지게 되면은 .exe 같은 실행 파일을 뜻하게 되구요
이런 파일들이 외부 명령어에 해당됩니다 이런 외부 명령어는 여기 ppt에도 적어 놓은 것처럼 테스트하는 환경단수를 기준으로 해서 경로를 통해서 찾게 돼요 예를 들어서 내가 PATH라는 걸 이렇게 입력을 해봤을 때 PATH변수 안에 있는 값들을 기준으로 해서 서치하고 찾아서 그 다음에 이제 실행이 됩니다
그런데 만약에 내가 ls aaa라는 걸 했을 때 이렇게 command not found라는 게 뜨잖아요
이게 이제 결국에 어떤 절차를 밟은 거냐
1번 alias로 있는 게 있나?
없어, 2번 Built-in 으로 있는 게 있나?
없어, 외부 명령어?
이거는 path 경로를 기준으로 이 폴더도 찾아보고 저 폴더도 찾아보고 쭉쭉쭉쭉쭉쭉 점점으로 이어져 있는 것들에 폴더를 다 찾아봤는데 이렇게 생긴 파일이 없어라고 했을 때 command not found 라는게 뜨게 된다는 거죠
이런 식으로 명령어들은 한가지의 패턴이 아니라 이렇게 별칭이나 Built-in 이나 외부 명령어 이런 식으로 보통 구분이 되구요
우리가 이제 그 명령어들이 이제 실행이 될 때 shell로 등록되어 있는 alias라든지 그리고 환경변수 path라든지 이런 것들은 다 이렇게 물결
그러니까 home경로에 bashrc라든지 bash -alias라든지 이런 파일들을 토대로 해서 설정이 되고 세팅이 된다라고 이해하실 수 있습니다
나중에 차후에도 좀 이렇게 환경설정이라든지 환경설정 문제 관련된 거라든지 사실 따지고 보면은 할 얘기가 정말 많거든요
그런 지금 아주 기초적인 내용들이기 때문에 일단은 한번 이해를 해보시고 명령어가 이렇게 구분이 되고 내가 명령어를 기본적인 명령어로
이런 거 쓸 수 있구나라는 정도로만 오늘은 훈련을 해주시면 또 나중에 다른 영상들로도 또 많은 내용들을 한번 공유해보도록 하겠습니다
일단은 이렇게 명령어에 대한 분류를 말씀을 드렸는데 ls가 대표적으로 외부에 있는 명령어고요
내장된 명령어, cd 같은 경우에는 shell 안에 내장되어 있는 명령어다 라고 말씀을 드렸습니다
cd나 ls 이런 것들이 굉장히 기초적으로 많이 사용할 수 있는 명령어인데요 제가 일단 먼저 한번 보여드리도록 하겠습니다
자 어떤 식으로 우리가 쓸 수 있냐면 일단은 우리가 필수적으로 쓸 수 있는 ls 는요 특정 폴더를 기준으로 해서 안에 있는 내용들을 리스트 하게 되는 거에요
명령어에 대해서 알고 싶으면 what is ls 라고 하면 디렉토리 안에 있는 컨텐츠를 리스트업 해준다 라고 이제 이해를 해볼 수가 있잖아요
여기서 다시 cd usr 로 들어가서 다시 pwd 로 또 확인할 수가 있는 거구요 change 디렉토리로 현재 경로가 변경이 된 겁니다
그 다음에 로컬로도 옮겨질 수가 있는 거죠 자 이런 식으로 확인을 해볼 수가 있겠구요 자 여기서 ls 를 했을 때 games라고 하는 거 보이시죠?
이 games라고 하는 거는 지금 폴더 명칭으로 되어 있는데 이것을 한번 mv라는 명령으로도 변경을 한번 해보도록 하겠습니다
그러면 mv games/ 를 통해서 games2을 한 다음에 game2로 변경을 할 수가 있는데 여기서 사실은 usr의 local폴더 안에 권한이 없기 때문에 권한 문제가 이런 식으로 발생할 수 있어요 이럴 때는 sudo 를 아예 붙여서 진행을 해주시게 되면은 games2 정상적으로 변경된 것 볼 수가 있겠고요
다시 내가 옮긴다고 한다면 games2를 games로 변경을 해서 폴더 명칭을 다시 변경했을 때 이렇게 mv를 통해서 변경하는 것까지 보실 수가 있겠습니다
우리가 ls 라든지 cd 라든지 pwd 그리고 mv 라는 명령어를 이렇게 차근차근히 알아봤고요
말씀드렸던 것처럼 리눅스 쉘 스크립트라는 강의를 참고해 보시게 되면 리얼리눅스 안에서 조금 더 체계적으로 이런 리눅스 명령어들 쉘 스크립팅 이런 것들
공부하실 수 있을 거라고 생각이 듭니다 그러면 또 다른 영상으로 인사드리도록 하겠습니다
감사합니다
https://reallinux.co.kr/course/se_shell