본문 바로가기
my_lesson/_Linux

Linux - 종합 기초

by boolean 2014. 12. 21.
728x90

ubuntu@ip-172-31-10-164:~$ sudo apt-get update 

sudo apt-get -y install apache2 libapache2-mod-auth-mysql mysql-server mysql-client php5 libapache2-mod-php5 php5-mysql; 

문서 만들기

[echo]  나열된 인자를 화면에 출력하는 명령어이다.

  • [ubuntu@ip-... ~]$ echo Hello, World
  • [ubuntu@ip-... ~]$ echo "Hello, World"
>, 혹은 >> 를 이용하여 화면에 출력된 내용을 파일을 생성하거나 파일에 내용을 추가할 수 있다.
  • [ubuntu@ip-... ~]$ echo Hello, World > hello.txt //출력된 내용을 hello.txt 파일로 생성
  • [ubuntu@ip-... ~]$ echo Hello, World >> hello.txt //출력된 내용을 hello.txt 파일에 교체
  • [ubuntu@ip-... ~]$ echo Good, Bye > bye.txt
  • [ubuntu@ip-... ~]$ echo Good, Bye >> bye.txt //출력된 내용을 bye.txt 파일끝에 추가
cat 명령을 이용하여 생성한 파일의 내용을 확인 해본다.
  • [ubuntu@ip-... ~]$ cat hello.txt
  • [ubuntu@ip-... ~]$ cat bye.txt

[cat]

파일의 내용과 입력받은 내용을 화면에 출력하는 명령이다. 6

cat ...

  • cat index.html // index.html 파일의 내용을 표시합니다.
  • cat txtscr.txt // txtscr.txt 파일의 내용을 표시합니다.
  • cat guide/readme //현재 디렉토리 밑에 있는 guide 디렉토리에 있는 readme 파일의 내용을 표시합니다.
[ubuntu@ip-... ~]$ cat << END //END 가 입력될 때 까지 입력한 내용을 출력하라.
 > Hello! > My job is student. 
> Good bye. 
> END 
cat으로 입력받은 내용을 파일에 기록한다. 

 [ubuntu@ip-... ~]$ cat << END > file.txt //END가 입력될 때 까지의 내용을 file.txt파일에 저장하는데 파일이 없으면 생성하라. 
> Hello! 
> My job is student. 
> Good bye. 
> END 
[ubuntu@ip-... ~]$ cat file.txt

[vi]

파일의 내용 편집 및 생성 실 행

  • vi 또는 vi 파일명
내용입력 Esc -> i 입력모드 명령입력
  • Esc -> : (Shift + ;)
커서이동
  • Esc -> h(좌문자)j(아래문장)k(위문장)l(우문자) //문장의 기준 Enter key
고급커서
  • Esc -> e(다음단어 끝으로) b (이전단어 처음으로)
  • Esc -> H(화면에 보이는 첫번째 줄의 처음으로 이동)L("" 마지막 줄의 처음으로 이동)
  • Esc -> G //Go 문서의 맨 끝으로 이동
  • Esc -> nG //문서의 n번째 줄로 이동
실행취소
  • Esc -> 명령라인-> u //Undo
되돌리기
  • Esc -> Ctrl + r //Redo
글자검색
  • Esc -> 명령라인-> /단어 ?단어
글자삭제
  • Esc -> 명령라인-> nd //n번째 줄을 잘라내기 해서 클립보드에 저장한다
붙여넣기
  • Esc -> 명령라인 -> p //현재커서 다음줄 또는 다음행에 붙여넣기 P(대문자) 현재행에 붙여넣기
내용저장 E
  • sc -> : -> w 파일명 // 파일이 있을 경우 바로 저장 없을경우 생성후 저장
  • Esc -> : -> wq // 저장하고 종료
  • Esc -> : -> q! // 저장하지 않고 종료


rm

