의 서브 쉘 동작 내가에서 자체 동일한 출력을 얻을하지 않는 이유 궁금 :배쉬 : LS
ls -1 -tF | head -n 1
및
echo $(ls -1 -tF | head -n 1)
내가 마지막으로 수정 된 파일을 얻기 위해 노력했다, 하지만 하위 셸 내부에서이 파일을 사용하면 결과적으로 하나 이상의 파일을 가져 오는 경우가 있습니까?
왜 그렇게 피하는가?
의 서브 쉘 동작 내가에서 자체 동일한 출력을 얻을하지 않는 이유 궁금 :배쉬 : LS
ls -1 -tF | head -n 1
및
echo $(ls -1 -tF | head -n 1)
내가 마지막으로 수정 된 파일을 얻기 위해 노력했다, 하지만 하위 셸 내부에서이 파일을 사용하면 결과적으로 하나 이상의 파일을 가져 오는 경우가 있습니까?
왜 그렇게 피하는가?
나는 방금 을 찾았습니다. echo $(ls -1 -tF | head -n 1)
을 사용하면 파일 그로 잉 메커니즘이 추가로 일치 할 수 있습니다.
그래서 echo "$(ls -1 -tF | head -n 1)"
은 이것을 피합니다.
결과가 실행 파일이면 끝에 *가 있기 때문에.
내가 코멘트에 이유 -F을 배치했지만, 지금은 여기에 넣어하기로 결정 : 마지막으로 수정 얻을내가 바로 가기를 가지고, 내 .bashrc에 다음 줄을 추가 파일이나 디렉토리가 나열 :
function L {
myvar=$1; h=${myvar:="1"};
echo "last ${h} modified file(s):";
export L=$(ls -1 -tF|fgrep -v/|head -n ${h}| sed 's/\(\*\|=\|@\)$//g');
ls -l $L;
}
function LD {
myvar=$1;
h=${myvar:="1"};
echo "last ${h} modified directories:";
export LD=$(ls -1 -tF|fgrep/|head -n $h | sed 's/\(\*\|=\|@\)$//g'); ls -ld $LD;
}
alias ol='L; xdg-open $L'
alias cdl='LD; cd $LD'
을 이제 내가 마지막 (최근 5) 수정 된 파일을 나열 L (또는 L 5)를 사용할 수 있습니다. 그러나 디렉토리가 아닙니다.
그리고 L; jmacs $ L 편집자를 열어 편집 할 수 있습니다. 전통적으로 나는 별칭 lt = 'ls -lrt'를 사용했으나 이름을 다시 입력해야합니다 ...
이제 mkdir ... cdl을 사용하여 해당 디렉토리로 변경합니다.
인용 부호가없는 서브 쉘을 사용하고 있는데 ls에 -F
플래그를 지정하면 파일 이름에 쉘 특수 문자가 출력되기 때문에 문제가 발생합니다.
-F, --classify
append indicator (one of */=>@|) to entries
실행 파일에 *가 추가됩니다.
당신이
echo $(ls -1 -tF | head -n 1)
다음
$(ls -1 -tF | head -n 1)
이 파일 이름을 반환하고, 그것을 실행하고 또한 다른 파일에 접두사로 발생하는 경우, 그것은 모두를 반환합니다 실행합니다.
예를 들어 당신이있는 경우
test.sh
test.sh.backup
는 다음이 반환됩니다 서브 쉘을 인용
test.sh test.sh.backup
로 확장을 반향 때이 확장을 방지
test.sh*
echo "$(ls -1 -tF | head -n 1)"
반환
test.sh*
내가 LS -tr | tail-n1이고 항상 작동합니다 .. – MostWanted
는 서브 쉘을 인용합니다. 실행 파일의'file * '과 같아지며, 에코되기 전에 확장됩니다. '-F, --classify 항목들에 (*/=> @ |) 중 하나를 추가하십시오. – 123
여기에 -F :'함수에 대한 설명 L { myvar = $ 1; h = $ {myvar : = "1"}; "마지막 $ {h} 개 수정 된 파일 :"; export L = $ (ls -1 -tF | fgrep -v/| head -n $ {h} | sed의/\ (\ * \ | = \ | @ \) $ // g '); ls -l $ L; } alias ol = 'L; xdg-open $ L ' ' –