달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
.. .. ..

우선 date 명령어를 이용하여 시스템의 현재 시간을 알아본다.

#date

Mon Nov 6 13:36:44 KST 2006

date 는 기본적으로 /bin 폴더 아래 위치한다.

현재 시간이랑 맞지 않는다면 다음 2가지 방법을 통해서 해결할 수 있다.

시스템마다 지원이 되고 안되고의 차이점이 있지만 보통적인 방법으로는

#rdate -s time.bora.net 또는

#rdate -s time.kriss.re.kr

을 하면 자동적으로 변경을 해준다.

하지만 유닉스 계열에서는 이 명령어가 되지 않으므로 다음과 같은 수동적인 방법으로 시스템 시간을 맞출 수 있다.

#date 1342

아래와 같이 하면 2009년 3월 17일 18시 06분 00 초로 변경해준다.

#date -s "2009-03-17 18:06:00"

시간이 13시 42분으로 변경된다.

'I.lib() > I.lib(Unix)' 카테고리의 다른 글

리눅스 charset 확인 및 변경  (1) 2011.06.24
리눅스 사용자 계정 생성  (0) 2011.06.24
rm -rf 복구 방법  (0) 2011.06.03
아파치 & 톰켓 실행 순서 및 확인.  (1) 2011.02.07
Java String charset 바꾸기  (1) 2010.11.11
.
:
Posted by .07274.
2011. 6. 3. 13:54

rm -rf 복구 방법 I.lib()/I.lib(Unix)2011. 6. 3. 13:54

.. .. ..
리눅스에서의 파일 삭제는 신중을 기해야 한다. 왜냐면 삭제된 파일은 복구
할 수 없기 때문이다. 이것이 정석이였습니다. (참고로 ext2, ext3 파일시스템 에서만 가능)

물론 rm 의 소프트링크나 다른 삭제 프로그램으로 대체하는 프로그램들도 있습
니다만 rm 자체의 복구는 없다고 알고 있으신 분들이 대부분 일 겁니다.

해답은

debugfs 라는 명령어 입니다. (man page 참조)

실제 사용예를 들어 설명하겠습니다.

가정1) /home/pds/portsentry.tar.gz 라는 파일이 있음.
가정2) /home 파티션은 hda8 입니다. (df -h 로 확인)
가정3) rm -f /home/pds/portsentry.tar.gz 명령으로 지웠음.
가정4) root 로 작업.

복구 절차.

1. #debugfs /dev/hda8

=> 설명 : hda8 파티션에 대해서 검사를 한다.

2. debugfs:

=> 대기상태를 뜻함. 이곳에서 lsdel 을 입력하고 엔터.
계속...

debugfs: lsdel
99 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
108123 0 100644 239 1/ 1 Thu Jan 3 01:25:33 2002
18417 0 100644 426625 420/ 420 Thu Jan 3 01:26:34 2002
45007 0 100644 343 1/ 1 Thu Jan 3 01:29:59 2002
28691 0 100400 879 1/ 1 Thu Jan 3 01:38:29 2002
18394 0 40755 0 1/ 1 Thu Jan 3 01:58:54 2002
..
.
14356 0 100644 2325 3/ 3 Fri Jan 25 16:13:24 2002
61239 0 100644 43034 44/ 44 Fri Jan 25 16:13:31 2002
debugfs:

위와 같은 상태로 나오고 다시 대기상태로 됩니다. 실제로는 너무 많이 나오더
군요.. (내가 그렇게 많이 지웠었나? '.'a)

이제 이 목록중에서 하나를 선택해서 살려야 합니다. 다행히도 살리고자 하는
파일은 가장 최근에 지운 파일이므로 가장 아래쪽에 있는 것이겠죠.

debugfs: dump <61239> /home/debugfs/portsentry.tar.gz

=> Inode 값을 <> 안에 적어줍니다. 뒤에는 복구할 파일 이름을 적어주시면 됩
니다.
=> 복구할 파일은 다른 디렉토리로 지정해 주시는게 좋습니다. 별 상관은 없지
만...