지운 파일은 복구가 불가능합니다.디렉토리를 지우는 명령어는 rmdir rm [옵션들] ... [옵션]
  • d : 'unlink' 디렉토리를 지웁니다. 수퍼 유저만 가능하며, 사용 후 fsck가 필요합니다.
  • f : 존재하지 않은 파일일 경우에도 에러 메시지 출력을 하지 않습니다. 확인 과정 없이 강제로 지웁니다.
  • i : 지우기 전에 확인합니다. 기본값이므로 따로 지정하지 않아도 됩니다.
  • r : 서브 디렉토리를 포함하여 모두 지웁니다.
  • v : 지워지는 파일명을 출력합니다.
  • R : -r과 같습니다.
  • rm 1.txt //현재 디렉토리에 있는 1.txt 파일을 지웁니다.
  • rm *.txt //현재 디렉토리 있는 확장자가 txt인 파일을 모두 지웁니다.
  • rm -i /home3/hangul/game /home3/hangul/guide // /home3/hangul/game 디렉토리와 /home3/hangul/guide 디렉토리를 지우며 지우기 전에 지울 것인지 물어봅니다.
  • rm -rf ~/game //홈페이지 밑에 있는 game 디렉토리를 지우며, 서브 디렉토리를 포함하여 강제로 지웁니다.


cp

명령어는 파일이나 디렉토리를 복사할 때 사용합니다. cp [옵션] ... <타겟 경로> [옵션]
  • a : -dpR의 조합과 같습니다. 즉 링크 속성 유지, 파일과 디렉토리의 모든 속성 유지
  • b : 덮어쓰거나 지울 때 백업 파일을 만듭니다.
  • d : 심볼릭 링크 파일 그대로 복사합니다. (기본값은 연결된 원래 파일을 복사합니다.)
  • f : 같은 파일명을 갖는 파일이 있을 경우, 지운 후 복사합니다. 즉 강제로 덮어쓰며 덮어쓸 때 확인하지 않습니다.
  • i : 같은 파일명을 갖는 파일이 있을 경우, 덮어쓰기 전에 사용자에게 확인한 후 복사합니다. 기본값으로 지정되어 있습니다.
  • l : 하드 링크를 만듭니다.
  • p : 원시 파일의 소유자, 그룹, 허용 여부, 시간 등을 그대로 복사합니다.
  • r : 서브 디렉토리를 포함한 모든 파일을 복사합니다.
  • s : 심볼릭 링크를 만듭니다.
  • u : 복사할 파일이 구 버전일 경우만 복사합니다.
  • v : 복사하기 전에 각각의 파일명을 출력합니다.
  • x : 파일 시스템이 같을 경우만 복사합니다.
  • P : 원시 파일이 존재하는 디렉토리까지 포함하여 복사합니다.
  • R : 디렉토리를 포함하여 복사합니다.
  • S : 환경 변수 SIMPLE_BACKUP_SUFFIX에 의해 지정된 백업 꼬리말로 백업 파일을 만듭니다.
  • cp index.html index2.html //현재 디렉토리에 있는 index.html 파일을 복사해 index2.html를 하나 더 만듭니다.
  • cp ../game mygame //../game(모디렉토리 밑의 game) 디렉토리를현재 디렉토리 밑에 mygame 디렉토리로 복사합니다.
  • cp guide/kjt.html kim.html //현재 디렉토리 밑에 있는 guide 디렉토리에 있는 kjt.html 파일을 현재 디렉토리에 kim.html 파이로 복사합니다.
  • cp -rf ~/guide ~/guide2 //홈디렉토리 밑의 guide 디렉토리를 홈디렉토리 밑에 guide2로 복사합니다. 서브 디렉토리를 포함하며 같은 이름의 파일이 있을 경우에는 겹쳐씁니다.


mv

는 파일 이름을 바꾸거나 옮길 때 사용합니다. mv [옵션] ... <타겟 경로> [옵션]
  • b 지워지기 전에 백업본을 만듭니다.
  • f 옮겨질 디렉토리에 존재하는 파일이 있으면 덮어씁니다. 물어보지 않고 강제로 옮기거나 rename 합니다.
  • i 옮겨질 디렉토리에 존재하는 파일이 있으면 확인합니다. 기본값으로 지정되어 있습니다.
  • u 옮겨질 디렉토리에 구 버전의 파일이 있을 경우만 옮깁니다.
  • v 옮기기 전에 파일명을 출력합니다.
