명령어1

Linux 2008. 7. 25. 15:31
pwd
현제의 디렉토리를 알려준다.현재 작업하고 있는 디렉토리가 어디인지 알수 없을 때
이용하는 명령어.

기본적인 명령어 사용
list,ls:디렉토리와 파일의 리스트를 보여준다.
ls -l:자세히 보여주기
ls -a:사그리 다보여주기
ls -al:a옵션은 hidden속성의 파일을 표시해주고 1옵션은 파일의 종류,
사용권한등 자세한 정보를 보여준다.
ls -F:일반파일 디렉토리 보여주기
cd명령어
cd~:그전 사용자로 이동
cd -:바로전의 디렉토리로 이동
cd~(사용자명)
cd ../..:상위디렉토리로 이동
cd ../local:상위로 가서 local로 이동한다.
cd:홈디렉토리로 이동
cd~apple/test :apple사용자홈에서 test로 이동
mkdir
새로운 디렉토리를 만든다.
ex)mkdir html
touch
파일 만드는 명령어
cat
파일만들고 파일내용편집 특정함수를 넣을수 있음
rm
파일을 삭제한다.
rm -rf
파일 디렉토리 지울때 사용
mv
명령어 예) mv abc def : abc파일을def로 바꿈
디렉토리 바꾸는 명령어
예)mv testdir ../test:이름을test로 바꿔서testdir을 몽땅옴김

< :표준입력
1>:표준출력
>:표준에러

디렉토리 권한
ls -l test.txt
-rw-r--r-- sw9721107 1997
-rw-:read,user
r--:writing,groub
r--:실행.other

허가를바꾸는 명령어
chmode(파일명,디렉토리명)

editer
vi기능
/:찾기
/n:다음찾기

커서이동
왼쪽:h
위:k
오른쪽:o
아래:j

d: 지우는 명령어
dw:한단어씩지움
3dw:3단어씩지움
d$:뒤쪽으로지움(오른쪽)
d^:앞쪽으로 지움(왼쪽)
dgg:현제커서 위치에서 지움
dd:한줄지우기
3dd:3줄지우기
y:복사
yy:한줄복사
yw:한위드 복사
p:붙이다
c:바꾸다
x(소문자):커서 문자만 지움
X(대문자):빽스페이스
u:복구명령어
esc:command mode
I: insert moad
b : 단어의 시작위치로 이동
e : 단어의 끝 부분으로 이동
0 : 행의 시작부분으로 이동
q : 끝내기
q! : 저장 않고 끝내기

4월26일
표준출력:>
표준입력:<
표준에러:2>
ls 2>aa :에러가 나면 aa로 보내겠다.
ls bb :에러가 나지 않으면aa 에러가나면 bb로 보내겠다.
ls >aa 2&1 :에러도 aa에 다넣겠다.
ls 2>aa 1>&2 :표준출력,표준에러와 같이쓰겠다.
ls >aa 2>del/null :에러 발생시 휴지통에 버리겠다.
ls >/dev/null/2&1 :출력에러를 휴지통에 버리겠다.

#pipeline-->|(기호)
ls -al |
#grep :대표적인 필터 명령어.
행단위로 검색
표준입력 date를 받을수있음.
키보드에서 date를 받을수있음.
ls -al | grep :모든 파일을 행으로 찾겠다.
ls -al | grep ^d :맨 앞이 d로 시작하는 디렉토리를 보여줌.
who | grep sw9721107 :who 에들어돈 file을 찾는다.(출력)

#wc :덩어리 단위로 글자수 출력
예)i love unix
1 3 12
줄 덩어리 글자수
#mesg n:메세지 오는걸 막음.

#awk :특정한 필터를 뽑음.
예)$awk 'unix/{print$0}' test.txt
unix
i love unix
:test.txt file 에서 unix가 들어건 패턴을 출력.
$awk -F: '{print$2{' sort.txt
-F:필터의 구분을 :로 하여라라는 뜻
print {$1 $7} :1번째 7번째를 출력.

# shell programmming
(bash)
입력:read
$read test
hello
출력:echo
-n:맨 앞으로
$echo $test
출력>hello
hell를 test에 입력해서 echo 기능으로 test의 hello를 불러에서 출력한다. 변수를 읽는다

# ln명령어
symbolic -s
hard -inrode번호로 공유
-n:맨앞으로



5월2일
mkdir testdir
ln -s testdir sdir
sdir:가상디렉토리

