먼저 vim이란 텍스트 편집기이며 파일을 편집할 때 사용하는 만큼 다양한 명령어들에 대해서 알고 있어야 유의미한 활용이 가능하다.

 

vim은 모드마다 수행할 수 있는 동작들이 구분되며 vim을 사용해서 파일을 열게 되면 일반 모드로 시작하게 된다.

 

일반 모드

텍스트를 수정할 수 없으며 커서 이동, 삭제, 복사, 붙여 넣기 등의 명령을 실행할 수 있다.

커서 위치를 기준으로 동작하는 명령어들이 있는데 커서 위치는 방향키로 이동할 수 있다.

 

x : 커서 위치의 문자 하나 삭제

dd : 현재 줄 삭제

d$ : 커서부터 현재 행의 끝까지 삭제

d0 : 커서부터 현재 행의 시작까지 삭제

d{motion} : {motion}이 가리키는 텍스트를 삭제 ({motion}은 이동 명령어)

ex) dw는 단어 삭제

 

yy : 현재 줄 복사

y {motion} : {motion}이 가리키는 텍스트 복사

ex) yw는 한 단어 복사

 

p : 복사한 텍스트를 커서 뒤에 붙여 넣기

P : 복사한 텍스트를 커서 앞에 붙여 넣기

u : 마지막 변경 취소 (undo)

Ctrl + r : 마지막 취소 작업 복구 (redo)

입력 모드

텍스트를 수정할 수 있는 상태로 진입한다. esc로 일반모드 전환할 수 있다.

 

i : 커서 앞에 텍스트 입력 시작

I : 현재 행의 맨 앞에서 입력 시작

a : 커서 뒤에서 텍스트 입력 시작

A : 현재 행의 맨 끝에서 입력 시작

o : 다음 줄에 새 행을 추가하고 입력 모드로 전환

O : 현재 줄 위에 새 행을 추가하고 입력 모드로 전환

 

h : 왼쪽으로 한 칸 이동

j : 아래로 한 줄 이동

k : 위로한 줄 이동

l : 오른쪽으로 한 칸 이동

w : 단어 단위로 앞으로 한 칸 이동

b : 단어 단위로 뒤로 한 칸 이동

0 : 현재 행의 시작으로 이동

$ : 현재 행의 끝으로 이동

gg : 파일의 첫 번째 줄로 이동

G : 파일의 마지막 줄로 이동

 

/검색어 : 파일 내에서 '검색어'를 검색, 다음 단어로 이동은 n

? 검색어 : 파일 내에서 '검색어'를 역방향으로 검색, 이전으로 이동은 N

 

ZZ : 저장하고 종료

 

명령모드

vim의 명령어를 입력할 수 있는 모드로 : 를 입력해 진입할 수 있다.

 

:{숫자} : 지정한 줄로 이동 (:10은 10번 줄로 이동)

:w :현재 파일 저장

:w filename : 다른 이름으로 파일 저장

:q : vim 종료, 저장되지 않은 변경 사항이 있으면 경고가 뜬다.

:q! : 저장하지 않고 종료

:wq : 저장하고 종료

 

:set number : 줄 번호 표시

:set nonumber : 줄 번호 숨기기

:set ignorecase : 대소문자 구분 없이 검색

:set noignorecase : 대소문자 구분하여 검색

 

:set autoindent : 자동 들여 쓰기 활성화 (현재 줄의 들여 쓰기를 자동으로 이전 줄의 들여쓰기와 맞춰주는 기능)

:set smartindent : 스마트 들여쓰기 활성화 (코드 구조에 따라 들여쓰기를 조정하는 기능)

 

:set paste : 붙여 넣기 모드 활성화 (들여쓰기가 깨지지 않도록)

:set nopaste : 붙여넣기 모드 비활성화

:help : vim 도움말 열기

 

:split or :sp : 수평 분할

:vsplit or :vsp : 수직 분할

 

이 외 이동명령

Ctrl + f : 한 페이지 아래로 이동

Ctrl + b : 한 페이지 위로 이동

Ctrl + d : 파일에서 절반 정도 아래로 이동

Ctrl + u : 파일에서 절반 정도 위로 이동

 

Ctrl + w, s : 창을 수평으로 나누고 커서 이동

Ctrl + w, v : 창을 수직으로 나누고 커서 이동

Ctrl + w, q : 분할된 창 닫기

728x90
반응형

이번에는 test.php 파일을 만들어서 잘 동작하는지 테스트해본다.

 

먼저 리눅스에서 텍스트 파일을 사용하기 위해서 텍스트 편집기가 필요한데 일반적으로 vim이나 nano를 사용한다.

 

vim이 좀 더 복잡하지만 기능이 많고 nano가 더 단순하면서 간단하게 쓰는 도구라고 하는데 

 

일단 서버에 깔려있는 건 vim이라서 그대로 vim을 쓰기로 한다.

 

vim 버전확인

vim --version

 

파일을 생성하기 위해서는 경로가 필요한데 생각해 보니 아직 리눅스 서버의 폴더 구조를 모른다.

 

일단 폴더가 뭐가 있는지 확인해 본다.

 

ls /

 

ls 명령어는 자주 사용되는 것 중 하나로 list를 의미한다.

 