[보기]
  • mv test.txt test.html //kim.txt 파일 이름을 kim.html으로 바꿉니다.
  • mv guide/kim.html kim.txt //현재 디렉토리 밑의 guide 디렉토리 있는 kim.html 파일을 현재 디렉토리로 옮기면서 이름을 kim.txt 으로 바꿉니다.

 날짜 보기 date 화면 지우기 clear 한 화면씩 출력하는 more 

touch

  • 파일의 시간과 정보를 변경
  • 빈 파일을 생성
  • touch 파일명

파일과 디렉토리의 소유권과 소유그룹 설정

  • sudo chown -R ubuntu . // 현재의 디렉토리 및 하위 까지 재귀적으로 소유자를 ubuntu로 지정
  • chown ubuntu:root test.txt; // 특정파일(test.txt)의 소유자 및 소유그룹 변경
  • chown ubuntu:root test; // 특정폴더(test)의 소유자 및 소유그룹 변경
  • chown -R ubunru:root test // 특정 디렉토리(test)내의 모든 파일들의 소유자 및 소유그룹 변경
  • chown -R ubuntu:root test --from=nobody:nobody // ... 특정파일들에 데해서만 소유자 및 소유그룹 변경

root user 획득과 실효

리눅스사용자-계정변경-root에서 유저로-유저에서 root로 sudo, su
  • su -l user; //user라는 사용자로 변경하며 해당 세션에 대해서만 superuser권한 소유.
  • sudo su; //root세션에 대한 관리자 권한을 갖은 user에게 superuser권한을 부여.일반user는 부여블가능
  • su -l user; //해당 세션에 대해서만 superuser 권한을 갖는 user로 다시 변경 root ->user
  • su - user; //해당 세션에 대해서만 superuser 권한을 갖는 user로 다시 변경 root ->user


권한관리

-rwxr-xr-- 위 문자열은 각각 아래를 의미한다
-                rwx            rwx              rwx
파일타입     user 권한    group 권한    other 권한
파일 타입(file type)에는 아래와 같은 종류가 있다. (여기서는 - 와 d 만 알고 있어도 충분하다.)
- : plain file. 일반 파일. 실행 파일도 포함한다.
d : directory. 디렉토리 형식.
l : link. 다른 파일을 가리키는 링크 파일.
p : pipe. 두 개의 프로그램을 연결하는 파이프 파일. 
b : block device. 블럭 단위로 하드웨어와 반응하는 파일.
c : character device. 스트림 단위로 하드웨어와 반응하는 파일.

매번 심볼을 사용하기 불편하다면 간편하게 숫자로 설정할 수도 있다.
rwx 는 각각, 아래와 같은 숫자 값을 가진다.
r = 4,  w = 2,  x = 1,   - = 0. 

ex)각 그룹에 대한 권한을 숫자를 합한 값으로 한자리로 표현할 수 있다.
rw- = 4 + 2 + 0 = 6,  r-x = 4  + 0 + 1 = 5,       rwx = 4 + 2 + 1 = 7
  • chmod 777 test; //모든 사용자에게 test 폴더에 대해 읽기(r) 쓰기(w) 실행(x) 모두 가능하게 한다.
  • chmod a+x test; //모든 사용자에게 test 폴더에 데해 실행을 가능하게 한다.
  • chmod u=wrx test; //유저에게 test 폴더에 데해 읽기 쓰기 실행을 가능하게 한다.
  • chmod go -w test; //그룹과 기타유저에게 test 폴더에 데해 읽기 기능을 불가능하게 한다.


