centos 7 스크립트에서 PATH를 변수로 저장

centos 7 스크립트에서 PATH를 변수로 저장

사용자가 find 명령을 통해 이 변수를 사용하기 위해 특정 파일 경로를 입력할 수 있는 스크립트를 작성하고 싶습니다.

이것을 시도했지만 구문이 잘못된 것 같습니다.

enter file path : $PATH
find $PATH -size +1M  -exec rm {}\;

find $userpath -size $size -exec rm {}\;내가 사용해야 하는 치수 등 을 사용자가 입력하도록 하려면 어떻게 해야 합니까?

답변1

을 사용해야 합니다 read.

echo Enter file path:
read userpath
find $userpath -size +1M  -exec rm {}\;

또한 안전을 위해 를 사용하는 것이 좋습니다 rm -i.

답변2

흠, 귀하의 질문을 잘못 읽은 것 같습니다. 따라서 입력을 읽으려면 Bash 내장 명령을 사용할 수 있습니다 read(출력 참조 help read).

다른 이름을 지정하지 않는 한 출력이 자동으로 명명된(셸!) 변수로 들어가는 read사용자 정의 프롬프트를 사용할 수 있습니다 .-pREPLY

read -p "enter file path : "
find "$REPLY" -size +1M  -exec rm {} +

참고: 나는 또한 \;+~해야 한다호출 횟수가 줄어들지 find만 휴대성이 떨어질 수 있습니다.


이 변수는 PATH특별한 의미를 가지며 미리 채워져 있습니다. 이것이 어떤 껍질인지는 밝히지 않았지만 기본 규칙은 내가 아는 모든 껍질에 동일합니다. 환경 PATH변수는 실행 파일(바이너리, 스크립트...)이 포함된 폴더를 찾는 데 사용됩니다. 그런 다음 전체 또는 상대 경로를 제공하지 않고도 이러한 파일을 실행할 수 있습니다.

확인해주십시오이 문서더 알아보기. 인용하다:

$PATH/usr/bin/일반적으로 , 등의 바이너리 파일 경로입니다 /usr/X11R6/bin/./usr/local/bin

명령이 주어지면 쉘은 실행 파일 경로에 나열된 디렉토리에서 자동으로 해시 테이블 검색을 수행합니다. 경로는 환경 변수에 저장되며 $PATH콜론으로 구분된 디렉터리 목록입니다. 일반적으로 시스템은 $PATH 정의를 /etc/profile및/또는 에 저장합니다 ~/.bashrc(부록 H 참조).

bash$ echo $PATH
/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/sbin:/usr/sbin

PATH=${PATH}:/opt/bin/opt/bin현재 경로에 디렉터리를 추가합니다 . 스크립트에서는 이런 방식으로 경로에 디렉터리를 임시로 추가하는 것이 편리할 수 있습니다. 이는 스크립트가 종료될 때 원래 상태를 복원합니다 $PATH(스크립트와 같은 하위 프로세스는 상위 프로세스(셸)의 환경을 변경할 수 없습니다).

노트안전 조치로 ./현재 "작업 디렉토리"는 일반적으로 생략됩니다.$PATH

다음을 사용하여 echo "$PATH"보기현재의실행 중인 셸에서 이 변수의 내용입니다.

답변3

다음과 같은 것을 사용해야 합니다:

read -i "Enter path" PATH
find $PATH -size +1M -exec rm {}\;

그러나 PATH 변수는 이진 검색 경로보다 우선합니다. 또한 rm 명령은 미리 자동으로 삭제할 수 있으며 모든 내용을 삭제할 수는 없습니다.

다음 코드를 사용하는 것이 좋습니다.

read -i "Enter path" DIR
/bin/find $DIR -size +1M -delete -print

이 명령은 작업 환경/운영 체제를 손상시킬 수 있으므로 위험을 감수하고 사용하십시오!

관련 정보