티스토리 뷰

 linux 기초 리눅스에서 사용되는 주요 특수 기호들




은 사용자가 더욱 편리하게 명령을 입력하고 실행할 수 있도록 다양한 특수 기호를 제공합니다.

특수 기호의 종류와 사용법은 대부분의 셸에서 거의 비슷한데 bash shell 을 기준으로 설명하려고 합니다.





특수 기호는 셸에서 특별한 의미를 가진 문자로 각 특수 기호별로 특수 기능을 수행합니다.

주요 특수 기호는 * ,  ?  ,  |  ,  ;  ,  [ ]  ,  ~  , ' '  ,  " " , > , >>


등 이 있습니다.









◎ 특수 문자  *


- *(별표)는 임의의 문자열을 나타내는 특수 문자로 흔히 사용하는 특수 문자 중 하나입니다.  셸에서  *  는 0개 

  이상의 문자로 대체 됩니다.. 주로 여러 파일의 이름을 하나하나 작업하기 힘들때 이름을 간단하게 표시하는

  데 사용합니다. 명령을 실행할 때 파일의 이름을 적어야 하는 자리에 * 를 사용하면 모든 파일을 나타냅니다.






ls  * 현재 디렉터리의 모든 파일과 서브 디렉터리를 나열합니다. 

서브 디렉터리의 내용도 출력합니다.





ls -F a* 현재 디렉터리의 a로 시작하는 모든 파일의 이름과 파일 종류를 출력합니다.

※a도 해당한다는 데 주의 합니다.






cp  * aaa 현재 디렉터리의 모든 파일을 디렉터리 aaa 아래에 복사 했습니다.

※aaa,bbb,ccc는 디렉터리기 때문에 복사되지 않습니다.







rm -rf  *현재 디렉터리의 모든 디렉터리 및 파일을 묻지 않고 삭제 할 수 있습니다.

rm -f : 현재 디렉터리에 있는 모든 파일을 묻지 않고 삭제할 수 있습니다.










◎ 특수 문자  ? [ ]


- ?(물음표) , [ ](대괄호)는 모두 하나의 문자를 나타내는 데 사용됩니다. ?는 길이가 1인 임의의 한 문자를,

   [ ]는 괄호 안에 포함된 문자 중 하나를 나타냅니다. [ ]는 사용할 여러 문자를 나열 하거나 범위를 지정할 수 

   있으며, 다른 특수 문자와 혼합하여 사용할 수도 있습니다.





↑한 문자에 대한 와일드 카드인 ? 입니다. ?는 길이가 1인 임의의 한 문자를 표현할 때 사용 합니다.







↑[ ](대괄호)는 사용할 여러문자를 나열하거나, 범위를 지정할 수 있습니다.

이는, 다른 특수문자와 혼합하여 사용할 수 도 있습니다.






↑[ ] 안의 문자로 시작하는 파일 출력







◎ 특수 문자  ~ -


~(물결표) , -(붙임표)는 디렉터리를 나타내는 특수 문자 입니다. ~만 사용하면 현재 작업중인 사용자의 홈 

  디렉터리를 나타내고, 다른 사용자의 로그인ID와 함께 사용하면(~로그인 ID) 해당 사용자의 홈 디렉터리를

  나타냅니다. -는 cd명령으로 디렉터리를 직전의 작업 디렉터리를 나타냅니다.





↑~는 홈디렉터리를 의미 합니다.






↑- 는 cd명령으로 이전 작업 디렉터리로 이동할 수 있습니다.





◎ 특수 문자  |  ;


- |(파이프) , ;(세미콜론)는 멸령과 명령을 연결한다. ;은 연결된 명령을 왼쪽부터 차례로 실행 하고, |는 왼쪽 

   명령의 실행결과를 오른쪽 명령의 입력으로 전달한다. (오른쪽 명령어가 먼저 실행 된다고 생각 하시면 

|(파이프)를 기준으로 오른쪽 명령어가 먼저 실행된다고 생각하면 이해하기 쉽습니다.)





|(파이프) 명령어는 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달합니다.






↑cat a.txt에대한 more명령을 사용한 것입니다.






↑|(파이프)를 기준으로 오른쪽 명령이 먼저 실행된다고 생각하시면 됩니다.

aaa라는 디렉터리가 없으면, 파일 a1을 만들 수 없습니다.

mkdir aaa(aaa 디렉터리를 만든 후) → touch aaa/a1(aaa디렉터리 안에 a1파일을 만듭니다.)





↑|(파이프) 명령어는 먼저 실행한 명령어가 실패해도 다음 명령어를 실행합니다.


|(파이프) 명령어의 기능 정의상 '왼쪽 명령어의 실행 결과를 오른쪽 명령의 입력으로 전달한다.'

로 인해 왼쪽 명령이 먼저 실행 된다고 오해하기 쉽습니다.


실행순서는 오른쪽이 우선이므로 주의 하셔야 합니다!!

mkdir aaa | toch aaa/a1의 경우 역시 aaa디렉터리가 없는 상태에서 a1파일을 만들고자 하여 

touch 명령이 실행될 수 없다는 에러가 뜹니다!


단, '파이프 명령어는 먼저 실행한 명령어가 실패해도 다음 명령어를 실행한다'는 기능으로 인해 

touch 명령이 실패해도 mkdir 명령이 수행되어 aaa디렉터리는 만들어 집니다.

하지만, aaa디렉터리 안에 a1파일은 만들어 지지 않습니다.






↑;(세미콜론) 은 왼쪽부터 차례대로 명령을 실행합니다.

즉, 날짜를 출력한 후 현재 디렉터리의 파일 목록 출력하고, 마지막으로 현재 작업 디렉터리의 

절대경로를 보여줍니다.








◎ 특수 문자  '  ' "  "


- '  '(작은 따옴표) , "  "(큰 따옴표)는 문자를 감싸서 문자열로 만들어주고, 문자열 안에 사용된 특수 기호의

기능을 없애 줍니다. *나 ? , ; 등을 파일 이름에 사용하거나 화면에 메시지로 출력하려고 할 때 셸이 이 문자를 

특수 기호로 간주하여 미리 처리하지 않도록 해야 하는데, 이때 따옴표를 사용합니다. '  ' 는 모든 특수 기호를,

"  "는 $,  `(백 쿼터)  , \(역 슬래쉬)를 제외한 모든 특수 기호를 일반 문자로 간주하여 처리 합니다.





↑'  ' (작은 따옴표)는 $SHELL 문자열이 화면에 그대로 출력 됩니다.

"  "(큰 따옴표)는 셸 환경 변수인 SHELL에 저장된 값인 현재 셸의 종류가 화면에 출력 됩니다.







◎ 특수 문자  `  `


`  `(백쿼터, 백쿼테이션) 는 키보드 상단의 숫자 1 키 왼쪽(~)에 잇는 키를 사용합니다. 잘못 보면 작은 

  따옴표('  ')와  유사하므로 주의해야 합니다. 셸은 `  ` 로 감싸인 문자열을 명령으로 해석하여 명령의 

  실행 결과로 바뀌게 됩니다.





↑"  "(큰 따옴표)는 `  `(백 쿼터) 기능을 제외한 문자열을 출력합니다.

즉, echo 명령으로 출력될 내용에서 Today is date가 출력 되어야 하지만,

date에 `  `(백 쿼터) 씌어져 있기 때문에 date명령어로 출력 됩니다.






◎ 특수 문자   \


- \(역 슬래쉬, 글꼴에 따라 다르게 표시 됩니다.)은 특수문자 바로 앞에 사용되는데 해당 특수 문자의 효과를

  없애고 일반 문자처럼 처리 합니다.





↑\(역슬래쉬) 를 이용해 특수 기호 *의 기능을 감췄습니다. 

따라서 rm -rf *(현재 디렉터리에 모든 파일과디렉터리 삭제)

명령어가 실행되지 않았습니다.




 


◎ 특수 문자  > , < , >>


> , < (꺾쇠), >>(이중 꺾쇠) 는 입출력의 방향을 바꾸는 특수 문자 입니다. > , < (꺾쇠)는 표준 출력     파일을 바구는 특수문자 이고, >>(이중 꺾쇠)는 파일에 내용을 추가하는 역활을 합니다.

  명령1 > 파일이름 (파일의 내용을 명령1로 바꿉니다.), 명령1 >> 파일이름 (파일의 내용에 명령1을 추가 합니다.)







↑aaa파일에 hello라는 내용을 담아 놨습니다.







↑aaa파일의 내용을 >(꺾쇠)를 이용해 안녕하십니까로 바꿨습니다.








↑aaa파일의 내용을 >>(이중 꺾쇠)를 이용해 '내용을 추가 합니다.' 라는 글을 추가 했습니다.





>(꺾쇠)와 >>(이중 꺾쇠)는 파일의 내용을 바꾸거나 내용을 추가 할때 유용하게 사용할 수 있습니다.












































==================================================

참고 : 페도라 리눅스  시스템&네트워크 -  한빛 아카데미