답변:
그냥 사용 echo
... 확장 할 명령 앞에 넣어. 나는 이것을 아주 자주 사용합니다.
$ ls
one.txt
two.txt
three.dat
$ echo rm *.txt
rm one.txt two.txt
$ rm *.txt
당신은 사용할 수 있습니다 Home및 Del신속하게 앞을 추가 / 제거 할 수 echo
.
편집
바와 같이 지적 합니다 (이 경우 같은 명령이 단순한 명령이없는 경우 의견이 작동하지 않습니다 for
루프, 파이프를 사용 |
하거나, &&
또는 그런 다른 것).
echo cat * | someprogram
이 답변에서 생각한 것을하지 않습니다.
사용할 수 있습니다 set -x
.
예를 들어, 스크립트를 고려하십시오.
$ cat script.sh
set -x
echo *
실행될 때 echo
실제로 실행하기 전에 확장 명령문을 표시 합니다.
$ bash script.sh
+ echo file1 file2 file3 script.sh
file1 file2 file3 script.sh
Kundor가 지적했듯이 이것은 명령 줄 에서도 대화식 으로 작동 합니다.
$ set -x
+ set -x
$ echo *
+ echo file1 file2 file3 script.sh
file1 file2 file3 script.sh
man bash
set -x
다음과 같은 기능을 설명 합니다.
각 간단한 명령 (명령, 대소 문자 명령, 선택 명령 또는 명령의 산술)을 확장 한 후 PS4의 확장 된 값을 표시 한 다음 명령과 해당 확장 인수 또는 관련 단어 목록을 표시합니다.
기본값은 대한 PS4
A, 위에 표시 플러스 공백 기호로입니다.
대화식 쉘의 경우, glob 패턴을 입력 Ctrl+x
한 *
후를 누르면 해당 glob 패턴이 확장 된 명령 행이 편집됩니다. bash 매뉴얼 페이지에서 :
glob-expand-word (
C-x *
)포인트 이전의 단어는 경로 이름 확장을위한 패턴으로 취급되며 일치하는 파일 이름 목록이 삽입되어 단어를 대체합니다. 숫자 인수가 제공되면 경로 이름 확장 전에 별표가 추가됩니다.
glob-list-expansions ( Ctrl+x
, g
)에 관심이있을 수도 있습니다 .
Ctrl+x, *
입력 한 직후 echo *
와 Enter 키를 누르기 전에을 누르셨습니까 ? 그래도 작동하지 않으면 ~/.inputrc
glob-expand-word를 수정 하여 다른 것으로 바인딩 할 수 있습니다.
Ctrl+x
다음을 누릅니다 Shift+8
. 다음과 같은 경우 seing 시도 할 수 Ctrl+x, g
앞서 말했듯의에서 자신의 키 할당, 작업, 또는 .inputrc
파일을.
인수가 확장되거나 토큰 화되는 방법을 보려면 인수를 인쇄하는 프로그램이나 스크립트를 사용할 수 있습니다. 구현은 다음과 같습니다 bash
.
#!/bin/bash
for (( i = 0; i <= $#; ++i )); do
printf 'argv[%d] = %s\n' $i "${!i}"
done
파일을 파일에 넣고 printargs.sh
실행 가능하게 한다고 가정하면 다음과 같이 출력됩니다.
$ ./printargs.sh a{1..3}b
argv[0] = ./printargs.sh
argv[1] = a1b
argv[2] = a2b
argv[3] = a3b