$ps=process=자기프로세서를 보여줌
예)$ps
PID TIME CHD
7860 pts/20 00:00:00 bash
10893 pts/20 00:00:00 ps
$ps aux:현재수행하고 있는 모든 프로세서를 다보여줌
touch a:a라는 파일을 만듬
vi a :a라는 파일에서 vi작업함
#!/bin/sh
while true : do
echo hello
sleep 1
done
./a :작업한걸 실행 실행하면 hello가 쭉나옴...
ctrl+z:잠시중지
jobs :작업내용을 보여줌
forground:키보드상에 신호를 보낼수있음
background(=&):키보드상에 신호를 보낼수없음
la & :독단적으로 수행,다른 작업실행 못함
kill %1:jobs로 나온 작업내용중1번을 지움
find / *.html > temp 2> /dev /null &
:html로 끝나는 확장자를 모두 찾아서temp라는 곳을로 보내고
에러시에는 휴지통으로 보내라는 뜻

# kill 내용
kill -l:kill의 모든 내용을 보여줌 1~63번까지 있음
kill의 중요한 것들
1)sighup(-hup) :죽였다가 살리는 기능,환경화면을 바꾸는 기능
2)sigint(-int) :ctrl+c,키보드상에 입력가능
3)sigquit(-quit) :ctul+/,키보드상에 입력가능
9)sigkill(-kill) :작업내용을 못지우는것들을 강제로지움
15)sigterm(-term):정상종료

예)kill -1 pid(프로세서 아이디):프로세서를 죽였다살림

5월10일
#! bin/sh
trap 'echo 메롱'2
while true : do
echo hello
sleep
done
실행)./hello.sh
hello
.
.
hello
cltl+c--> 메롱
cltl+z--> 멈춤

expr: 산술식이라는 것을 알려줌
a=1
a=' expr $a + 1'
echo $a

1에서10까지 더한값이 나오는 것
#! /bin/sh
sum=0
a=1
while [$a le 10 ];do
sum='expr $sum + $a'
a='expr $ + 1'
done
echo $ sum

< :입력리다이렉션
> :출력리다이렉션
>>:파일출력추가
cat >test.txt
love
echo like >>test
cat test.txt이걸로 확인하면....
love
like
love뒤에 like가 나옴
<< :here document
cat << e >a.txt
>i love unix
>i love unix
>e
e를 치는 순간 a.txt에 i love unix가 들어감

mail sw9721107 << e
>i love unix
>do you love me?
>e
:9721107이라는 친구에게 i love unix
do you love me?
라고 멜을보냄.
멜 삭제: d1: 1번멜 삭제
d2: 2번멜 삭제
d*: 모든멜 삭제
man.test: test명령어 도움말
help test

if test if abc.txt ; then touch abc.txt :abc라는 파일이 있음true라고 출력
> echo true 없음 false라고 출력함
>else
>echo false
>fi

for i * ; do
>echo $i
>done
:모든걸 가져와서 출력하라
현제 디렉토ㅓ리 파일만 출력

#!/bin/sh
for i in *.hrml
echo $i
done
./hello
insdex.html
:html로 끝나는 모든 파일을 나타냄
5월17,24일
@if 문이용두개의 문자열을 받아 같으면 SAME 아니면 NOT SAME로 나타내는 문
#!/bin/sh
read str1
read str2
if test $str | = $str2; then
echo same
else
echo not same
fi
출력)
./a ./a
a a
a b
same not same

foo=test.c
bar=`vasename $foo.c`
echo $bar

test.c
bash-2.04

aa=hello
echo $aa
:hello
echo ${aa}world
:helloworld

@for문을 이용해 1~10까지의 합을 구하는 문
sum
for i in 1 2 3 4 5 6 7 8 9 10; do
sum=`expr $sum+$i echo $i
done
echo $sum
@*.c를 .cpp로 확장명을 바꾸는 문
#!/bin/sh
for i in *.c; do
foo=`basename $i.c`
mv $i ${foo}.cpp
done

foo=test.cpp
echo ${foo%.cpp} :test %앞의것을 자름
echo ${foo#test} :cpp #뒤의것을 자름

용어
tar :여러개의 파일을 하나 또는 반대 디렉토리 안에서 모음
tar cvf test.tar :test라는 디렉토리에 파일을 하나로 모음
tar xcf test.tar :파일을 풀어버림
gzip test.tar :압축하는 기능
gunzip test.tar.gz:압축을 품
tar xvfz teest.tar.gz:압축도 풀고 tar이른 파일도 품
gzip dc test.tar.gzltar xvf _:안에 있는 파일까지 압축 한방에 압축

5월31일
접속한 사람 확인하는 문
#!/bin/sh
until who | grep mntlee >/dev/null ; do
sleep 2
done
아규먼트가 한줄에 한개씩 출력하는 문
#!/bin/sh
set date`
while[s# -ne 0 ] ; do
echo $1
shift
done
실행)Fri
Jun
1
18:55:21
EDT
2001

gerp -l:파일명
-w:단어단위
-v:포함되지 않는것


