}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate on the chrome↓↓↓===***===>

2019년 8월 14일 수요일

리눅스 기본명령어 자세히!

안녕하세요 마무입니다. 오늘은 리눅스를 사용할 때 필요한 "리눅스 기본명령어" "ls", "cd", "pwd", "man", "cat", "리눅스 리다이렉션", "리눅스 file", "리눅스 clear"에 대해서 알려드릴겁니다.



파일을 다루는 명령어는 다음 포스트에서 다루겠습니다! 한번에 다하면 너무 힘들어요 ㅠㅠ


---목차---

1. ls

2. cd, "." , ".." , "/" , ''~" , "*"

3. pwd

4. man

5. 리다이렉션이란, cat , ">" , "<" , ">>" , "<<"

6. file

7. clear

----------

입니다.

여기서 못 찾은 정보는
리눅스 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_13.html
여기서 찾아보세요!




1. ls


ls(list) 명령어는 list라는 영어 뜻 "다수의 품명(品名)이나 인명(人名) 등을 기억하거나 점검하기 쉽도록 특별한 순서로 적어 놓은 것"  그대로 
 "현재 있는 장소에 있는 파일들을 순서대로 나열해서 내게 보여줘라~" 이런 명령어입니다







이렇게 ls 뒤에 아무것도 안치면 현재위치인  "~" 즉, "/home"에 있는 모든 파일을 보여주란 것 입니다.

"ls" 명령어의 사용법은

ls [-옵션] [대상] 입니다






이렇게 옵션을 안붙이고 대상만 지정하면 그 "대상안에 있는 파일들"을 보여줍니다

옵션은 "-"은 하나만 쓰고 뒤에 여러개를 동시에 붙여서 쓸 수 있습니다.
예로들어 "ls -al" , "ls -alR" 이렇게 말이죠. 그리고 명령어에서 옵션 순서는 중요하지 않습니다 "ls -al"과 "ls -la"는 똑같은 결과에요.

명령어 "ls"의 옵션 종류는 사실 쓴거 외에도 엄청나게 많지만 쓸 것 같은 옵션만 적어봤습니다.









ls -a(all) : 파일의 이름이 맨앞이 "."으로 시작하면 숨긴 파일이 되는데 숨긴 파일도 보여주
라는 옵션이다







 -A: -a와 똑같은데 상위폴더를 뜻하는 ".."와 현재위치를 뜻하는 "."를 안보여준다(사실상 -a만 기억하면 됨)









  -d(directory): 이 옵션없으면 대상 폴더 "내" 파일들을 보여주는데 이건 그 "대상 폴더만" 보여주라는 옵션이다 보통 "-l"옵션과 같이 쓴다




















-l(long): 정보을 길~게 보여주라는 옵션 이 옵션으로 파일의 종류와 i-node를 알 수 있습니다.
















   -R(Recursive): recursive란 뜻이 재귀, 즉 자기 자신을 다시 참조란 뜻인데 쉽게 생각하면 하위 폴더의 폴더 폴더까지 전부 보여주란 뜻입니다.

현재 "~"에서 "-R"옵션을 사용하면 결과가 너무나도 길기때문에 제가 저번에 만든 "abc"디렉토리를 대상으로 해보자면, "abc" 디렉토리 안에 "bbb"라는 디렉토리가 있고 그 "bbb"디렉토리 안에 "ccc"란 사용할 수 없는 링크파일이 있네요.

이건 제가 만든 파일들을 대상으로 해본 것으로, 만약 여러분들이 써보고 싶다면 한번
"






















 -S(Size) : 사이즈가 큰 파일순서로 보여준다 보통 "-l" 명령어와 함께 쓴


















 

-h(human readable) : 인간이 보기 쉽게 파일크기를 보여주며 보통 "-l"명령어와 함께 써야 차이를 볼 수 있다. 사진은 위에 쓴 "-S" 옵션도 함께 쓴 것이다.




2. 리눅스 cd . .. / ~ *


cd(change directory): 이름 그대로 디렉토리를 바꿔라, 이동하란 뜻으로 다른 디렉토리로 이동할 때 사용하는 명령어입니다.

cd [대상]

특정 대상을 안쓰고 그냥 cd만 하면 "~" 그러니까 home위치로 오게 됩니다.





이렇게 말이죠

