오늘 Find 명령어를 평소와 다르게 사용하게 되었다.


매번 찾는거야


find / -name '*.h'


찾는다 루트에서 .h 끝나는 파일을


이였지만


오늘은 Event라는 단어가 들어간 파일을 찾아야 했다.


find / -name '*.h' | xargs egrep 'Event'


Event가 들어간 .h 파일을 찾는다. 아주 잘나온다.



/는 루트부터고 . 는 지금 폴더 부터이다. 

'QA > QA 활동' 카테고리의 다른 글

Daily note  (0) 2016.09.28
윈도우즈 GPT Convert MBR  (0) 2016.07.05
Back ground 쉘  (0) 2016.06.21
Find 현재 디렉토리 찾기  (0) 2016.06.17
Freebsd 10.x Ports 설정  (0) 2016.06.15

공백이 있는 파일명을 처리하기 위한 상황이 생겼다.


Program Files 윈도우에선 이렇게 표시되지만


유닉스에선 그렇지 않다.

Program\ Files 로 표시가 된다. 


그렇기에 사용방법은 같을 것으로 보여


_DIR_="/Program\Files/"


을 사용했지만 되지 않는다.... Program 과 Files를 따로 보게 된다.


여러번 삽질후에 찾은 결론 

#!bin/sh


_PROGRAM_DIR_="/Program Files/"


사용시에


ls $_PROGRAM_DIR_이 아닌

ls "$_PROGRAM_DIR_" 로 호출시에 따옴표로 묶어주면 된다. ㄷㄷ



'GNU > bashShell' 카테고리의 다른 글

expect 를 이용한 scp 자동 스크립트 작성 - 2  (0) 2016.06.28
expect 를 이용한 scp 자동 스크립트 작성  (0) 2016.06.23
UNIX set 명령어  (0) 2016.06.15
UNIX Shell 조건문  (0) 2016.06.15
UNIX Shell의 기본  (0) 2016.06.14

까먹지 말자 


현재 디렉토리에서만 P로 시작하는 폴더 명을 찾고 싶을떄 -maxdepth 를 사용한다.


find . -maxdepth 1 -name 'P*' -type d






find . -name '*.cpp' -exec egrep -H get_rank {} \;


내 홈 디렉토리에서, 2단계 까지 들어간 하위 경로에서, result_ 로 시작하고 txt 로 끝나는 모든 파일을 찾아서 지우고 싶으면 다음과 같이 한다. 

find ~ -maxdepth 2 -name 'result_*.txt' -exec rm {} \;

'QA > QA 활동' 카테고리의 다른 글

Daily note  (0) 2016.09.28
윈도우즈 GPT Convert MBR  (0) 2016.07.05
Back ground 쉘  (0) 2016.06.21
Find 명령어로 원하는 파일이 아닌 단어가 들어간 파일 찾기  (0) 2016.06.20
Freebsd 10.x Ports 설정  (0) 2016.06.15

유닉스의 set명령어를 입력하면


현재 쉘에서 사용되고 있는 변수들의 리스트를 확인할 수 있다.


예제(set.sh)


#! /bin/sh

First_temp="FirstString"

Second_temp="SecondString"

Third_temp="ThirdString"

set


결과 값


BLOCKSIZE=K

EDITOR=vi

First_temp=FirstString

GROUP=wheel

HOME=/root

HOST=user-user

HOSTTYPE=FreeBSD

IFS=' 

'

LD_LIBRARY_PATH=/system/lib

LOGNAME=root

MACHTYPE=i386

MAIL=/var/mail/root

OPTIND=1

OSTYPE=FreeBSD

PAGER=more

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin

PPID=87112

PS1='# '

PS2='> '

PS4='+ '

PWD=/home/user/Desktop/test

REMOTEHOST=

SHELL=/bin/csh

SHLVL=1

SUDO_COMMAND=/bin/csh

SUDO_GID=0

SUDO_UID=1001

SUDO_USER=user

Second_temp=SecondString

TERM=vt100

Third_temp=ThirdString

USER=root

USERNAME=root

VENDOR=intel

C나 C++  혹은 VB(Visual Basic)을 사용하였던 사람들에게는 if만큼 쉬운 문장이 아닐수 없다.


if(조건) 

참일시액션

else

아닐시 액션



다중 조건 일경우


if(조건)

참일시 액션

else if(첫번째 if가 참이 아닐시 두번째 조건 확인)

참일시 액션

else

위에 두 if문이 참이 아닐시 액션


으로 이루어지며 매우 간단하며 하드 코딩의 시초가 된다. 모든것을 조건문으로 해결할수 있으며 


디버깅 방식 중 하나로 분류 되기도 한다. 


Shell을 다시 시작하자

맨 첫줄에 #!/bin/sh


변수


변수를 적을때 그냥 변수명만 적으면 된다. (자바스크립트에서는 var라고도 명시하였지만 그럴 필요가 없다.)

NULL로초기화 하고 다음에 값을 할당시에는


Temp= 로 설정 한다.   값할당에는 = 사용하게 되며 이 사이에 공백이 있으면 안된다. 


temp=TEMP        O

temp = TEMP      X

temp="TEMP A"   O


변수명과 =의 사이에는 절대 떨어져선 안된다. 


변수의 내용을 출력하기 위해선 echo 를 이용하며 $를 사용한다.


기본 터미널에서 echo $SHELL 을 입력시 SHELL변수를 불러서 현재 쉘을 확인할수 있듯이


echo $temp 를 할시에는 TEMP 가 출력됨을 확인 할수 있다. 


기본 예제 4 (Variable.sh)


#!/bin/sh


txtList=*.txt


echo $txtList


결과 a.txt b.txt

//같은 폴더 내에 a.txt b.txt파일이 있는 상태에서 



재 할당 도 가능 하다

#!/bin/sh

Process="aux"

Process="Riven"

echo ps-$Process   -> 결과값 ps-Riven 


재할당이 가능


재할당이 불가능하게 하기 위해선 상수로 선언할수 있는데 readonly 라는 키워드를 쓴다. (대문자 Readonly는 안된다.)


#!/bin/sh

Process="aux"

readonly Process

Process="Riven"

echo ps-$Process  -> 결과값  Process : is read only 라는 에러가 나타난다.



#!/bin/sh

Process="aux"

unset Process

echo ps-$Process   -> 결과값 ps- 


unset은 변수를 제거한다. Process= 상태로 만들어 버린다.



C언어에서 scanf

C++  cin>> 

java에서 System.in  Scanner등있고 쉘에선


read라는 키워드를 사용 한다.


기본 예제 4 (read.sh)



#!/bin/sh


echo "First ps Option "

read option1


echo "second input ps"

read option2 


ps $option1


echo "Second Input ps "


sleep 2


ps $option2 


결과는 첫번째 입력은 그냥  엔터 2번째 입력은 -aux로 입력했을시 두개의 결과를 첫번째 ps 를 보여주고 2초뒤에 ps -aux 를 보여준다.




+ Recent posts