리눅스의 ls는 디렉터리 내의 파일과 폴더 목록을 나열하는 데 사용되며 / 를 통해서 루트 디렉터리에서 목록을 나열해 본다.

 

 

- bin : 시스템 부팅 및 작업에 필수적인 명령어들이 위치한다. 

- dev : 하드웨어 장치와 관련된 파일들이 들어 있다.

- home : 일반 사용자 계정의 홈 디렉터리가 위치한다. 각 사용자의 개인 디렉토리

- lib64 : 64비트 시스템 및 프로그램에 필요한 라이브러리  위치

- mnt : 일반적으로 임시로 다른 파일 시스템을 마운트 하는 디렉터리

- proc : 가상 파일 시스템으로, 시스템 상태나 프로세스 정보를 제공

- run : 시스템의 현재 실행 중인 프로세스와 관련된 정보가 저장

- srv : 서버가 제공하는 서비스에 관련된 데이터를 저장 (웹 서버, FTP 서버 등)

- tmp : 임시 파일들이 저장되는 경로, 시스템이 재부팅되면 지워진다.

- var : 로그 파일, 캐시 파일, 스풀 파일 등 변동하는 데이터가 저장되는 경로

- boot : 커널 파일 및 부트로더 관련 파일이 있다.

- etc : 시스템 설정 파일들이 모여 있는 경로이며 네트워크 설정, 사용자 설정 등이 포함된다.

- lib : 32비트 프로그램 실행에 필요한 필수적인 라이브러리 파일

- media : usb 드라이브나 cd/dvd 등 이동식 미디어 장치가 마운트 되는 곳

- opt : 추가적인 소프트웨어 패키지들이 설치되는 디렉터리

- root : 시스템의 루트 사용자 홈 디렉토리

- sbin : 시스템 관리자용 명령어들이 위치하는 경로

- sys : 시스템 관련 정보를 제공하는 가상 파일 시스템

- usr : 사용자 프로그램과 관련된 파일들이 위치로 프로그램, 라이브러리, 문서 등이 포함

 

Apache 웹 서버의 경우 보통 /var/www/html/ 경로에서 파일을 처리한다고 하는데 먼저 이 경로에서 파일을 만들고 테스트했을 파일을 못 찾는 문제가 있었다.

 

 

어떤 문제인지 찾아보면서 Apache 설치와 실행 상태, 찾으려는 파일의 디렉터리 권한도 변경해보고 했지만 해결이 안 되었다.

 

그리고 Apache 로그를 조회해 보았는데 경로에 문제가 있었다는 걸 알게 되었다.

 

$sudo tail -f /var/log/httpd/error_log

 

/var/www/html/ 가 아닌 /home/bakcoding/html/ 에서 test.php 파일을 찾고 있어서 Not Found 에러가 뜬 것

 

서버 환경이나 세팅에 따라서 달라지는 부분인가 보다.

 

처음부터 에러 로그를 찾았다면 더 빨리 해결됐을 문제였다.

 

이제 정확한 경로를 알게 됐으니 다시 파일 생성으로 돌아간다.

 

vim을 사용해서 파일을 생성해 보기로 한다.

 

$sudo vim /home/username/html/index.php

 

sudo는 Super Do로 이걸 붙이면 관리자 권한으로 실행과 마찬가지로 볼 수 있다.

 

권한에 따라 sudo 없이 vim만 실행하면 파일을 열어볼 수 만 있으므로 sudo를 붙여서 명령어를 실행해 준다.

 

위 명령어를 실행하면 파일이 있는 경우 해당 파일이 열리고 없으면 새로 생성되면서 콘솔창이 vim 창으로 바뀐다.

 

 

이 상태에서는 특정 키워드를 입력하면 동작으로 이어지게 되는데 먼저 파일을 작성할 때는 명령어 입력 상태에서 i를 입력하면 된다.

 

그리고 php 내용을 채워주는데 간단하게 db에 연결하고 성공과 실패 시 리턴 그리고 테이블에 값도 넣어보도록 한다.

 

<?php
// MySQL Connection
$servername = "localhost";
$username = "userid";
$password = "password";
$dbname = "testdb";

//conn
$conn = new mysqli($servername, $username, $password, $dbname);

//conn check
if ($conn->connect_error){
        die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

// data insert test
$sql = "INSERT INTO users (username, email) VALUES ('testuser', 'test@example.com')";
if ($conn->query($sql) === TRUE){
        echo "New record created successfully";
} else{
        echo "Error: " . $sql . "<br>" . $conn->error;      
}
$conn->close();
?>

 

이렇게만 해놓고 

 

이제 http://내 서버 주소/test.php를 주소창에 입력했을 때 아무 문제가 없다면 성공했다는 텍스트가 뜨고 db에 값이 제대로 들어가 있는지 보면 된다.

 

 

 

php 테스트 일단은 문제가 없는 것으로 보인다.

728x90
반응형

'Develop > Server' 카테고리의 다른 글

vim 명령어  (0) 2025.03.01
리눅스 명령어 - ls  (0) 2025.03.01
[NHN Cloud Hosting - Linux] mysql 테스트  (0) 2025.03.01
[NHN Cloud Hosting - Linux] SSH로 서버 접속  (0) 2025.03.01
SSH와 RDP  (0) 2025.03.01

+ Recent posts