각 기호들 '.' , '..' , '/' , '~' ,'*'은 각각 의미가 있습니다. 하나씩 설명해 드리겠습니다.

'.' : 경로에 쓰이면 "현재위치"라는 의미로 쓰이고, 파일이름 맨 앞에 쓰이면 "숨긴 파일"이란 뜻으로 쓰입니다.
만약 "cd ." 라고 명령어를 친다면 "cd(이동해라) .(현재위치로)"여서 아무일도 안 일어나죠
하지만 파일 이름을 짓거나 바꿀 때 ".secret"이런식으로 파일 이름 맨 앞에 '.'을 붙이면 옵션 "ls -a"이나 "ls -A"로 보지 않는 이상 보이지 않는 숨긴 파일이 됩니다.

'..' : 경로로만 쓰이며 "상위폴더"의 의미가 있습니다. 그러니 만약 "root"계정으로 홈에서  "cd .." 라고 한다면 현재 위치인 "/root"에서 상위폴더인 최상위인 디렉토리인,  "/"으로 이동하는 것이죠.

'/' : '/'는 사실 루트라는 "최상위 디렉토리"의미도 있지만, "경로와 파일이름" 둘다에서 "디렉토리"란 의미로도 쓰입니다. 그리고 경로에서 "/"는 파일들을 구분하는 역할도 하죠.

"cd /var/log" 명령어를 예로 들어본다면






보라색 맨앞에 /최상위 루트 "디렉토리" 이고
그다음 주황색 var/는  맨앞의 "/"디렉토리 안의 var라는 디렉토리란 의미고
그리고 파란색 log는 그 var라는 디렉토리 안의 log라는 파일이란 뜻이죠
명령어를 치고 나면 저희는 "/var/log"에 들어와 있을겁니다.

물론 "log"파일이 사실은 디렉토리이기 때문에  "cd /var/log/"라고 해야하는 것 아니냐!?
하실 수 있는데 해보시면 "cd /var/log"같은 결과가 나옵니다. 그 이유는 제가 전 포스팅에서 썼듯이, 디렉토리도 "파일"의 종류중 하나이기 때문입니다.

물론 정확하게 따지자면 "cd /var/log/"가 맞습니다. 그걸 확인 할 수 있는 방법이 명령어를 일부만 적고 "tab"키를 누르면 자동완성이 되는데 이동하는 대상이 "디렉토리"면 끝에 자동으로 "/"이 붙기 때문이죠.

참고로 위에서 말한 방식은 리눅스의 "절대이동" 방식과 "상대이동"방식중 절대이동 방식에 해당합니다. 말그대로 절대적 경로를 입력해서 이동하기 때문에 절대이동이라 말하는 겁니다.

"상대이동"은 어려울 것 없습니다.
"cd ../../""cd ./../../" 처럼 이동하는 걸 상대이동이라 하는데요

말 그대로 "."".."는 "현재 위치"와 "상위 파일"이란 의미대로, 상대적이기 때문에
저렇게 이동할 시 상대이동이라 하는 겁니다

저희는 "/var/log/"에 있었는데 여기서 "cd ../../" 하면 어디로 갈까요?
"/ver/log"에서 ..로 한번 상위 디렉토리로 이동하니,  "/var/"로 갈꺼고 여기서 한번더 ..하니
"/"로 가겠네요

"cd ./../../"도 꼬아놓은 것 뿐이지 "cd ../../"랑 똑같습니다.
현재 위치 디렉토리에서 상위디렉토리로, 그리고 또 상위디렉토리로니까 결국은 "/"로 가겠죠


'~' 는 전부터 포스트하면서 말해왔듯이 그 유저의 home디렉토리를 의미합니다
"mamu"라는 유저계정으로 로그인 했다면 "~"는 정확히는 "/home/mamu/"인 것이고
"korea"라는 유저계정으로 로그인 했다면 "~"는 정확히는 "/home/korea/"인 것이죠

"root"계정으로 로그인하면 "~"는 "/root/"이겠지만요. 참고로 "root"는 관리자 계정이기 때문에 일반 유저들과 다른 홈 디렉토리를 갖는 겁니다.

'*'은 "모든"이란 의미를 가지고 있습니다.
아직은 안 배웠지만 대상 파일의 내용을 읽어서 화면에 출력해주는 "cat"이라는 명령어가
있는데 만약 홈에서  "cat *" 이란 명령어를 친다면 홈에 있는 모든 파일의 내용을 읽어서
화면에 출력할 겁니다.

