6. Basic Shell Commands.pdf



7. Working with Files.pdf


출처 : www.javaexpert.co.kr



6장

find /usr -name umount   : umount라는 것을 usr폴더에서 찾아라.

whereis mount : whereis 는 man이라고하는 page 내에서 mount를 찾는다(which는 패키지형태로 찾는방식)

locate umount : 하드내에서 umount 를 찾는다.

man 8 umount : man의 8번째 섹션에서 umount를 찾겠다.(man은 워낙 많은 정보를 가지고있어 섹션별로 찾을 수밖에 없다.)

몇번째 섹션인지는 apropos mount로 내가 찾으려고하는 게 몇번째 섹션인지 한번 보고 찾는다. ()안에가 섹션 넘버.

ls --help | more  : ls --help는 정보가 너무 많아서 보기 불편할 때 쓰면 좋음. 한 화면에 보여줄 정보를 표시하고 엔터면 한줄, 스페이스는 화면 단위로 다음을 보여줌.


온라인에서 명령어 검색 하는 방법 : linux.about.com 에서 명령어를 검색하면 상세히 정보를 알 수 있다. 

리눅스에서 info의 기능과 같다. ex)info ls


man –k crontab : 에서 -k는 apropos의 기능과 비슷하다. crontab 단어가 포함된 것을 찾는듯..?

man -f crontab : 에서 -f는 waitis 기능과 비슷. crontab만 찾는듯..?


sudo shutdown -w 에서 -w는 종료기록을 기록하지 않는다.


date --help를 통해   date '+%A %B %d %G' 에서   %A가 뭔지 알 수 있고, 원하는데로 바꿀 수 있음.



7장

파일 유형을 파악하기 위해 ls -l 명령어를 통해 알 수 있다.

file doc-base/install-docs.html 나 file test.txt 이렇게 file 명령어로 파일의 타입을 알 수 있다.

touch /tmp/newfile.txt 엔터

> /tmp/newfile2.txt

-위 두줄은 >를 이용하여 동일라인으로 생각하게 하는 것이라 결과적으로 두개의 파일을 만들어줌.


ls 는 파일인지 디렉토리인지 파악하는 역할을 하고 , file은 어떤 종류의 파일인지 알아내기 위해 사용.

ls -R : 디렉토리 밑에 디렉토리를 확인하는..

ls -t : 시간기준 sorting

ls -tl : 시간기준으로 자세한 정보를 알아내기.

ls -rtl : 시간 기준으로 자세한정보를 역으로 정렬(내림차순->오름차순)


cat -b test.txt : test.txt를 출력하는데 앞에 라인 번호를 준다(비어있는 라인은 번호에서 제외)

cat -n test.txt : test.txt를 출력하는데 앞에 라인 번호를 준다(비어있는 라인도 번호에서 포함)


cat /etc/services | more 의 방법으로 정보를 편하게 볼 수 있지만 more /etc/services 를 사용하면 현재 보고 있는 화면이 전체의 몇퍼센트를 보고 있는 것인지 볼 수 있음

more -d +10 /etc/services : more -d /etc/services는 기본 11줄을 보여줌. -d +1은 기본과 같음. -d +3은 13개를 보여줌. -d +10은 20개를 보여줌. 이런식. -d는 계속 보겠는지 그만볼 건지 문장을 계속해서보여준다.

more -5 /etc/services : 한번에 5줄씩 보여주는. 스페이스바를 누르면 5줄씩 내려감.


mkdir : make directory. 

mkdir /tmp/new : tmp가 없으면 new폴더가 만들어지지 않음.

mkdir -p /tmp/a/b/c/new : 폴더가 현재 없더라도 모두 만들어주기 위해 -p 를 사용한다.

mkdir -m 700 /tmp/new : 소유주에게만 완전한 권한을 줌.   

이것은rwxrwxrwx 이렇게하면 모든사람에게 권한.

         421421421

          7   7   7

r은 쓰기, w는 읽기, x는 실행의 권한임.

721이면 나는 모든권한, 그룹에대한 권한은 읽기만, 나머지에게는 실행만 권한을 준것임.

권한을 보려면 ls -l을 통해 확인 가능.


rmdir은 안에 아무 파일도 없을 때 삭제가 가능하다.  new3의 폴더가 비었으면 rmdir new3로 삭제가능하다.

a/b/c 폴더가 있으면 삭제를 위해 rmdir -p a/b/c 로 모두 삭제가 가능하다.


rm -i : 지울 때 물어보고 지우고

rm -f : 강제로 지우고

rm -r :디렉토리로 지울 때 사용.

rm -rf : 강제로 디렉토리 삭제.


mv 파일이름 디렉토리이름 : 이동

