이 명령은 무엇을 합니까?

이 명령은 무엇을 합니까?

Linux Kali에서 이 명령을 사용하고 있지만 두 번째 명령을 실행하면 "해당 파일이나 디렉터리를 찾을 수 없습니다."라는 오류가 계속 발생합니다.

end=7gb
read start _ < <(du -bcm kali-linux-1.0.8.amd64.iso | tail -1); echo $start
parted /dev/sdb mkpart primary $start $end

이것은 지속성을 얻기 위해 사용하는 더 큰 명령 세트의 일부 명령입니다. 나는 실제로 이것이 무엇을 의미하는지 전혀 모릅니다.

내 요청은 오류를 수정할 수 있도록 각 명령의 기능에 대한 설명입니다.

답변1

read start _

이는 입력 라인의 첫 번째 단어(by $IFS)를 변수에 할당합니다 start.

du -bcm kali-linux-1.0.8.amd64.iso | tail -1

파일 크기를 다음 메가바이트로 반올림하는 이상한 방법입니다.

parted /dev/sdb mkpart primary $start $end

iso 파일에 필요한 공간 이후에 시작하고(parted의 기본 단위가 메가바이트라고 가정하고 확인하지 않음) 7GB로 끝나는 sdb에 파티션을 만듭니다.

답변2

죄송합니다. 저도 같은 상황에 처해 있습니다. 따라서 이는 Kali 페이지의 지침을 보완합니다.

  • 각 명령은 자체 줄에 있습니다.

  • end=7gb최종 변수를 7gb로 정의하십시오.

  • read start _ < <(du -bcm kali-linux-1.0.8.amd64.iso | tail -1); echo $start

문제의 핵심은 Kali iso를 다운로드했고다운로드한 ISO가 있는 디렉터리에서 영구 파티션을 만들어야 합니다., 따라서 새 파티션의 시작은 ISO의 끝으로 정의되며 바이트 단위로 USB에 복사됩니다.

du -bcm kali-linux-1.0.8.amd64.iso iskISO 파일 세이지,두번째예,완료되었으며 1메가바이트 블록 크기

tail -1이전 명령은 다음과 같은 여러 줄의 결과를 제공했습니다.

3269    kali-linux-2019.2-i386.iso
3269    total

그러나 우리는 합계 이전의 숫자에만 관심이 있으므로 먼저 마지막(두 번째) 행을 제거하고 다음을 얻습니다.

3269 total

read start _마지막 요령은 첫 번째 공백이나 첫 번째 탭 또는 첫 번째 새 줄(기본 내부 필드 구분 기호)이 거기에서 멈출 때까지(밑줄) 줄을 읽고 해당 단어를 변수 시작에 할당하는 것입니다.

echo $start등호로 정의하지 않았으므로 해당 숫자를 $start 변수에 수정합니다.

  • parted /dev/sdb mkpart primary $start $end

ISO 파일의 메가바이트 크기(3269mb, 약 3gb)부터 7gb 정도까지 실제로 파티션을 생성하는 부분입니다. 이것이 영구 파티션이 될 것입니다. 일부 메가바이트가 손실되더라도 프로그램의 시작 블록 선택에 동의한다고 가정합니다.

sdX를 시스템에 맞는 문자로 변경하는 것을 잊지 마세요. 일반적으로 b보다 훨씬 높으며(g, d, e에 있음) 우리 중 많은 사람이 두 개의 하드 드라이브를 가지고 있으므로 예제에서는 b를 사용하지 않아야 한다고 생각합니다.

관련 정보