필요에 따라 시간과 날짜를 다양한 포맷으로 출력하는 명령어이다.

사용법 : date [옵션] [+포맷] [날짜] 
       -d, --date date : 지정한 date 값과 같이 시간과 날짜를 보여준다. 
       -f, --file=datedate : 지정한 날짜 파일에서 각각의 줄에 대한 날짜를 보여준다. 
       -I, --iso-8601[=TIMESPEC] : ISO-8601 포맷으로 보여준다. 만일 timespec를 지정하였다면, 날짜나 시, 분, 초에 대한 값 중 하나를 보여준다. 
       -r, --reference=FILE : 지정한 파일이 마지막으로 수정된 날짜를 보여준다. 
       -R, --rfc-822 : RFC-822 데이트 문자열로 보여준다. 
       -s, --set=STRING : 지정한 string으로 시간을 맞춘다. 
       --version : 버전정보를 보여준다. 

date는 시간과 날짜를 알려 준다. 만일 옵션이 없으면, 시스템의 현재 시간과 날짜를 보여주며, +로 시작되는 옵션이 있으면 지시하는 형태대로 보여주게된다.
기본 출력은 다음과 같다.

# date 
2002. 07. 01. (월) 20:09:50 KST 

%j는 현 시스템의 년도에서 오늘 날짜까지 며칠이 지났는지 알 수 있다.

# date +%j 
182 

%H는 현재의 시간을 24시간제로 보여주며,%M은 분을 보여준다.
또한 다음과 같은 방법으로 오늘 날짜의 연월일을 형식을 지정하여 표현할 수도 있다.

# date +%H%M 
2009 
# date +%Y-%m-%d 
2002-07-10 

--date 옵션으로 현재 시간에 15일 후의 날짜를 알 수 있다.

# date --date '15 days day' 
2002. 07. 17. (수) 20:18:24 KST 

그럼, 현재 시간에서 3년 2개월 전은 날짜가 어떻게 될까?

# date --date '3years 2months ago' 
1999. 05. 01. (토) 20:19:48 KST 

또한 이와 같은 날짜의 출력 결과를 다냥한 포맷으로 출력할 수 있다. 이 포맷을 다양하게 조합하여 자기만의 출력 결과를 만들 수도 있으며, 셸 스크립트와 cron을 이용하여 백업이나 기타 작업을 할 때 셸 스크립트에서 date 명령을 이용하여 작업한 날짜와 시간의 이름으로 파일을 만들도록 지정할 수도 있다.

       %      % 문자 그 자체 
       -      필드를 채우지 않는다.(기본적으로 0으로 채운다) 
       _      필드를 공백으로 채운다. 
       n      줄바꿈 
       t      수평 탭 

시간 필드: 
       %H     시 (00..23) 
       %I     시 (01..12) 
       %k     시 ( 0..23) 
       %l     시 ( 1..12) 
       %M     분 (00..59) 
       %p     로케일의 AM 또는 PM 
       %r     시간, 12-시간제 (hh:mm:ss [AP]M) 
       %s     1970-01-01  00:00:00  UTC  (비표준 확장기능)로 부터 
              경과된 초 
       %S     초 (00..61) 
       %T     시간, 24-시간 (hh:mm:ss) 
       %X     로케일에서 정의한 시간 표현(%H:%M:%S) 
       %Z     시간대 (에, EDT), 시간대를 결정할 수 없는 때는 아무 
             값도 출력하지 않는다. 

날짜 필드: 
       %a     로케일의 약식 요일 이름 (Sun..Sat) 
       %A     로케일의  완전한 요일 이름, 가변 길이 (Sunday..Sat- 
             urday) 
       %b     로케일의 약식 월 이름 (Jan..Dec) 
       %B     로케일의 완전한 월 이름, 가변 길이 (January..Decem- 
             ber) 
       %c     로케일의 날짜와 시간 (Sat Nov 04 12:02:33 EST 1989) 
       %d     월 중 일 (01..31) 
       %D     날짜 (mm/dd/yy) 
       %h     %b 와 동일 
       %j     연 중 일 (001..366) 
       %m     월 (01..12) 
       %U     연 중 주  번호,  일요일을  주의  첫번째  날로  생각 
             (00..53) 
       %w     요일 번호 (0..6), 0 은 일요일 
       %W     연  중  주  번호,  월요일을  주의  첫번째 날로 생각 
             (00..53) 
       %x     로케일의 날짜 표현식 (mm/dd/yy) 
       %y     연 중 일의 마지막 두 숫자 (00..99) 
       %Y     연 (1970...) 
2005/06/21 20:36 2005/06/21 20:36
부트 플로피나 스왑 파일을 만드는 등의 특수한 복사를 하는 명령어이다.

사용법 : dd [옵션] 
--help : 도움말을 보여준다. 
--version : 버전 정보를 보여준다. 
of=file : 표준 출력 대신에 지정한 파일에 작성한다. 
if=file : 표준  입력 대신에 지정한 파일에서 불러들인다. 
ibs=size : 지정한 사이즈만큼 읽는다. 
obs=size : 지정한 사이즈만큼 쓴다. 
bs=size : 지정한 사이즈 만큼 읽고 쓴다.(ibs,obs 값은 무시된다) 
count=n : 입력 블록의 ibs 크기만큼 복사한다. 
conv=ebcdic : ASCII코드를 EBCDIC 코드로 변환한다. 
conv=ibm : ASCII 코드를 호환 EBCDIC 코드로 변환한다. 
conv=swab : 입력되는 두 바이트의 순서를 바꾼다. 입력 파일에서 짝이 맞지 않는 하나의 바이트가 남으면, 마지막 바이트는 그냥 단순히 복사된다. 