#cd /home/debugfs
#tar -zxvf portsentry.tar.gz // 정상적으로 압축이 풀리더군요.

=> 아주 훌륭하게 복구가 되었더군요. ^^v

임의로 portsentry.tar.gz 를 지워서 테스트를 한 것입니다.

debugfs: 상태에서 사용할 수 있는 명령어는 help 를 쳐보면 알 수 있습니다.
끝내는 것은 q, quit 입니다.



아래는 debugfs: 에서 사용가능한 명령어들 입니다.
---------------------------------------------------------------------

Available debugfs requests:

show_debugfs_params, params
Show debugfs parameters
open_filesys, open Open a filesystem
close_filesys, close Close the filesystem
feature, features Set/print superblock features
dirty_filesys, dirty Mark the filesystem as dirty
init_filesys Initalize a filesystem (DESTROYS DATA)
show_super_stats, stats Show superblock statistics
ncheck Do inode->name translation
icheck Do block->inode translation
change_root_directory, chroot
Change root directory
change_working_directory, cd
Change working directory
list_directory, ls List directory
show_inode_info, stat Show inode information
link, ln Create directory link
unlink Delete a directory link
mkdir Create a directory
rmdir Remove a directory
rm Remove a file (unlink and kill_file, if
appropriate)
kill_file Deallocate an inode and its blocks
clri Clear an inode's contents
freei Clear an inode's in-use flag
seti Set an inode's in-use flag
testi Test an inode's in-use flag
freeb Clear a block's in-use flag
setb Set a block's in-use flag
testb Test a block's in-use flag
modify_inode, mi Modify an inode by structure
find_free_block, ffb Find free block(s)
find_free_inode, ffi Find free inode(s)
print_working_directory, pwd
Print current working directory
expand_dir, expand Expand directory
mknod Create a special file
list_deleted_inodes, lsdel
List deleted inodes
write Copy a file from your native filesystem
dump_inode, dump Dump an inode out to a file
cat Dump an inode out to stdout
lcd Change the current directory on your native
filesystem
rdump Recursively dump a directory to the native
filesystem
help Display info on command or topic.
list_requests, lr, ? List available commands.
quit, q Leave the subsystem.

from : kldp.org
.
:
Posted by .07274.
.. .. ..


아파치 실행
계정 : root
실행 위치 : /usr/local/web/apache2/bin
실행 명령 : 시작 - apachectl start 종료 - apachectl stop
확인 : ps -ef |grep httpd

톰켓 실행
계정 : ixxm
실행 위치 : /usr/local/web/tomcat5/bin
실행 명령 : 시작 - startup.sh , 종료 - shutdown.sh
확인 : ps -ef |grep catalina

'I.lib() > I.lib(Unix)' 카테고리의 다른 글

unix time setting (유닉스 시간 변경 및 세팅)  (1) 2011.06.21
rm -rf 복구 방법  (0) 2011.06.03
Java String charset 바꾸기  (1) 2010.11.11
VI로 문자열 바꾸기.  (0) 2010.11.04
Crontab 설정  (0) 2010.10.11
.
:
Posted by .07274.
2010. 11. 11. 15:37

Java String charset 바꾸기 I.lib()/I.lib(Unix)2010. 11. 11. 15:37

.. .. ..