who|grep mntlee
if who|grep mntlle>/dev/null ; then
echo yes
else
echo no
fi
실행)yes
if who|grep mntlee ; then
echo yes
else
echo no
fi
실행)mntlee `pts/15 may 3/09:53
yes



#export 명령어#
1.export foo=love
2.foo=love
export foo

foo=love(enter)
[8] exit126 ./a mntlee
echo $foo(enter)
love
bash(enter)자식쉘생성
echo $foo(enter)
exit(enter)자신의 쉘로 돌아옴
exit

mv.bash-profile .bash-pro
vi .vash-profile
#!/bin/sh
echo hello

echo $PS(enter)=for ; do
[
echo $PS2(enter)
>

연습문제
track.sed
/^[0-9].*/d
/^---/d
s/^/logout/


track.cleanup
:뒤에 오는 파일를 비우는 스크립트
echo stop tracking
:멈추는거....
rm -f .track.old.$1 .t문자를 변수 선언
;;
-n*)
loopCount=`expr substr $arg 3 10` :loopCount라는 변수에 저장
;;
*)
user=$arg :user에 arg를 대입
;;
esac :case문 종료
done
if [ ! "$user" ] :user가 없으면
then
error=1 :error의 값은 1로 출력
fi :if문 종료
if [ $error -eq 1 ] :if문 시작 error -ep 1
then
cat << ENDOFERROR :ENDOFERROR로 출력
usage : track [-n#] [-t#] userId :메세지 출력
ENDOFERROR
exit 1 :비정상종료
fi :if문 종료
trap 'track.cleanup $$; exit $exitCode' 0 :
trap ' exitCode=1 ; exit' 2 3 :
> .track.old.$$ :old파일생성
count=0
while [ $count -lt $loopCount ] :count가 $loopCount보다 작은동안에
do
who | grep $user | sort > .track.new.$$ :who를 user에서 추축해서 sort가있음 track.new생성
diff .track.new.$$ .track.old.$$ | :new파일과 old파일을 비교
sed -f track.sed > .track.report.$$ :sed -f track.sed가있음 report파일생성
if [ -s .track.report.$$ ] :track.report라는 파일에 한개의 문자라도 있으면
then
echo track report for ${user}: :user라는 폴더에track,report가 있음
cat .track.report.$$ :track,report출력
fi :if문종료
mv .track.new.$$ .track.old.$$ :mv는 파일 바꾸기track.new--->track.old로 바꿈
sleep $pause :sleep는 멈춤
count=`expr $count + 1` :값이 1씩 증가한다.
done :do문 종료
exitCode=0 :모든프로그램종료 빠져나옴

6/7일
#!/bin/sh
foo=like
./test.sh--->자식쉘생성,자식쉘은 실행하면 끝남
echo $foo
. test.sh--->현재쉘
echo $foo

KEY멥핑
#include
main(){
printf("i can");
printf("do it");
}

커서가...printf("i can.......) f밑에 있을때 멘앞을로 보내서/넣는 방법
:I를 친다음/*치고 esc치고 A*/치고 esc를 치면 끝

map ctrl+v:저장할기능들을 입력
map (ctrl+v F3) I/* (ctrl+v) A*/(ctrl+v esc)
$home/.v

cut 필터명령어
cut:필드의 일부분을 잘라냄
cut -f love unix(enter)
i love unix

apple(tab)pear(tab)grape(tab)bery(tab)bapa(tab)orange-----> cat.txt
cat -f2 cut.txt
실행)apple pear grape
bery bapa orange
cut -c7-10 cut.txt
실행)pear
bapa
cut -c-7 cut.txt
실행)apple p
bery b

vi 작업
%/s/ctrl+v tab/ /g
tab를 스페이스바로 바꾸기
ls -lt > bb$$ $$:임시 파일만들때 사용

보안
which passwd
--->/usr/bin/passwd
ls -l /usr/bin/passwd
--->-r-s--x--x 1 root root 13536 jul 12 2000 /usr/bin/passwd
chmod 6711 fo
ls -l fo
--->-rws--s--x 1 sw9721107 1997
chmod 1777 tdir
ls -ld tdir
--->drwxrwxrwt 2 sw9721107 1997

setuid 2
:권하은 -r-s--x--x setid가 s를 뜻함
setgid 4
:파일을 실행하는 동안은 그룹의 권한을 가지게 되는것
sticky bit 1
:이권한을 주면 주인아니면 지울수 없음

출처 : Tong - nae tong님의 서버운영체제통

'Linux' 카테고리의 다른 글

tar  (0) 2008.07.25
명령어2  (0) 2008.07.25
gcc 사용  (0) 2008.07.25
gcc install  (0) 2008.07.25
chown  (0) 2008.07.25
Posted by 으랏차
,