dd 명령어는 변환 과정을 거쳐 파일 혹은 표준 입출력을 복사한다. ASCII-EBCDIC간 변환, 대소문자간 변환, 입출력 바이트 쌓을 바꾸거나 입력 파일의 처음이나 끝을 건너뛰거나 잘라내서 출력파일을 만드는 등의 다양한 변환을 할 수 있다. 백업에서처럼 대량 데이터를 복사할 때도 사용한다. dd는 파일 내용을 장치에 그대로 쓴다.

1.44인치 부트 플로피 만들기

# pwd 
/boot 
# dd if=kernel-image of=/dev/fd0 bs=1440 

kernel-image는 /boot 디렉토리에 있는 커널 이미지 이름을 지정한다.

512M의 스왑파일 만들기

# dd if=/dev/zero of=/swap bs=1024 count=524288 
# mkswap /swap 524288 
# sync 
# swapon /swap 

free 명령으로 작성된 스왑파일을 확인한다.

# free 

[관련 명령어]
tar 빠르고 간단한 파일 묶기 명령어
cpio 시스템 백업에 사용하는 명령어
mt 자기테이프 조작 명령어
2005/06/21 20:35 2005/06/21 20:35
ext2 파일시스템 디버거로, 파일 시스템을 직접 확인하며 제어할 수 있다.

사용법 : debugfs [[-옵션] 장치명] 
-w 읽기/쓰기 모드로 파일시스템을 연다. 

debugfs은 상호 대화형 디버거이다. debugfs 명령어를 실행한 다음, 다음과 같은 명령어들을 사용할 수 있다.

       cat <화일명> 
             아이노드 하나의 내용을 표준출력으로 덤프한다. 
       cd <디렉토리> 
             작업 디렉토리를 변경한다. 
       chroot <디렉토리> 
              지정한 아이노드로 루트 디렉토리를 변화시킨다. 
       close  열려진 화일 시스템을 닫는다. 
       clri <화일명> 
              file 에 해당하는 아이노드의 내용을 지운다. 
       dump <화일명> <출력 화일명> 
              아이노드의 내용을 화일로 덤프한다. 
       expand_dir <화일명> 
              디렉토리를 확장한다. 
       find_free_block [목표] 
              목표   로부터   시작해서   첫번째  빈  블럭을  찾아 
              할당한다. 
       find_free_inode [dir [mode]] 
              빈 아이노드를 찾아서 할당한다. 
       freeb <블럭> 
              블럭을 할당되지 않은 것으로 표시한다. 
       freei <화일명> 
              화일명 에 해당하는 아이노드를 해제한다. 
       help   debugfs(8) 가 인식하는 명령어 목록을 출력한다. 
       icheck <블럭> 
              블럭 --> 아이노드 변환을 수행한다. 
       iname <아이노드> 
              아이노드    에    해당하는    화일명을    출력한다. 
              (현재로서는 구현되어 있지 않음 - ncheck 을 참고). 
       initialize <장치명> <블럭크기> 
              장치명 에 ext2 화일 시스템을 생성 
       kill_file <화일명> 
              화일을 삭제하고 사용한 블럭을 해제한다. 
       ln <원본 화일> <목표 화일> 
              링크를 만든다. 
       ls [경로명] 
              ls(1) 명령을 에뮬레이트한다. 
       modify_inode <화일명> 
              화일명 에 해당하는 아이노드의 내용을 수정한다. 
       mkdir <화일명> 
              디렉토리를 생성한다. 
       mknod <화일명> [p|[[c|b] <major> <minor>]] 
              특별한 장치 화일을 생성한다. 
       ncheck <아이노드> 
              아이노드 --> 이름 변환을 수행한다. 
       open [-w] <장치명> 
              화일 시스템을 연다. 
       pwd    현재 작업 디렉토리를 출력한다. 
       quit   debugfs 를 종료 
       rm <화일명> 
              화일을 지운다. 
       rmdir <디렉토리> 
              디렉토리를 삭제한다. 
       setb <블럭> 
              블럭을 할당된 것으로 표시한다. 
       seti <화일명> 
              화일명   에   해당하는   아이노드를  사용  중이라고 
              표시한다. 
       show_super_stats 
              수퍼블럭의 내용을 보여준다. 
       stat <화일명> 
              화일명 에 해당하는 아이노드의 내용을 덤프한다. 
       testb <블럭> 
              블럭이 할당되어 있다고 표시되어 있는지 확인 
       testi <화일명> 
              화일명  에  해당하는  아이노드가  할당되어   있다고 
              표시되어 있는지 확인 
       unlink <화일> 
              링크를 지운다. 
       write 원본 화일 <화일명> 
              화일명  을  갖는  화일  시스템에 화일 하나를 만들고 
              나서 원본 화일 의 내용을 목표 화일에 복사한다.
2005/06/21 20:33 2005/06/21 20:33