이처럼 '*'는 응용해서 "ls 파일이름*" 이나 "ls *파일이름" 이렇게 원하는 것만 찾을 수 있습니다 "ls *ab" 라고 친다면 "ab로 끝나는 모든 파일을 보여줘라" 라는 뜻이고, "ls ab*"라고 친다면 "ab로 시작하는 모든 파일을 보여줘라" 라는 뜻이 되는거죠!





3. 리눅스 pwd


pwd(print working directory)란 영어 뜻 그대로, "현재 내가 있는 디렉토리를 화면에 출'

력해라" 라는 뜻입니다.





이렇게 pwd란 명령어는 현재 내가 어디에 있는지 정확하게 알려주므로
리눅스를 막 배우기 시작하신 분들은 틈만 나면 "pwd"를 쳐서 디렉토리 구조에 대해
익숙해지는 것이 좋습니다.




4. 리눅스 man


man(manual page)는 "man [명령어 또는 파일]" 이렇게 쓰이며
명령어 또는 파일를 어떻게 써야하는지 정보가 쫘르르륵 나옵니다





앞으로 배울 "cat"라는 명령어에 대해서 옵션은 뭐가 있으며 어떤 형식으로 써야하는지
궁금할 때 이렇게 man 명령어를 사용하시면







이런 식으로 "cat" 명령어에 대한 옵션과 사용법을 자세히 알려줍니다.

이 "man" 명령어는 리눅스 초보자든 고수든 모두 사용하는 명령어로!! 리눅스를 하시다가 '아... 이 명령어 어떻게 쓰더라? 무슨 옵션 써야하더라..?' 하실 때 즉석으로 사용하시면 됩니다.

참고로 리눅스 마스터 1급 실기 같은 경우, 생전 첨 보는 모르는 명령어 옵션들이 나올 수 있는데 이 때 "man" 명령어가 정~~~말 요긴하게 잘 쓰입니다.

실제 업무에서도 마찬가지고요!

물론 90% 이상이 영어로 쓰여있지만, 어짜피 컴퓨터 공학계얼은 영어를 무조건 알아야하니
영어 공부도 한다는 느낌으로 습관화 하시면 좋습니다!

이 'man' 명령어에 대해서 자세히 알고 싶다면 https://mamu2830.blogspot.com/2021/04/linuxManPagesAndSections.html
에서 보시길 바라지만, 개인적으로 정~~말 궁금한 걸 못 참는 성격이시거나, 아니면 리눅스마스터 1급까지 생각하고 있다 하시면 보시길 추천합니다.

왜냐면 리눅스마스터 2급 수준을 막 공부한 여러분들이 너무 자세히 리눅스에 대해 파고 들어가다간, 금방 지루해져서 중도 포기를 할 수 있기 때문이죠.. 



5. cat  > < >> << 



cat(catenate)연결하다라는 뜻인데 여기서 의문이 생길 겁니다. "엥? cat은 파일을 읽어서 출력하는 명령어 아니였나?" 라고요.

그렇게 아셔도 되는데 이제 "cat" 명령어를 사용하는 목적중 하나가 "redirection"이라고 불리우는 ">, <, >> , <<" 기호를 함께 사용해서 여러 파일의 내용을 하나로 합칠 때 사용하거든요.

리다이렉션, ">,  >>"의 용도는 "출력값을 방향쪽으로 넘겨라" 입니다.

예를 들어 "ls > file1"이라치면, 현재위치에서 "ls"했을 때 나오는 파일 목록들이 원래는 터미널에 출력됐다면, ">"에 의해서 그 출력값을 오른쪽의 "file1"이란 파일에에 넘기라는 거죠. 그러면 "file1"에 파일목록들이 적히는 겁니다.

이 때 >나 >> 오른쪽에 없는 파일이름이 쓰여있으면, 적은 파일 이름으로 파일을 만들고 왼쪽의 명령어 결과를 넣습니다.

">>"는 뭘까요? 이것은 ">"과 비슷하지만 큰 차이점 하나가 있습니다. 그것은 바로 ">"는 출력값을 덮어 씌우는 개념이라면 ">>"기존의 값에 이어 붙이는 개념이죠

사진으로 보여드리겠습니다.