aptana


  • 실행 --> 기본 -->> project Explorer --> 마우스 오른쪽 클릭 -->NEW--> phpproject-->create project name -->phpproject --> project name -->blabla --> 확인 --> 생성된 project 선택 마우스 우 클릭 --> Publish ->> 선택 ->>Run...선택 --> FTP/sFTP...선택 --> next--> Site name --> Choice Protocol:SFTP - >..
  • Server : 자신 네트웍 계정
  • User Name : ubuntu
  • Use Public Key selected : amazone p_Key.
  • Remote Path : /var/www
  • Test~
  • Encoding : UTF-8
  • Automatically : check!!
  • sellected : default!
  • Finish!!



php error log

설정
  • ubuntu@ip-172-31-10-164:/$ cd /etc/php5
  • ls -al
  • ubuntu@ip-172-31-10-164:/etc/php5$ cd apache2/
  • ls -al
  • ubuntu@ip-172-31-10-164:/etc/php5/apache2$ ls -al /usr/share/php5/
  • 기본 : php.ini-production(배포판)
  • ubuntu@ip-172-31-10-164:/etc/php5/apache2$ sudo cp /usr/share/php5/php.ini.development /etc/php5/apache2/php.ini
  • ubuntu@ip-172-31-10-164:/etc/php5/apache2$ sudo service apache2 reload // 설정만 변경 접속유지
  • ubuntu@ip-172-31-10-164:/etc/php5/apache2$ sudo service apache2 restart // 접속 끊김


root

(관리자 모드 SQL Login)
  • mysql -hlocalhost -u****** -p******


User database 생성

  • CREATE DATABASE dbjoon CHARACTER SET utf8 COLLATE utf8_general_ci;

생성확인

  • show databases;

나갔다가 다시 진입 확인하기

  • exit

데이터배이스 사용하기

  • use dbjoon

User 의 테이블 생성하기

CREATE TABLE topic( my_t 라는 테이블 생성 하는데
> id int(11) NOT NULL AUTO_INCREMENT, 아이디는 int자료형인데 11자리까지이며 반드시 입력해야하며 자동증가방식이다
> title varchar(255) NOT NULL, 타이틀은 varchar인데 255자리까지이며 반드시 입력해야 한다
> description text NULL, 설명은 text 자료형인데 입력 안해도 된다.
> created datetime NOT NULL, 문서 작성시간은 datetime자료형이며 반드시 입력해야 한다.
> PRIMARY KEY (id) 대표키는 id로 한다.
> );
CREATE TABLE topic( id int(11) NOT NULL AUTO_INCREMENT, 
 title varchar(255) NOT NULL, description text NULL, 
 created datetime NOT NULL, 
 PRIMARY KEY (id) ); 

CREATE TABLE memo( id int(11) NOT NULL AUTO_INCREMENT, 
 name varchar(20) NOT NULL, 
 email varchar(50) NOT NULL, 
 memo varchar(255) NOT NULL, 
 created datetime NOT NULL, 
 ip varchar(15) NOT NULL, 
 PRIMARY KEY (id) );

빈 테이블 조회하기

  • SELECT * FROM topic;

선별 조회하기

  • SELECT id, title, created FROM topic;

데이터 추가하기.

  • INSERT INTO `topic` (title,description,created) VALUES ('JavaScript','JavaScript ...',now());
  • INSERT INTO `topic` (title,description,created) VALUES ('변수와 상수','변수와 상수 ...',now());
  • INSERT INTO `topic` (title,description,created) VALUES ('연산자','연산자 ...',now());
  • INSERT INTO `topic` (title,description,created) VALUES ('JSON','JSON ...',now());
'' `` 차이점 주의!!

정렬

  • SELECT id, title, created FROM topic ORDER BY title DESC;

검색

  • SELECT id, title, created FROM topic WHERE id = 2;
  • SELECT id, title, created FROM topic WHERE id = 2 OR id = 1;

출력 튜플 제한

  • SELECT id, title, created FROM topic LIMIT 2;
  • SELECT id, title, created FROM topic LINIT 1,2; //배열[1]에 해당하는 튜플부터 2칸 출력하라!
incompatible debugger version the remote debugger version might not match the expacted protocol version (20060400705) ec2-54-64-231-37.ap-northeast-1.compute.amazonaws.com




댓글