/*address = new String(info.getAddress().getBytes("ISO-8859-1"), "UTF-8");
   System.out.println(address.getBytes());
   System.out.println("ISO-8859-1 => UTF-8 : "+new String(address.getBytes("ISO-8859-1"), "UTF-8"));
   System.out.println("ISO-8859-1 => EUC-KR : "+new String(address.getBytes("ISO-8859-1"), "EUC-KR"));
   System.out.println("ISO-8859-1 => ISO-8859-1 : "+new String(address.getBytes("ISO-8859-1"), "ISO-8859-1"));
   System.out.println("ISO-8859-1 => MS949 : "+new String(address.getBytes("ISO-8859-1"), "MS949"));
   System.out.println("UTF-8 => UTF-8 : "+new String(address.getBytes("UTF-8"), "UTF-8"));
   System.out.println("UTF-8 => EUC-KR : "+new String(address.getBytes("UTF-8"), "EUC-KR"));
   System.out.println("UTF-8 => ISO-8859-1 : "+new String(address.getBytes("UTF-8"), "ISO-8859-1"));
   System.out.println("UTF-8 => MS949 : "+new String(address.getBytes("UTF-8"), "MS949"));
   System.out.println("EUC-KR => UTF-8 : "+new String(address.getBytes("EUC-KR"), "UTF-8"));
   System.out.println("EUC-KR => EUC-KR : "+new String(address.getBytes("EUC-KR"), "EUC-KR"));
   System.out.println("EUC-KR => ISO-8859-1 : "+new String(address.getBytes("EUC-KR"), "ISO-8859-1"));
   System.out.println("EUC-KR => MS949 : "+new String(address.getBytes("EUC-KR"), "MS949"));
   System.out.println("MS949 => UTF-8 : "+new String(address.getBytes("MS949"), "UTF-8"));
   System.out.println("MS949 => EUC-KR : "+new String(address.getBytes("MS949"), "EUC-KR"));
   System.out.println("MS949 => ISO-8859-1 : "+new String(address.getBytes("MS949"), "ISO-8859-1"));
   System.out.println("MS949 => MS949 : "+new String(address.getBytes("MS949"), "MS949"));*/

'I.lib() > I.lib(Unix)' 카테고리의 다른 글

rm -rf 복구 방법  (0) 2011.06.03
아파치 & 톰켓 실행 순서 및 확인.  (1) 2011.02.07
VI로 문자열 바꾸기.  (0) 2010.11.04
Crontab 설정  (0) 2010.10.11
REDHAT VERSION (버젼) 정보  (0) 2010.07.30
.
:
Posted by .07274.
2010. 11. 4. 17:41

VI로 문자열 바꾸기. I.lib()/I.lib(Unix)2010. 11. 4. 17:41

.. .. ..
%s/2010\/10\/01/2010\/11\/01/

%s 는 데이터 총 Row
2010\/10\/01 는 2010/10/01 을 의미한다.
2010\/11\/01 는 2010/11/01 을 의미한다.

2010/10/01 을 2010/11/01로 변환한다라는 뜻.

'I.lib() > I.lib(Unix)' 카테고리의 다른 글

아파치 & 톰켓 실행 순서 및 확인.  (1) 2011.02.07
Java String charset 바꾸기  (1) 2010.11.11
Crontab 설정  (0) 2010.10.11
REDHAT VERSION (버젼) 정보  (0) 2010.07.30
^M 문자열이 생기는 이유 & 삭제 방법  (0) 2010.07.16
.
:
Posted by .07274.
2010. 10. 11. 10:17

Crontab 설정 I.lib()/I.lib(Unix)2010. 10. 11. 10:17

.. .. ..

 
crontab 이란?
서버 스스로 정해둔 명령을 일정 기간마다 실행하도록 하는 것입니다.

1. Crontab 실행 및 종료
   실행 : /etc/rc.d/init.d/crond start
   종료 : /etc/rc.d/init.d/crond stop

2. 설정 
크론 설정 : /etc/crontab ( ~]$crontab 해도 됨.)

option
  -e : 설정된 파일을 새롭게 편집
  -d : 등록된 내용을 삭제
  -l  : 현재 등록된 내용 보기

3. 시간 등록 
ex) 01 03 * * * /disk/script/tomcatctl start

 필드 의미  내용
 필드 1 (01)  분  0-59
 필드 2 (03)  시  0-23
 필드 3 (*)  일  0-31
 필드 4 (*)  월  1-12
 필드 5 (*)  요일   0-7 (0 또는 7=일, 1=월, 2=화, ...)
 필드 6 (/disk/script/tomcatctl start)  명령어 실행할 명령어 