mv 파일이름1 파일이름2 : 이름변경

mv 디렉토리이름1 디렉토리이름2 : 디렉토리이름1을 2 안으로 넣어줌.

두번째에 쓰는 이름이 없다면 폴더 내에 없다면, 이름을 바꿔줌.

mv sample2 $HOME : 홈디렉토리로 sample2 파일을 이동시켜줌.

mv -i sample1 sample2 : (기존에 sample2 파일이 있음) 그러면 sample1을 sample2로 덮어 쓰는 작업중에 -i가 있어서 덮어쓸 것이냐고 한번 물어보게함.


cp newfile.txt $HOME : newfile.txt 를 $HOME에 복사함.

cp -r a $HOME : a라는 폴더를 $HOME으로 복사함. (디렉토리를 복사할 때는 -r을 써주어 a폴더안의 모든 내용을 복사해줌) 


ls -l을 통해 권한 확인 후 newfile.txt가 664의 권한을 가지고있는 것을 볼 수 있다.

chmod 775 newfile2.txt : newfile2.txt에 권한을 775로 변경한다. - 그러면 실행의 권한까지 생겼기 때문에 초록파일로 변경된 것을 볼 수있다.

rwxrwxrwx

 u   g    o  세개 모두는 a임.

chmod a+x newfile3.txt : newfile3.txt의 각각 모두에게 실행권한을 줌. 

chmod o-x newfile3.txt : other에게 x에 권한을 뺌. 777이었다면 776으로 바뀌게 될 것임.




vi 엔터. vi 접속임. (visual editor)

i 눌러 입력모드. esc를 누르는 것은 명령모드.

종료시 esc 후 :q   (무엇인가 수정을하고 저장안하고 종료를 하면 안될 수 있음. !를 붙여주면 강제종료 할수 있음.

esc 후 :w 는 저장

esc 후 :wq는 저장 후 종료.

esc 후 :x도 저장 후 종료.

vi test 파일이 없으면 새로운 파일이 열리고, test파일이 있다면 그 파일을 불러옴.

vi로 접속해서 :r test 를 써주면 저장했던 test파일을 불러올 수 있음. 현재 커서가 있는 다음 줄에서 파일 내용이 써짐.

vi로 접속해서 :e test 를 써주면 저장했던 test파일을 불러올 수 있음. 현재 커서가 있는 줄에서 파일 내용이 써짐.


명령모드에서 

h는 왼쪽이동, j는 밑이동, k는 위이동, l은 우측이동.

-는 커서를 이전 줄의 맨앞으로 이동. +는 다음 줄의 맨앞으로 이동. 0은 현재줄 맨앞으로 이동. $는 그 줄 맨 뒤로 이동.

(는 현재 문단의 제일 앞으로 이동. )는 현재문단의 제일 끝으로 이동. 

G제일 마지막으로 이동. gg는 문서의 제일 처음으로 이동.

5G 누르면 5번째 줄로 이동. nG하면 n번째 줄로 이동.

:set nu 엔터 하면 라인 넘버를 보여줌.

x, del는 커서가 있는 곳을 한 글자 삭제.

X는 커서가 있는 곳의 왼쪽에 한 글자 삭제.

d+w는 단어 단위로 삭제.

d+0은 커서의 왼쪽부터 맨 앞까지 삭제. d+$는 커서부터 맨 뒤까지 삭제.

dd는 줄을 지우면서 라인을 끌어당김.

D는 현재 커서부터 오른쪽 라인의 끝까지 지움. d+$와 같음

d+G은 현재 줄부터 마지막 줄 끝까지 다 지움.

d+L은 현재 줄부터 밑으로 많이 지움. d+G와 거의 비슷.

d+H는 현재 줄부터 화면의 제일 위까지 삭제. 화면에 보이지않는 부분은 삭제되지 않음.




추가 
ls -i : 각 파일의 식별번호 확인.
head : 파일의 첫부분을 보여줌. 기본 10라인.
tail : 파일의 끝부분을 보여줌. 기본 10라인.
head -3 copyright : copyright 파일 내용의 첫 3줄만 보여줌.
head *.txt : 현재 폴더의 각 파일의 처음 10줄의 내용을 출력하여 어떤내용이 들어있는지 대충 알 수 있다.
head -3 copyright passwd  :  copyright파일과 passwd파일의 내용을 첫 3즐만 보여줌.

cd $OLDPWD  =  cd -  와 같다.

cp a.txt $HOME : $HOME 디렉토리에 a.txt를 복사한다.
cp -a a.txt $HOME : $HOME 디렉토리에 a.txt를 파일의 속성을 똑같이 유지하고 복사한다.(생성 날짜,권한 인덱스 등등)
cp -b b.txt $HOME : 복사할 위치에 이미 같은 이름의 파일이 있다면 ~표시가 추가된 파일이 생성된다. 그래서 b.txt~ 과 b.txt의 파일이 있음을 볼 수 있다.
cp -i b.txt $HOME : 복사할 위치에 이미 같은 이름의 파일이 있어서, 덮어쓸 것인지 물어본다.

ln에서 ln -s를 붙여줌으로써 소프트링크로 만든다.. 원본과 타겟의 사이즈가 다름. 각각의 퍼미션이 다름. 바로가기 아이콘과 같다. 타겟이 없어도 소프트링크를 만들 수 있다.
또 lrwxrwxrwx 이렇게 제일 앞이 l로 시작한다. ln -l 의 명령어로 어디를 가리키고 잇는지 볼 수 있다. 소프트링크를 거는 이유는 편집을 쉽게 하기 위함인데,
ln -s a.txt mylink 로 a.txt파일을 mylink의 바로가기 파일을 하나 만들어주었다. 그런데 mylink의 내용을 편집하면 a.txt의 내용까지 수정된다. 
그리고 mylink의 용량은 변함이 없고 a.txt의 용량만 올라간다. inode의 번호는 서로다르다. 원본을 삭제하면, 링크파일은 열 수 없다.
ln을 그냥 사용하면 하드링크로 만드는 것이다. 
ln b.txt b_hard.txt 로 b.txt파일을 b_hard.txt 하드링크로 만들어준다. 소프트링크와는 다르게 ls -l의 명령어로도 b_hard.txt가 b.txt를 가리키고 있는 것이 나오지 않는다.
생설날짜까지 기존의 b.txt를 따라간다. b_hard.txt의 내용을 수정하면 b.txt도 수정되고 용량까지 같다. 그냥 같은 파일이기 때문에. 그리고 ls -i 로 inode 번호까지 같은걸 확인 할 수 있다.
하드링크의 링크숫자를 본다. 자기가 자기자신을 참조하는 것으로 기본적으로 1이고,  하드링크는 링크숫자가 최소 2이다. 원본을 삭제해도 하드링크된 파일은 문제 없이 돌아간다.

블락디바이스인지 케릭터디바이스인지는 ls -l로 판단할 수 있다.
ls -l /dev/tty0 를 보면 crw--w---- 1 root tty 4, 0  2월 20 11:17 /dev/tty0 가 나오는데  c(캐릭터디바이스 의미)로 시작하고, 4번을 가짐. 
ls -l /dev/sda1 를 보면 brw-rw---- 1 root disk 8, 1  2월 20 11:17 /dev/sda1 가 나오는데 b(블락디바이스를 의미)로 시작하고, 8번을 가짐.

ls -l /tmp/.X11-unix/X0 를 쓰면 srwxrwxrwx 1 root root 0  2월 20 11:17 /tmp/.X11-unix/X0 가 나온다. s시작은 socket이거나 named pipe를 의미한다.
mkfifo mypipe 를 쓰면 네임드 파이프인 mypipe의 파일을 만들 수 있다.

시작 문자마다 d - 디렉토리 / - - 레귤러 / l - link / b - 블락디바이스 / c - 캐릭터디바이스 / s - 소켓 / p - 네임드 파이프 를 의미한다.

which mount : mount가 들어간 가장 빨리 발견된 파일만 어디있는지 보여준다.
locate mount : mount가 들어간 것을 다 찾는다. 
find -name "e100*" -print : 이름으로 찾음
find /usr/bin -amin -2 -print : 2분전에 accept했던 것을 찾아 프린트해줘
find . -atime +60 : 60일동안 accept했던 걸 찾아줘
find /etc -type d -print : 타입이 디렉토리인 것을 찾는다.
find . –perm 644 –print | xargs ls -l : 퍼미션이 644인 것을 찾아서, ls -l 의 형식으로 출력하라는. (xargs는 실행을 의미)
find . -size +8k -print | xargs ls -lS > /tmp/bigfiles.txt : 사이즈가 8k이상되는 것을 ls -s형식으로 뿌려준것을 /tmp/bigfiles.txt 파일에 출력해.
그리고 head -5 /tmp/bigfiles.txt 이렇게 쓰면 처음 5줄을 출력한 것을 볼 수 있다.




'Java & Oracle' 카테고리의 다른 글

ftp 연결, ping day5  (0) 2014.02.21
vi editor day5  (0) 2014.02.21
원격 접속 설정(윈도우->우분투)(텔넷,ssh) day4  (0) 2014.02.20
리눅스 명령어 day3  (0) 2014.02.19
윈도8, vmware-ubuntu 설치 day 1,2  (0) 2014.02.18

+ Recent posts