ls -d *.c *.h | sed 's@.*@diff -c & /usr/local/src/&@' | sh
여기에서 @게 무엇을 의미하는지 모르겠습니다.
그리고 전체적인 의미도 한번 명확하게 설명해 주십시오
1. ls -d *.c *.h
끝이 .c 또는 .h 로 끝나는 파일 또는 디렉토리를 찾되 디렉토리는 확장하지 않고 이름만 뿌려주고
2. sed 's@.*@diff -c & /usr/local/src/&@'
@는 분리자 입니다. 보통 /를 많이 쓰는데 @로 바꾸어 쓴 것 입니다.
문장에 /가 많이 나오면 \/형태로 번거로워지므로 분리자를 바꾼 것입니다.
처음나온게 @이면 뒤에도 @가 나와야 합니다.
내용은 ls로 검색되어진 파일명과 디렉토리명을
diff -c 검색된파일명 /usr/local/src/검색된파일명
형태로 바꾸는 것입니다.
3. sh
2.에서 표준출력을 넘겨 받아 쉘로 해석해줍니다.
즉
diff -c 검색된파일명 /usr/local/src/검색된파일명
을 실행하는 것입니다.
두 디렉토리에서 파일 비교하는 명령이군요. 이름은 같은데 내용이 다른 걸 찾아주네요. 다른 부분까지 뿌려주는군요..
Re: 쉘 프로그래밍 질문?
1. ls -d *.c *.h
끝이 .c 또는 .h 로 끝나는 파일 또는 디렉토리를 찾되 디렉토리는 확장하지 않고 이름만 뿌려주고
2. sed 's@.*@diff -c & /usr/local/src/&@'
@는 분리자 입니다. 보통 /를 많이 쓰는데 @로 바꾸어 쓴 것 입니다.
문장에 /가 많이 나오면 \/형태로 번거로워지므로 분리자를 바꾼 것입니다.
처음나온게 @이면 뒤에도 @가 나와야 합니다.
내용은 ls로 검색되어진 파일명과 디렉토리명을
diff -c 검색된파일명 /usr/local/src/검색된파일명
형태로 바꾸는 것입니다.
3. sh
2.에서 표준출력을 넘겨 받아 쉘로 해석해줍니다.
즉
diff -c 검색된파일명 /usr/local/src/검색된파일명
을 실행하는 것입니다.
두 디렉토리에서 파일 비교하는 명령이군요. 이름은 같은데 내용이 다른 걸 찾아주네요. 다른 부분까지 뿌려주는군요..
댓글 달기