연속으로 수행하는 법 : 콤마로 구분

ex 1 00,01,08,13,17,20 * * * /disk/start.sh

00시, 01시, 08시 .. 1분에 start.sh를 수행하게 됨.


사용형식

crontab [ -u 사용자 id] 파일
crontab [-u 사용자 id] { -l | -r | -e}

# crontab -l : 예약된 작업리스트
# crontab -e : 예약된 작업 수정
# crontab -r : 예약된 작업 삭제

cron 실행 확인
# ps -ef | grep crond

cron 시작
# /etc/init.d/cron start{restart | stop}

일반사용자에게 crontab 명령어 사용하도록 설정 허가
/etc/cron.allow 여기에 ID 등록

일반사용자의 crontab 명령어사용을 제한
/etc/cron.deny  에 ID를 등록

등록 내용 설정
"분,시,일,월,요일, 실행명령" 순으로 설정

crontab 파일 형식
------    --------  ---------------------------------------------------
필  드    의  미    범  위
------    --------  ---------------------------------------------------
첫번째    분        0-59
두번째    시        0-23
세번째    일        0-31
네번째    월        1-12
다섯번째  요일      0-7 (0 또는 7=일요일, 1=월, 2=화,...)
여섯번째  명령어    실행할 명령을 한줄로 쓴다.
------    --------  ---------------------------------------------------

- 한 줄당 하나의 명령 (두줄로 나눠서 표시할 수 없음)
- # 으로 시작하는 줄은 실행하지 않는다 (주석)


/etc 에 아래 특정 폴더를 등록해 놓으면 그 폴더안의 실행 파일을 crontab의 설정 시간 마다 실행 
특정폴더: /etc/cron.hourly   /etc/cron.daily   /etc/cron.weekly   /etc/cron.monthly 


$ crontab -e
# /home 디렉토리를 /BACKUP/home 으로 백업해둠
# 30분, 새벽 4시와 낮 12시, 모든 일, 모든 월, 모든 요일 
30 4,12 * * *  /usr/bin/rsync -avxH --delete /home /BACKUP/home > /dev/null 2>&1

 # 파일/디렉토리 퍼미션 설정
 # 40분, 새벽 1시, 매주 일요일
40 1    * * 0  /root/bin/perm_set.sh   > /dev/null 2>&1

 # 20분마다 실행

 */20 * * * * /shell/mrtg

위는 매일 4:30분과 12:30분에 rsync 명령을, 매주 일요일 1:40분에 perm_set.sh를 실행함을 의미한다.


설정 예

시간 설정에서 몇가지 의미있는 것들을 알아보자.

- '*'표시는 해당 필드의 모든 시간을 의미한다.
- 3,5,7 와 같이 콤마(,)로 구분하여 여러 시간대를 지정할 수 있다.
- 2-10와 같이 하이픈(-)으로 시간 범위도 지정할 수 있다.
- 2-10/3와 같이 하이픈(-)으로 시간 범위를 슬래쉬(/)로 시간 간격을 지정할 수 있다.
  (2~10까지 3간격으로. 즉, 3,6,9를 의미함)

=>  > /dev/null  2>&1 이 무슨 뜻입니까?
  지정한 명령어 처리 결과와 발생할지 모르는 에러메시지를 출력하지 않고 모두 버린다는(/dev/null)는
  뜻입니다. 만약 결과와 에러를 파일로 저장하려면 /dev/null 대신 파일명을 적어주면 됩니다.

예)
20 2 * * 6 명령어 => 매주 토요일 새벽 2:20
0 4-6 * * * 명령어 => 매일 오후 4,5,6시
5 */2 * * * 명령어 => 매일 2시간간격으로 5분대에
15 1 1 * * 명령어 => 매월 1일 새벽 1:15
30 0 1 1,7 * 명령어 => 1,7월 1일 새벽 0:30

