하루 셸 명령 텍스트 작업 시리즈-linux dd 사용 튜 토리 얼

5465 단어 dd텍스트 조작
오늘 첫날 쓰 는 셸 스 크 립 트 의 기본 지식 부터 말씀 드 리 겠 습 니 다.
1.셸 스 크 립 트 는.sh 를 확장자 로 합 니 다.보통 실행 합 니 다./${filename}.sh 또는 sh${filename}.sh
2.셸 스 크 립 트 는\#!/로 시작 합 니 다.bin/bash #!shebang
3.디 버 깅 시작  #!/bin/bash Cxv
4./dev/null 은 모든 물건 을 넣 으 면 사라 집 니 다.Liux 블랙홀./dev/zero 는 초기 화 에 사용 되 며 0 이 발생 합 니 다.
오늘 먼저 dd 명령 을 소개 합 니 다.
유래(전 칭):"Convert an copy"를 기능 설명 에 따라"cc"라 고 명명 해 야 하 는데"cc"는"CComplier"를 대표 하 는 데 사용 되 었 기 때문에"dd"라 고 명명 되 었 습 니 다.
시작 예:
1.  dd if=infile.log  of=outfile.log bs=1M count=1
  infile.log 내용 을 outfile.log 로 복사 합 니 다.한 번 에 읽 기 비트 수 는 1M 이 고 한 블록 씩 읽 기(1M,bs 에서 결정 합 니 다)
2.  echo -n "hello world" | dd cbs=1 conv=unblock 2>/dev/null
  cbs 를 보 여 줍 니 다.바이트 가 바 뀔 때마다 conv=unblock 은 cbs 크기 의 블록 중 끝 에 있 는 빈 칸 을 줄 바 꾸 는 문자 로 바 꿉 니 다.  2> 오류 정보 출력 흐름 입 니 다.  /dev/null 처음 소개 합 니 다.
해독 도움말:
(이렇게 큰 단락 을 보고 싶 지 않 아 먼저 뛰 어 넘 고 해석 을 보 려 고 한다)
용법:d[조작 수]...
d 옵션
 파일 을 복사 하여 조작 수 에 따라 변환 하고 포맷 합 니 다.
  비트 수    읽 기와 쓰기 비트 수
  cbs=비트 수    일차 변환 비트 수
  conv=CONVS    각 쉼표 로 분 단 된 표지 목록 에 따라 파일 을 변환 합 니 다.
  카운트    지정 한 블록 만 블록 으로 복사 합 니 다.
  ibs=비트 수    한 번 에 읽 는 비트 수(기본 값:512)
   if=파일    지정 한 파일 에서 읽 기
  iflag=기호    쉼표 로 구 분 된 기호 목록 에서 지정 한 방식 으로 읽 기
  obs=비트 수    지정 한 비트 수 를 한 번 에 기록 합 니 다(기본 값:512)
   문서    지정 한 파일 에 쓰기
  oflag=기호    쉼표 로 구 분 된 기호 목록 에서 지정 한 방식 으로 기록 합 니 다.
  seek=블록 수    출력 시작 부분 에서 지정 한 블록 을 건 너 뛰 기
  skip=블록 수    입력 시작 부분 에서 지정 한 블록 수 를 건 너 뛰 기
  status=noxfer    전송 금지 통계
블록 과 바이트 수 뒤에 다음 과 같은 접미사 가 있 을 수 있 습 니 다.
c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M
 GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.
모든 CONV 기 호 는 다음 과 같 을 수 있 습 니 다.
  ascii        EBCDIC 코드 에서 ASCII 코드 로 변환
  ebcdic    ASCII 코드 에서 EBCDIC 코드 로 변환
  ibm        ASCII 코드 에서 교 체 된 EBCDIC 코드 로 변환
  block        끝 문자 블록 에 있 는 줄 을 같은 길이 의 빈 칸 으로 바 꿉 니 다.
  unblock    cbs 크기 의 블록 끝 에 있 는 빈 칸 을 줄 바 꾸 기
  lcase        대문자 를 소문 자로 변환 하 다
  ucase        소문 자 를 대문자 로 변환 하기
  swab        모든 입력 데이터 바이트 교환
  sync        입력 한 데이터 블록 을 ibs 크기 로 NUL 문자 로 채 웁 니 다.배합 블록
         또는 unblock 시 NUL 문자 대신 빈 칸 으로 채 웁 니 다.
  excl        fail if the output file already exists
   nocreat    do not create the output file
   notrunc    출력 파일 을 차단 하지 않 음
  noerror    데 이 터 를 읽 는 중 오류 가 발생 한 후에 도 계속 진행 합 니 다.
  fdatasync    종료 전에 출력 파일 데 이 터 를 디스크 에 기록 합 니 다.
  fsync    위 와 비슷 하지만 메타 데이터 도 함께 기록 합 니 다.
