linux shell

Edit

shell script에서 #!를 뭐라고 부를까?

쉘 안에서 현재 경로

#!/bin/sh
BASEDIR=`dirname $0`
echo $BASEDIR
cd $BASEDIR

언제나 절대경로로 하려면

$(cd dirname $0 && pwd)

참조

CD: http://www.ibm.com/developerworks/kr/aix/library/au-directorytree/index.html

파일명

find . -type f -name "*Controller.java" -printf "%f\n" | sort | uniq | awk '{print "- [ ] " $1}'

find / -name "sysinfo.html"

grep "sysinfo.html" *|awk '{print $1}'

내용

# 찾기
find /. -name "*" | xargs grep -i "benelog"

find /. -name "*" -print -exec grep "benelog" {} \;

find /. -name "*" -print | wc -l

# sub directory안의 파일 내용 중에 문자열 대체하기
find ./ -type f -exec sed -i -e 's/assets-cdn.github.com/github.githubassets.com/g' {} \;

용량과 업로드일자

find ./ -mtime -30 -size +1024k -ls find /. -name "StringCleaner.java" | xargs du -b

날짜

ls

http://www.cyberciti.biz/open-source/command-line-hacks/linux-ls-commands-examples/

열려있는 파일 찾기

Command-line Tools can be 235x Faster than your Hadoop Cluster

사이즈 순 정렬

ls -al 의 결과 중 사이즈는 5번째 컬럼입니다.

5번째 컬럼을 작은 것 부터 큰 숫자 순서로(오름차순) 정렬하시려면

ls -alR | sort -n +4

하시면 됩니다.

sort -n 에서 -n 옵션은 number 를 의미합니다.

+4 는 컬럼을 지정하는 것인데, 공백을 기준으로 가장 왼쪽에 있는 컬럼이 0번 컬럼, 그 다음이 1번, 그 다음이 2번 순서가 됩니다.

사이즈는 5번째에 나오기 때문에 +4 가 됩니다.

예)

-rw-r--r--   1 opensrc    homepy         530 May 23 12:48 walk.html
-rw-r--r--   1 opensrc    homepy        2388 May 23 12:48 main3.html
-rw-r--r--   1 opensrc    homepy       17108 May 23 12:48 jacobian.txt
 0         1     2          3            4     5   6   7      8

오름차순 정렬이 기본이고,

ls -al | sort -rn +4

하시면 거꾸로 (내림차순)으로 정렬이 됩니다.

파일명 일괄 변경

_를 -로

for i in *_*;do mv $i ${i//"_"/"-"};done

Unix

id        # 지금 ID확인
df        # 남은용량
df -f
bdf
du -sk
who
whoami

보안정책상 root는 telnet으로 접속이 안 된다.

su -
useradd -m benelog
su benelog
su -
passwd
whoami
show parameters.instance
ps -ef | grep xxx
finger
rusers
systat
port
rup
rstat

유닉스 명령어 정리 페이지

팁 모음

ll
colrm

cron

/etc/cron.allow : 허용할 사용자 ID 목록
/etc/cron.deny : 거부할 사용자 ID 목록
/var/spool/cron/root
service crond restart

Rsync

Shell script

삭제

find . -name "CVS" -exec rm -rf {} \;

inode

Index Node

유닉스의 파일에 대한 정보를 기록. 18 byte의 고정된 구조체

서비스

/etc/inetd.conf

Unix shell script

참고자료

실행

bash scriptName
sh scriptName
./scriptName

완료

echo $?

계산

sum='expr 100+200'
echo $sum

파라미터

조건문

if  ["$1"="start"]; then

else

fi

반복문

for 1 in 1 2 3
do
    echo $i
done

while [$n -lt 3];
do

done

AWK

awk -v : 변수를 정의할 것임을 알려줌

Cut

Symbolic & hard link

symbolic link와 hard link의 차이

hard link

사용법 : ln 원본파일 링크걸파일 (ex:ln file1 link1)

특징 :

적용예 : / 밑에 young이란 디렉토리가 존재한다고 가정하자

pwd가 /인 상태에서 inode값까지 조회하는 "i"옵션으로 ls해보았다.

#ls -il
1077 drwxr-xr-x 어쩌구저쩌구 young
#cd young
#ls -ail
1077 drwxr-xr-x 어쩌구저쩌구 ./

young이란 dir접근에 대해 /에서는 young이란 이름으로도, ./으로도 쓰는 것이다.

inode값이 같으므로 이는 하드링크의 적용예이다.

symbolic link

사용법 : ln -s 원본파일 링크걸파일(ex:ln -s file1 link2)

특징 :

적용예 : # usr/dt/appconfig/SUNWns/netscape가 netscape 원본 실행파일이다.

매번 netscape를 띄울때마다 다 처넣을 수 없으므로

# ln -s netln usr/dt/appconfig/SUNWns/netscape

로 링크를 걸어주면 netlin만 실행시켜도 넷스케이프 창이 뜰 것이다.

또한 dev에 논리적 디스크이름이 실제 물리적 디스크슬라이스에 대해 링크로도 활용한다.

Unix 사용자 추가

[과제]

useradd 명령을 사용하여 시스템에 student03 사용자를 생성하세요.

(조건)

명령어:

useradd -u 3003 -g 100 -m -d /home/student03 -s /usr/bin/ksh -c TEST_USER student03

Option 설명

위의 사용된 option 외의 그외의 옵션은 다음과 같은 것이 있다

tar

[과제]

tar 명령을 사용하여 테이프(/dev/rmt/0)에 백업 받은 내용을 현재 디렉토리에 푸세요.

(조건)

명령어

tar -xvf /dev/rmt/0

사용옵션설명

그 외의 옵션에는 다음과 같은 것이 있다

tar 명령어 정리페이지

gzip -d file_name.tar.gz

gz 풀기

tar xzvf