10 2 * * * /app11/minsang/APP/ldap/run.sh > /app11/minsang/APP/ldap/cron_error.log
55 13 * * * /run.sh > /mail_cron_error.log
0,30 8-19 * * * /sendAdmin.sh > /cron_admin_error.log

'I.lib() > I.lib(Unix)' 카테고리의 다른 글

Java String charset 바꾸기  (1) 2010.11.11
VI로 문자열 바꾸기.  (0) 2010.11.04
REDHAT VERSION (버젼) 정보  (0) 2010.07.30
^M 문자열이 생기는 이유 & 삭제 방법  (0) 2010.07.16
chmod 설정 (사용법)  (0) 2010.07.15
.
:
Posted by .07274.
2010. 7. 30. 14:21

REDHAT VERSION (버젼) 정보 I.lib()/I.lib(Unix)2010. 7. 30. 14:21

.. .. ..

1. 터미널 진입.

2. /etc 폴더로 이동 
    ==>  cd /etc/

3. cat redhat-release 라는 명령어를 친다.
   ==> /etc]# cat redhat-release


CentOS , RedHat 모두 이와 같은 방식으로 버젼정보를 알수있다.

'I.lib() > I.lib(Unix)' 카테고리의 다른 글

VI로 문자열 바꾸기.  (0) 2010.11.04
Crontab 설정  (0) 2010.10.11
^M 문자열이 생기는 이유 & 삭제 방법  (0) 2010.07.16
chmod 설정 (사용법)  (0) 2010.07.15
bash shell prompt setting ( 프롬프트 설정 )  (2) 2010.06.23
.
:
Posted by .07274.
.. .. ..

문 : 서버에 파일을 올려 VI 편집기를 사용해 파일을 열어볼시에 ^M 문자열이 각 행 끝에 붙는다. 이유는 ?

답 : FTP전송 시에 바이너리 모드로 전송하여 그렇습니다. ASCII모드로 전송하면 됩니다.
===> UNIX시스템에서는 다음라인으로 넘어갈 때 뉴라인(0x0a)만 있으면 되지만 PC에서는 캐리지 리턴(0x0d)와 뉴라인(0x0a)가 둘다 있습니다. 
  이와같은 텍스트 형태의 파일을 서버로 올리면서 Binary mode로 전송하면 0x0d와 0x0a가 모두 전송됩니다. 그런데 텍스트 에디터(vi editor)로 보면 0x0d는 특수문자처럼 보이는 겁니다.
문 : ^M을 삭제하는 방법

답 :  1. vi filename으로 읽어 들인다.
       2. :1,$s/^M//g하면 됩니다. 여기서 ^M을 입력하는 방법은 Ctrl+V하고 Ctrl+M하면 됩니다.
            Ctrl+V는 컨트롤문자를 입력하겠다는 의미입니다.
.
:
Posted by .07274.
2010. 7. 15. 11:48

chmod 설정 (사용법) I.lib()/I.lib(Unix)2010. 7. 15. 11:48

.. .. ..

 
사용법: chmod [옵션]... MODE[,MODE]... FILE...
  또는: chmod [옵션]... 8진수-MODE FILE...
  또는: chmod [옵션]... --reference=RFILE FILE...
Change the mode of each FILE to MODE.

  -c, --changes           like verbose but report only when a change is made
      --no-preserve-root  do not treat `/' specially (the default)
      --preserve-root     fail to operate recursively on `/'
  -f, --silent, --quiet   suppress most error messages
  -v, --verbose           output a diagnostic for every file processed
      --reference=RFILE   use RFILE's mode instead of MODE values
  -R, --recursive         change files and directories recursively (하위폴더까지)
      --help     이 도움말을 표시하고 끝냅니다
      --version  버전 정보를 출력하고 끝냅니다


예제 ) 

drwxr-xr--  3 cool  pop  4096  6월 17  2009 test

test 라는 디렉토리가 존재한다. 
현재의 test 라는 디렉토리는 pop 그룹의 cool 유저의 소유에 있는 디렉토리이다. 

앞에 있는 문자를 보면

