본문 바로가기
Linux

[Linux] 인용과 확장 - 확장

by RTLog 2024. 3. 14.
728x90
반응형

 

안녕하세요. RTLog입니다. 

 

오늘은 Linux를 사용한 작업에서 큰 효율성을 줄 수 있는 "인용과 확장"이라는 개념에 대해 작성하려고 합니다.

 

인용과 확장

인용의 설명을 위해 확장의 개념이 필요하기 때문에, 이번 포스트에서는 확장에 대한 설명을 작성하겠습니다.

확장

확장은 어떤 명령이 실행되기 전에 특정 문자를 확장된 형태로 변환하는 것을 말합니다. 확장은 문자열을 조작하고, 명령 내에서 명령을 실행하고, 산술 연산을 수행하고, 패턴을 사용하여 파일 이름을 일치시킬 수 있는 셸의 강력한 기능입니다. 

 

이전에 작성했던 포스트에서 작성한 명령어인 "cd ~"에서 "~"도 확장의 종류에 속합니다. 

"~"가 실제로는 어떤 것을 가리키는지, echo 명령어를 통해 확인할 수 있습니다.

 

* Linux의 'echo' 명령은 터미널에 텍스트나 변수를 문자열로 출력하는 데 사용됩니다.

rtlog@desktop:~$ cd ~    # cd /home/rtlog/ 와 같음
rtlog@desktop:~$ echo ~  # /home/rtlog/

 

Linux에 존재하는 여러 유형의 확장에 대해 설명해보겠습니다.

변수 확장

변수확장은 변수 참조 시 해당 값으로 확장되며, 변수 이름 앞에 '$' 기호가 붙을 때 발생합니다.

 

변수는 환경 및 구성 정보를 기록하기 위한 변수로, 리눅스 시스템에서 가장 기본으로 설정되어 있는 변수는  "환경 변수"가 있습니다. Shell에 등록되어 있는 변수를 "env" 명령어를 통해 확인하고, 변수확장을 확인해보겠습니다. 

 

  • Shell 변수 목록 확인: "env"
    • LS_COLORS, HOSTTYPE, LANG, ... 등 변수 확인

일부 캡쳐

  • "echo" 명령어를 사용한 변수확장 확인

$ 를 사용한 변수 확장 확인

명령어 확장

명령어 확장을 사용하면, 명령의 출력이 명령 문자열 내에서 명령 자체를 대체할 수 있습니다. 명령어 안에서 명령어를 실행하는 것이죠. 일반적으로 역따옴표(`) 또는 $() 구문을 사용하여 수행됩니다.

명령 확장

산술 확장

산술 확장은 $((수식)) 구문을 사용하여 산술 연산 결과로 확장을 수행할 수 있습니다.

산술 확장

 

1.5 + 1.5 연산도 산술 확장을 통해 출력하려고 했는데요. 오류가 발생합니다.

 

산술 확장은 실수 연산이 불가능하기 때문인데요. bc(bash calculator) 명령어를 사용하면 가능합니다.

아무 옵션 없이, bc 명령어를 작성하면 대화형 모드로 연산을 진행할 수 있습니다. (종료는 Ctrl+D)

bash calculator

'-l' 또는 '--mathlib' 옵션을 사용하면, 수학 라이브러리를 로드하여 사인, 코사인, 아크탄젠트, 지수 및 자연 로그와 같은 추가 수학 함수를 상용할 수 있습니다.

 

아래는 Pipe를 통해 bc 표준입력이 아닌 명령어의 출력으로 입력을 전달한 모습입니다.

2024.03.14 - [Linux] - [Linux] Pipe

bash calculator with pipe


와일드카드를 사용한 경로명 확장

*, ? 등 와일드카드를 사용한 확장도 가능합니다. 

2024.03.13 - [Linux] - [Linux] Wild Card

bash로 시작하는 숨겨진 파일 리스트 출력

중괄호 확장

중괄호 확장은 Bash를 포함한 다양한 Unix 계열 셸에서 사용할 수 있는 기능으로, 중괄호 '{}' 내에 패턴을 지정하여 임의의 문자열을 생성할 수 있습니다. 쉘이 중괄호 확장을 발견하면 중괄호로 묶인 문자열의 가능한 모든 조합을 생성하고 이를 단일 인수 또는 명령의 일부로 처리합니다.

중괄호 확장

 

감사합니다. 

 

728x90
반응형

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });