`$ {f // / _}`에서 이중 슬래시는 무엇을 의미합니까?


17

Bash를 배우고 있으며 공백 문자를 다른 "공백이 아닌"문자로 바꾸고 싶습니다. for루프를 사용하고 있습니다 :

for f in *\ *; do mv "$f" "${f// /_}"; done

내 질문은 왜 이중 슬래시와 공백이 ${f// /_}있습니까? 무엇을 ${f// /_}합니까?


3
마음으로 배울 필요가 없다면 적어도 그것에 대해 읽을 곳을 알아야합니다 : bash 매뉴얼에 있습니다 .
glenn jackman

답변:


19

그것은 bash매개 변수 확장을 사용하는 대체 패턴 입니다.

에서 ${f// /_}:

  • 이중 슬래시 //는 모든 발생 공간을로 바꾸는 _데 사용됩니다. 하나의 슬래시를 넣으면 /첫 번째 공백 만 바뀝니다.

  • 공백을 대체하기 때문에 공백이 있습니다 (밑줄로)

따라서 패턴은 기본적으로 다음과 같습니다.

${parameter//find/replace}

man bash더 많은 아이디어를 얻으려면 확인하십시오 .

한 번에 Parameter Expansion섹션으로 이동 하려면 man bash:

LESS=+/'Parameter Expansion' man bash

2
요컨대, 글로벌 검색 및 교체입니다.
glenn jackman

3

이 섹션 "{f// /_}은 모든 공간을 밑줄로 바꾸는 것을 의미합니다. 이것은 Bash 매개 변수 확장을 사용하고 있습니다.에 f정의 된 변수 for f in *\ *;는 모든 쉘 확장 (글 로빙)과 일치 할 때마다 실행됩니다. 파일 이름을 찾을 때마다 값이 $f됩니다.

매개 변수 확장은 //뒤에 나오는 문자 //(이 예에서는 공백)가 뒤에 나오는 문자 /(이 예에서는 밑줄) 로 대체되어야한다는 의미로 작동합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.