d : 디렉토리, 
r : 읽기(4), 
w: 쓰기(2), 
x: 실행(1)
rwx(7), r-w(5), r--(4), --x(1)

의 속성을 가지고 있고 세자리씩 구분하여 

rwx : 소유주 권한
r-x : 그룹 권한
r-- : 다른 사용자 권한

으로 나눌수 있다.  
해석하여 본다면 test라는 폴더는 소유주(cool)는 해당 디렉토리에 읽기,쓰기,실행의 권한이 있고
같은 그룹(pop)에 속한 다른 유저는 읽기,실행에 대한 권한이 있습니다. 소유주도 아니고 같은 그룹도
아닌 다른 사용자는 읽기의 권한 밖에 없습니다.

* 같은 그룹(pop)의 사용자(cool2) 가 test폴더 내에 파일을 생성할 경우 
  - 현재 같은 그룹의 cool2 사용자는 test라는 그룹에 쓰기 권한이 없어 파일을 생성할수 없습니다.
  - chmod를 통하여 같은 그룹 사용자도 쓰기가 가능하도록 변경해야 합니다.
    chmod -R 774 test
    drwxrwxr-- 2 cool pop 4096  3월 18 15:34 test
  - 같은그룹사용자도 이제 test폴더에 파일을 생성할수 있습니다.

* 모든사용자가 test폴더를 읽기,쓰기,실행 할경우 
  - 현재 test 폴더의 다른사용자 권한은 읽기 권한 밖에 없습니다. 
  - 다른사용자가 test 폴더에 대하여 읽기,쓰기,실행을 하려면 chmod를 통하여 권한을 변경하여야 합니다.
    chomd -R 777 test
    drwxrwxrwx 2 cool pop 4096  3월 18 15:34 test
  - 이제 다른사용자들도 test폴더에 접근하여 읽기,쓰기,실행을 할수 있는 권한이 생겼습니다.

* 소유주만 해당 디렉토리를 접근 제어하고 싶은경우
  - 현재 test 폴더에 소유주의 읽기,쓰기,실행 권한만을 주고 나머지는 없애버립니다.
    chomd -R 700 test
    drwx------ 2 cool pop 4096  3월 18 15:34 test
  - 이제 소유주(cool)만 test 디렉토리에 대하여 읽기,쓰기,실행이 가능하고 같은 그룹이나 다른 사용자들은 해당 폴더에 엑세스 할수 없습니다.

.
:
Posted by .07274.
.. .. ..

디폴트로 되어 있는 프롬프트를 바꾸고 싶은가? 화려한 컬러를 넣고 싶은가? 그렇다면 당신은 제대로 찾아 왔다.

bash는 프롬프트 유지를 위해 PS1에서 PS4까지 네 가지 환경변수를 갖고 있다. 여기서는 로긴쉘에 적용되는 PS1만 다룬다.

먼저 /etc/profile에서 설정된 기본 PS1 값을 살펴 보자. 어쩌면 당신은 아직도 이 기본값을 사용하고 있을 지도 모른다.

잠시후 당신은 /etc/profile에서 PS1에 대한 언급이 전혀 없음을 발견하고는 분노에 휩싸여 이 사이트를 떠나려고 할 지도 모른다. 잠깐! 파트1에서 얘기했던 내용을 다시 한번 떠올려 보자, /etc/profile의 맨 아래에 보면 /etc/bashrc가 존재할 경우 이것을 source 한다고 말했다. /etc/bashrc에 바로 기본 PS1 값이 들어 있다.

PS1='\h:\w \u\$ '

한 부분씩 설명하겠다. 첫번째 \h는 호스트이름을 보여준다. 그러고 콜론을 찍고 \w는 현재 작업 디렉토리를 보여준다. 그다음 \u는 유저네임을 보여준다. \$는 UID가 영이면 #를 아니면 $을 출력한다. 마지막으로 사용자가 명령어를 입력하는 공간과 분리를 위해 공백이 하나 들어가 있다.