이렇게 "~" 홈에서 "ls > file1"하면





이렇게 "file1"이라는 파일이 자동으로 만들어지고, 거기에 "ls" 출력값이 자동으로 기록이 됩니다. 그리고 저흰 다시한번 "cat"이란 명령어로 파일 내용을 읽은거고요.





확실한 비교를 위해 "/"로 이동한다음 다시한번 "ls > /root/file1" 해보겠습니다 결과는





제가 말했던 것 처럼 기존에 "file1"에 적혀있던 "~"의 파일리스트는 사라지고
"/"파일 리스트만 있는 걸 확인할 수 있습니다. 이렇게 ">"는 덮어씌우는 개념이라면





이번엔 ">"대신 ">>"로 바꿔서 해보니까 기존에 "file1"에 적혀있던 "/" 리스트 내용에 그대로 다시한번 "/"리스트 내용이 적힌 것을 볼 수 있습니다.

그러면 이제 이 리다이렉션 "> , < , >> , <<""cat"명령어와 함께 응용 해보겠습니다.











먼저 "echo 1111 > 1"란 명령어로 "1111"란 내용의 "1" 파일을 만든 다음 같은 방식으로 "echo 2222 > 2"란 명령어로 "2222"내용의 "2"란 파일을 만들고

"cat 1 2" 이렇게 명령어를 쳐보니, "1"과 "2", 총 2개의 파일을 동시에 읽은 것을 볼 수 있습니다. 그렇다면 리다이렉션 ">, <, >> ,<<" 를 같이 사용해볼게요





이렇게 "cat 1 2 > 3" 하고, "cat 3"이라 확인해보니, 자동으로 "3"파일이 생성되면서 "1"과 "2"의 내용이 들어간 것을 확인할 수 있습니다.





위에서 설명했듯이 이번에는 ">"대신 같은 과정을 이어붙이는 ">>"를 사용한 모습입니다.
기존 "3"파일에 들어있던 내용에 그대로 다른 내용이 이어붙여진 것을 볼 수 있죠?

'<'인 경우 사실 오른쪽의 값을 '입력 값'으로서 왼쪽에 넘겨라 이런 뜻인데, 사실 이건 대부분의 명령어들은 이게 기본적으로 되어 있어서 저희가 예시를 들기가 참 애매합니다.

예를 들어 "cat < file1(1이란 내용의 file1이라는 파일이 있을 때)" 이라고 하면 "file1을 "cat 명령어 입력에 넣어라" 이런 뜻인데, 사실 이건 "cat file1"이랑 같은 결과죠.

위와 마찬가지로 대부분의 명령어들은 이미 "명령어 다음에 적는 값을 입력값으로 받아라" 라고 프로그래밍이 되어 있어서, 저희들이 터미널에서 명령어와 함께 '<'나 "<<"는 쓸 일이 거의 없어요.

하지만 프로그래밍을 하여 직접 어떤 실행 파일을 만들었다고 쳤을 때, 비로서 '<'를 쓸 일이 생깁니다. 

예를 들어 제가 키보드로 아무거나 입력을 하면, 총 몇개의 글자를 적었는지 계산하여 출력하는 "yee"란 프로그램을 만들었다 칩시다.

이 "yee" 프로그램을 "./yee" 이렇게 실행하면(리눅스에서 쉘 프로그래밍으로 만든 프로그램을 실행하려면 "./파일이름" 이렇게 해야함) 우리가 키보드로 어떤 것을 입력하길 기다릴텐데, 애초 "./yee < file1" 이렇게 하면 바로 "입력받은 글자수는 1개 입니다(file1의 내용은 '1'이라 가정할 때)"처럼 결과가 나오는 것이죠.

프로그램이 실행될 때 보통은 표준 입력(키보드, 마우스)를 통해 입력값이 프로그램에 들어가지만, 이 리다이렉션 '<'과 "<<"를 이용하면 특정 파일에 데이터를 적은 다음, 프로그램에 그 파일 내 데이터를 입력으로 집어 넣어서 결과를 출력할 수 있는 것이죠.

"<"과 "<<"는 사실 쉘 프로그래밍할 때가 아니면 별로 체감을 못 하시기에 지금은 그냥
"오른쪽 값을 왼쪽에 입력 값으로 줘라"정도로 알아두세요~

">"과 ">>""왼쪽 값의 출력(결과)값을 오른쪽으로 줘라"

이렇듯 보통 cat를 읽는 용이라기보단 이렇게 여러 파일들을 하나로 연결하듯이
주로 사용하기 때문에 연결하다라는 catenate 영어의 줄임말을 붙인 것 같습니다.

cat [-옵션] [대상....] 형식인데 [대상...]이라는 건 띄어 쓰기하면 여러개의 파일을
한번에 처리 할 수 있다라고 생각해주세요

"cat" 명령어의 자주쓰는 옵션은

cat -n(number) : 파일의 내용을 출력할 때 각 행 숫자를 비어있는 행까지 같이 출력한다




 








 



 -b(number-nonblank) : "-n"과 똑같은 데 "비어있는 행은 빼고" 행번호를 붙여서 출력                                       한다





 -s(squeeze-blank) : 연속되는 2개이상의 빈 행을 하나로 압축해서 출력한다
















사진을 보니 이해가 잘되죠? 백문이 불여일견이라니깐~




6. 리눅스 file


file(file)명령어는 이 파일이 어떤 파일인지를 알려주는 명령어입니다.
예로들어 이 파일은 디렉토리다, ASCII text파일이다 , 이진파일이다 이렇게말이죠

file [-옵션] [파일] 이렇게 쓰이고
사실 옵션은 별로 쓰일 일이 없을 것 같으니 따로 적지 않겠습니다.

옵션이 궁금하신 분들은 저희 초반에 배웠던 "man" 명령어로 한번 봐보세요 ㅎㅎ

















7. 리눅스 clear


깔끔한 걸 좋아하시는 분들이라면 습관적으로 자주 쓰시게 될 명령어
clear(clear)입니다! 이름 뜻 그대로 깨끗하게 만들어버리죠

명령어를 쓰는 형식은 "clear" 이게 끝입니다 뒤에 파일명이나 옵션이 없어요
그냥 명령어에 "clear"를 적어주시면 터미널에 지금까지 쌓인 모든 글들이
싸악 지워집니다










이렇게 있던 것들이







요렇게 깔끔하게 지워집니다~



에구.. 점점 힘이 부치네요... 너무 자잘한 것까지 포스팅해서 너무 진도가 안나가는데
그래도 저는 배울 당시 이렇게 자세히 알려주는 사람이 있길 바랬었기에
저같은 사람이 분명 있을거라 생각하고 같은 방식을 고수하겠습니다.

좋아요와 팔로우는 저에게 큰 힘이 됩니다!
혹시나 오타나 틀린 개념이 있으면 지적해주세요!

그럼 다음 포스트에 더 좋은 퀄리티로 찾아뵙겠습니다!

리눅스 독학 페이지로 돌아가기 : https://mamu2830.blogspot.com/p/blog-page_13.html


댓글 12개:

  1. 감사합니다 큰 도움이 됐어요~

    답글삭제
  2. 좋은 포스팅 열심히 보고 있습니다. : )

    답글삭제
  3. 리눅스 정리하신거 쭉 보면서 공부하고있는데 너무 대단하십니다. 그리고 감사드려요 ㅠ

    답글삭제
    답글
    1. 도움이 돼 다행입니다!! 힘이 되는 댓글을 달아주셔서 저도 감사합니다!

      삭제
  4. 자세히 알려주셔서 감사합니다

    답글삭제
  5. 댓글다는게 겁나긴 하는데..
    vm 설치도 하고, 리눅스 기초명령어도 볼수 있고, 쉽게 설명이 되어있어
    리눅스를 익히는데 도움이 많이 됩니다!! 고맙습니다!

    답글삭제
    답글
    1. 용기를 내 따뜻한 댓글을 남겨주셔서 감사합니다!
      다른 포스트들도 꼭 도움이 되길 바랄게요!! :)

      삭제
  6. 리눅스를 공부한지 얼마 안된사람입니다.. 설명이 너무 친절하고 잘해주셔서 정말 많은 도움 되고 있습니다. 정말 감사드립니다 !!!

    답글삭제
    답글
    1. 공부 시작한지 얼마 안됐다니 ㅎㅎ 꼭 다른 포스트들도 도움이 되길 바랄게요 !!

      삭제

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!

* 바쁜 개인 일정으로 댓글 답변이 많이 느립니다 *