FLAG 기 호 는 다음 과 같 습 니 다.
  append    추가 모드(출력 에 만 의미 가 있 음;conv=notrunc 포함)
   direct    직접 I/O 액세스 모드 사용
  directory    디 렉 터 리 가 아니면 directory 가 실 패 했 습 니 다.
  dsync        동기 화 I/O 액세스 모드 사용
  sync        위 와 유사 하지만 메타 데이터 에 도 유효 합 니 다.
  fullblock    입력 을 위해 전체 블록 쌓 기(iflag 만)
   nonblock    차단 없 는 I/O 액세스 모드 사용
  noatime    액세스 시간 업데이트 안 함
  nocache    캐 시 데이터 버 리 기
  noctty    파일 할당 제어 단말기
  nofollow    링크 파일 을 따 르 지 않 음
 
판독:
1. bs ibs obs  cbs
bs:1 회 읽 기와 쓰기=ibs+obs
ibs:한 번 에 읽 기
obs:한 번 에 쓰기
cbs:1 차 변환
2. if of
읽 는 파일
출력 파일
3. seek skip
skip 가 if 에서 읽 을 때  몇 비트 건 너 뛰 기
seek 는 of 를 쓸 때 몇 비트 를 건 너 뜁 니까?
실전 예:
1.무 작위 이름 의 테스트 파일 대량 생 성

for i in {10..10}  
do  
dd if=/dev/zero of=junk.test$i bs="$RANDOM"K count=20  
done
2.백업 및 복구
백업

dd if=abc.gz of=abc.gz.bak1 bs=1k count=10000  
dd if=abc.gz of=abc.gz.bak2 bs=1k skip=10000 count=70000  
dd if=abc.gz of=abc.gz.bak3 bs=1k skip=80000 
복구 방법 은 다음 과 같 습 니 다.

dd if=abc.gz.bak1 of=abc.gz  
dd if=abc.gz.bak2 of=abc.gz bs=1k seek=10000  
dd if=abc.gz.bak3 of=abc.gz bs=1k seek=80000 
3.대소 문자 변환
대문자 생 성:dd if=dd.txt of=my.log bs=1M count=1 conv=ucce
소문 자 생 성:게 으 르 지 않 기 위해 독자 에 게 남 겨 보 자.
4.자신 복사 

file_subscript=copy  
dd if=$0 of=$0.$file_subscript 2>/dev/null
5.플 로 피 디스크 의 내용 을 다른 플 로 피 디스크 에 복사 하고/tmp 를 임시 저장 소 로 사용 해 야 합 니 다.드라이브 에 원본 디스크 를 삽입 하고 다음 명령 을 입력 하 십시오:
$ dd if =/dev/fd0 of = /tmp/tmpfile
복사 가 완료 되면 원본 디스크 를 드라이브 에서 꺼 내 대상 디스크 를 삽입 하고 명령 을 입력 하 십시오.
$ dd if = /tmp/tmpfile of =/dev/fd0
플 로 피 디스크 복사 가 완료 되면 임시 파일 을 삭제 해 야 합 니 다:
$ rm /tmp/tmpfile  
6.net.i 이 파일 을 플 로 피 디스크 에 쓰 고 읽 기/쓰기 버퍼 의 수 를 설정 합 니 다.
(메모:플 로 피 디스크 의 내용 이 완전히 덮어 집 니 다)
$ dd if = net.i of = /dev/fd0 bs = 16384  
7.파일 sfile 을 파일 dfile 에 복사 합 니 다.
$ dd if=sfile of=dfile
8.100 M 빈 파일 만 들 기
dd if=/dev/zero of=hello.txt bs=100M count=1
=============================================
/dev/null,별명 은 끝 없 는 구멍 입 니 다.모든 데 이 터 를 출력 할 수 있 습 니 다.모두 먹 을 수 있 고 버 티 지 않 습 니 다!
/dev/zero 는 입력 장치 입 니 다.파일 을 초기 화 할 수 있 습 니 다.
/dev/null---빈 장치 이 며 비트 통(bit bucket)이 라 고도 합 니 다.기록 한 출력 은 모두 버 려 집 니 다.메 시 지 를 표준 출력 으로 표시 하거나 파일 에 쓰 지 않 으 려 면 메 시 지 를 비트 통 으로 바 꿀 수 있 습 니 다.
/dev/zero--이 장 치 는 0 을 무궁무진 하 게 제공 합 니 다.당신 이 필요 로 하 는 모든 수량 을 사용 할 수 있 습 니 다.-장 치 는 더 많은 것 을 제공 합 니 다.그 는 장치 나 파일 에 문자열 0 을 쓸 수 있다.
$ dd if=/dev/zero of=./test.txt bs=1k count=1
$ ls -l
total 4
-rw-r--r--     1 oracle    dba           1024 Jul 15 16:56 test.txt
eg:
$ find / -name access_log   2>/dev/null
본문 은'선비'블 로그 에서 나 온 것 이다.

좋은 웹페이지 즐겨찾기