그런데 참고로, 오리지널 bash 배포판에서 PS1의 기본값은 PS1='\s-\v\$ ' 이다.

\h, \w 등등 이렇게 하나의 백슬래쉬와 하나의 문자로 구성된 문자열이 프롬프트에 어떠한 정보를 넣을 것인지를 결정한다. 이 문자열들에 대한 전체 리스트는 다음과 같이 얻을 수 있다.

  1. man bash
  2. 슬래쉬를 하나 치고 PROMPTING 라고 입력한 후, 리턴을 친다
  3. 슬래쉬를 하나 치고 리턴을 친다

PROMPTING은 반드시 대문자로 해야 한다. 즉, bash 메뉴얼에서 두번째 나타나는 PROMPTING 이라는 문자열을 찾는다.

그럼 이제 색깔 넣는 연습을 해 보자. 안시 컬러는 \033[으로 시작되고 컬러코드가 이어 나오고 m으로 끝난다. bash에서는 \033 대신에 \e를 사용할 수 있다.

다음은 컬러코드 리스트이다.

0 = 기본값 1 = 볼드체 4 = 밑줄 5 = 점멸 7 = 역상
31 = 빨강 32 = 초록 33 = 오렌지 34 = 파랑 35 = 자주 36 = 청록 37 = 회색
40 = 검정 배경
41 = 빨강 배경
42 = 초록 배경
43 = 오렌지 배경
44 = 파랑 배경
45 = 자주 배경
46 = 청록 배경
47 = 회색 배경
90 = 진회 색
91 = 연빨강
92 = 연두 93 = 노랑 94 = 연한 파랑 95 = 연한 자주 96 = 하늘색
100 = 진회색 배경
101 = 연한 빨강 배경
102 = 연두 배경
103 = 노랑 배경
104 = 연한 파랑 배경
105 = 연한 자주 배경
106 = 하늘색 배경

이제 파트1에서 소개했던 예제 .bash_profile에 나오는 PS1의 값을 이해할 수 있다.

PS1="\e[33m[\w]\e[0m\n\!: \u$ "

오렌지 색깔로 현재 작업디렉토리를 표시한 후, 색깔을 까만색으로 다시 주고 (이것은 내 터미널의 기본바탕 색깔이 까만색이기 때문이다) 다음 줄로 가서, 유저네임을 표시하고 $을 붙여 준 후, 공백을 하나 표시한다.

고급예제 하나 살짝 소개한다. 네트웍 관리자라면 현재 얼마나 많은 사용자들이 로긴했는지 모니터링하고 싶어한다. 간단하게 프롬프트에 이 정보를 집어 넣을 수 있다.

PS1='$(who | wc -l) \w\$ '

$(..)은 다른 쉘의 백틱(물결무늬 아래에 있는 문자)이 bash에서 개선된 형태이다. $(..)에 대해 본격적으로 다루는 것은 이 기사의 범위를 벗어 난다.

2.2 히스토리 전방/후방 검색 키 바인딩 변경하기

히스토리를 앞뒤로 왔다 갔다 하는 키는 익히 아는 대로 상향키와 하향키로 되어 있다. 히스토리 전방/후방 검색 키는 너무 복잡해서 나 자신도 잊어 버렸다. 이렇게 복잡한 키를 상향키와 하향키로 변경해 보자. 소개했던 예제 .bash_profile에 나오는 내용이다.

bind '"\M-[A":history-search-backward'
bind '"\M-[B":history-search-forward'

이 키 바인딩은 기존의 상향키와 하향키로 히스토리를 누비는 기능을 해치지 않는다. 이것은 글자를 몇 개 입력한 후, 상향키와 하향키를 움직였을 때 동작한다.

즉, 히스토리 상에 cd 명령을 몇 개 내리고 다른 명령도 몇 개 내린 후라고 가정해 보자. 이때 프롬프트에서 cd까지만 입력하고 상향키를 눌러 보면 cd로 시작되는 히스토리의 내용만 보여 준다


.
:
Posted by .07274.