2013-11-02 4 views
0

정말 간단한 뭔가를 놓치고 생각 :이 간단한 기록 스크립트는 무엇이 잘못 되었습니까?

$ ./history_search sed 
sed 
1 
$ 

I가 './hs.sh 나오지도'의 형태로 사용할 수있는 스크립트를 만들려고 :

여기
$ cat hs.sh 
#!/bin/bash 
echo $1 
history | grep -i $1 
echo $# 
exit 
$ 

출력은 역사상 모든 sed 명령을 검색하십시오. 나는이 스크립트를 사용하지 않고 별칭을 만들 수 있습니다. 여기

는 별칭 :

alias hg='history | grep -i $1' 
+0

스택 오버플로에 오신 것을 환영합니다. 곧 [About] 페이지를 읽으십시오. 유닉스 시스템을 사용자'루트'로 실험하는 것에 대해 당신에게 강력히 권고한다. 실수로 오타가있는 전체 시스템을 루트로 파괴 할 수 있지만 루트가 아닌 경우 시스템 손상으로부터 보호됩니다. 역사는 실험을위한 나쁜 영역이기도합니다. 실수로 의도 한 다른 명령 대신'rm -fr .'을 실행하면 다시 혼란을 초래할 수 있습니다. 루트로 계속 작업하기로 결정했다면 좋은 백업이 있는지 확인하십시오. –

답변

2

대화 형 쉘 역사를 가지고; 스크립트 된 셸에는 기록이 없습니다. 대화 형 쉘에서만 히스토리를 요청할 수 있는데, 이는 별명은 작동하지만 스크립트는 그렇지 않습니다.

+0

설명과 편집에 감사드립니다 !! –

0

셸 스크립트로 실행하면 기록이없는 새 셸이 생성됩니다.

source ./history_search see 

와 그것을 작동합니다 :

는 다음과 같이 같은 쉘에서 실행 해보십시오.

+1

마지막 행이'exit' 인 곳에서 스크립트를 작성하면 아마도별로 행복하지 않을 것입니다. 그것은 스크립트에서 버그라고 쉽게 주장 할 수 있습니다 - 일반적으로 무해한 스크립트이지만 스크립트가 소스가 될 수있는 것은 아닙니다. –

+0

나는 이것을 곧 시험해 보겠다. 나는 위에 주어진 논쟁들에 대해 모른다. –

관련 문제