내 홈 폴더에 어떤 특수 문자가 표시되고 확장될 수 있나요?

내 홈 폴더에 어떤 특수 문자가 표시되고 확장될 수 있나요?

나는 다음 라인을 실행하고 있습니다 :

for i in `pwgen -yB -N 8 1`; do echo "$i"; done

그러면 출력은 다음과 같습니다.

.
Descargas
Documentos
Escritorio
Imágenes
Música
NetBeansProjects
Plantillas
public_html
Público
Vídeos
.
"
}
"
$
{

예를 들어, 그중 일부는 Descargas내가 자전거를 타는 홈 폴더(스페인어)에 속합니다 Documentos.Escritorio

매개변수가 있는 pwgen은 -y영숫자가 아닌 특수 문자를 하나 이상 생성합니다. -Nparam은 생성된 비밀번호 수(8)를 선택하는 데 사용되고 마지막 문자는 1비밀번호 길이(1)를 선택하는 데 사용됩니다.

echo $i내 홈 콘텐츠에 어떤 특수 문자를 인쇄할 수 있는지 알고 싶습니다 .

답변1

다음을 수행하지 마십시오:

for i in `pwgen -yB -N 8 1`

명령 대체 결과는 다음의 영향을 받습니다.경로명 확장.

대신 이렇게 하세요:

pwgen -yB -N 8 1 | while IFS= read -r i; do printf '%s\n' "$i"; done

*경로 이름 확장이 수행되지 않았음을 나타내는 아래 출력에 나타나는 내용을 관찰하십시오 .

$ pwgen -yB -N 8 1 | while IFS= read -r i; do printf '%s\n' "$i"; done
~
-
*
@
;
\
*
-

답변2

'분할'을 사용하고 있습니다 for i in `command`.
그러나 이는 "파일 이름 생성"(bash의 경로 이름 확장)과도 관련이 있습니다. 여기서 , 및 와 같은 (따옴표가 없는 *) 문자 는 "파일 이름"으로 확장됩니다.?[

다음을 통해 끌 수 있습니다: set -f.

set -f ; for i in `pwgen -yB -N 8 1`; do echo "$i"; done

배열을 사용하는 것이 좋습니다.

$ set -f; arr=( $(pwgen -yB -N 4 1) ); printf '<%s>\n' "${arr[@]}"
<~>
<&>
<_>
<`>

아마도:

$ set -f; arr=( $(pwgen -yB -N 5 18) ); printf '%s\n' "${arr[@]}"
oesheisu%ugh>aetas
nae>chootho|yeiwah
quie{thohp+aechuit
ib\iibugeighe<pie?
kie}phah=ngeitaeph

물론, readarray를 사용하여 배열을 채울 수 있습니다(필수는 아님 set -f).

$ readarray -t arr < <(pwgen -yB -N 8 1)

그런 다음 모든 요소를 ​​인쇄합니다.

$ printf '%s\n' "${arr[@]}"

한 줄에 모두 :

$ readarray -t arr < <(pwgen -yB -N 4 12); printf '%s\n' "${arr[@]}"
ioquavoej&ee
che>u}phoej<
iuchoo"shoom
hahd!eumohsu

답변3

그것은 *:

for i in `echo '*'`; do echo "$i"; done

찾는 방법:

for i in `pwgen -yB -N 100 1 | tee /tmp/f1`; do echo "$i"; done >/tmp/f2
diff f1 f2

차이점을 확인할 때까지 몇 번 실행해야 할 수도 있습니다. 아니면 늘리세요 N.

관련 정보