[42Seoul/minishell] bash 명령어 확인

yebeen·2022년 8월 18일
0

42-Seoul/minishell

목록 보기
9/9
post-thumbnail

기본 명령어

- echo

echobackslash escape(\)를 만나도 문자 그대로 출력합니다.

$ echo "Hello\nWorld\n"

Hello\nWorld\n
$

기본적으로 개행이 들어가 있으나 -n옵션을 주게되면 개행하지 않습니다.

$ echo -n "Hello\nWorld\n"

Hello\nWorld\n$

- cd

cd(change directory)는 주어진 상대 또는 절대 경로로 current working directory를 이동합니다.

$ cd [eirectory]

만약 해당 디렉토리가 없다면 에러 메시지를 출력합니다.

bash: cd: directory: No such file or directory

절대경로

절대경로는 루트디렉토리부터 이동할 목표 폴더까지 모든 경로를 다입력해서 이동하는 방법 입니다.

$ cd /home/desktop

상대경로

상대경로는 내가 현재 소속된 디렉토리에서 목표 디렉토리로 바로 이동할 때 사용하는 방법 입니다.

  • .: 현재 위치까지 경로 요약

  • ..: 상위 폴더로 한 단계 이동

  • 현재 경로가 /home/desktop일 경우

$ cd ../../practice

desktop -> home -> / 두 번을 상위 폴더로 이동 후 practice폴더로 이동합니다. 즉, 현재 경로는 /practice가 됩니다.

상대경로 사용시 ./ 기호는 생략 할 수 있습니다.

  • 현재 경로가 /home이고 /home/desktop으로 이동하려는 경우

./ 기호를 포함

$ cd ./desktop

./ 기호를 생략

$ cd desktop

동일한 결과를 나타냅니다.

- pwd

현재 디렉토리를 알고 싶을 때 사용하는 명령어입니다.

- env

전역 변수 설정 및 조회를 합니다.

- export

사용자 환경 변수를 전역 변수로 설정합니다. 옵션 없이 사용했을 경우 환경변수 목록을 출력합니다.

- unset

환경변수로 설정한 값을 지워줍니다.

- exit

shell을 종료합니다.


다중 명령어

- 세미콜론 (semicolon ;)

명령어를 분리하는 기능을 합니다. 앞 명령어 결과와 관계없이 다음 명령을 실행합니다.

$ echo "Hello" ; echo "World"
Hello
World
$ echo2 "Hello" ; echo "World"
bash: echo2: command not found
World

- 파이프 (pipe |)

앞 명령어에서 나온 명령 결과를 두 번째 명령에서 사용합니다. 즉, 어떤 프로세스의 표준 출력이 다른 프로세스의 표준 입력으로 쓰이게 되는 것입니다.

$ echo "Hello" | echo "World"
World
$ echo2 "Hello" | echo "World"
World
bash: echo2: command not found

- 더블 앰퍼샌드 (double ampersand &&)

각 명령어가 차례대로 실행하되, 앞 명령어 결과가 True일 경우에만 다음 명령을 실행하게 됩니다.

$ echo "Hello" && echo "World"
Hello
World
$ echo2 "Hello" && echo "World"
bash: echo2: command not found

- 더블 버티컬바 (double vertical bar||)

각 명령어가 차례대로 실행하되, 앞 명령어 결과가 False일 경우에만 다음 명령을 실행하게 됩니다.

$ echo "Hello" || echo "World"
Hello
$ echo2 "Hello" || echo "World"
World

따옴표 (quote - quotation mark)

bash에서 따옴표는 숫자나 문자를 구분하기 위한 용도가 아닙니다. 1234'1234', "1234"는 모두 같은 스트링 문자열입니다.

따옴표는 공백으로 나누어진 문자를 합치거나, 공백을 유지하거나, 특수 문자 등을 스트링으로 사용할 때 문자를 묶는 역할을 합니다.

환경 변수를 설정해 둔 뒤 값을 테스트해보면 결과가 다른 것을 알 수 있습니다.

$str="World"

참고로 $str='World', $str=World의 값은 같습니다.

- 작은 따옴표(single quotation mark ')

작은따옴표로 감싸진 문자열은 변화 없이 그대로 출력되는 것을 확인할 수 있습니다.

$ echo 'hello $str'
hello $str
$ echo '"'
"
$ echo '\'
\

참고로 이스케이프 문자(\)도 그래도 인식되기 때문에 작은따옴표로 묶인 문자열에 \을 써서 작은따옴표 자체를 넣으려고 한다면 원하는 결과가 나오지 않습니다.

$ echo 'Why can'\''t I write '"'"'s between single quotes'
#      |-------|  |----------|   |-----------------------|
Why can't I write 's between single quotes

이스케이프와 큰따옴표로 쿼우트된 작은 따옴표에 의해 3개의 문자열로 나뉘어진 것 입니다.

- 큰따옴표 (double quotation mark ")

큰따옴표로 감싸진 문자열은 변수가 실제 값으로 치환된 후 출력되는 것을 알 수 있습니다. 특정 문자의 경우 \를 사용해 출력할 수 있습니다.

$ echo "hello $str"
hello world
$ echo "\""
"
echo "\\"
\

변수를 치환할 필요가 있는지 등에 따라서 작은따옴표를 사용하거나 큰따옴표를 사용해야 할 것 같습니다.


redirection

명령어 실행 전, I/O가 redirect 될 수 있습니다. 명령어의 파일이 복제, 열기, 닫기 등의 기능을 할 수 있게 제공합니다.

- 표준 입력 재지정 (infile redirection <)

명령어를 수행하면 stdin이 file에 연결됩니다.

$ wc -l < infile
	2

위 명령어는 infile에 있는 행의 수를 출력하게 됩니다.

- 표준 출력 재지정, 덮어쓰기 (output redirection >)

명령어를 수행하면 stdout이 file에 연결됩니다.

$ ls -al n> outfile

ls -al n> outfile 명령어 뒤에 숫자를 써주게 되면 fd값이 n을 파일에 연결하게 됩니다.

- 표준 출력 재지정, 이어쓰기(appending output >>)

명령어를 수행하면 stdout이 file에 연결되고, 해당 명령어의 수행 결과가 파일에 이어써집니다.

- here document (<<)

여러줄의 input을 받게되는데, 탈출문을 만나기 전까지 input이 stdin과 redirect됩니다.

$ ls -al << EXIT > outfile
your
multi-line
text goes
here
EXIT

순서

순서를 확인하기 위해서 직접 연결해서 확인해 봤을 때 이해가 잘 가지 않아서 고생을 했었습니다.


참고

profile
🐣🐥

0개의 댓글