GUI환경에서는 gedit 와 같은 편리한 텍스트 에디터들이 있으므로 텍스트 파일을 만들거나 편집할 경우에 이런 툴을 이용할 수 있다. 그리고 프로그래밍할 때는 IDE를 이용하면 된다. 하지만 쉘 기반의 텍스트 에디터를 사용할 수밖에 없는 경우도 발생하게 되는데 예를 들어서 원격으로 접속한 경우이다. 이런 경우 리눅스에는 vi (혹은 vim) 라는 텍스트 편집기가 많이 사용되지만 처음에는 그 사용법을 익히기가 어려운 편이다.


 간단한 작업을 할 경우에는  nano를 사용하면 CLI 환경에서 더욱 간단하게 텍스트 파일이나 프로그램 파일을 작성하고 편집할 수 있다. 기본적으로 설치되어 있으므로 터미널에서 nano라고 입력하거나 nano filename 을 입력하면 실행된다.


[표 1] nano 실행 명령어 예제들

실행 명령

동작

nano memo.txt
memo.txt를 편집하기 위해 open한다.
nano -B memo.txt
save 직전에 이전 파일을 ~.filename으로 백업한다.
nano -m memo.txt
cursor 이동을 위해 mouse를 사용한다. (지원시)
nano +83 memo.txt
83 번째 줄부터 편집한다.


나노가 실행되면 바로 편집할 수 있는 상태로 진입하게 된다.


[그림 1] 터미널에서 nano의 실행 화면


편집 모드에서는 기본적으로 상하좌우 방향키로 caret을 이동시킬 수 있으며, del, backspace, enter 키 사용이 가능하다. ctrl+g를 눌러 도움말을 볼 수 있다.


다음은 단축키 목록이다. 이 중 잘라내기/복사/붙이기 키는 잘 알아두어야 편집할 때 매우 유용하다.


[표 2] 기본 명령(단축키)들

단축키

동작

ctrl+g (F1)
도움말 표시
ctrl+x (F2)
nano 종료 (혹은 현재의 file buffer를 닫음)
ctrl+o (F3)
현재 편집 중인 파일 저장
ctrl+j (F4)
문단을 justify(행의 끝을 나란히 맞추다)한다. 즉, 한 문단을 한 줄로 붙인다.
ctrl+r (F5)
현재 file에 다른 file의 내용을 추가한다.
ctrl+w (F6)
text 검색
ctrl+c (F11)
현재의 cursor 위치 표시하기
ctrl+t (F12)
spell check 시작
ctrl+\
search and replace


다음 표는 편집에 관련된 단축키들이다.


[표 3] 잘라내기/복사/붙여넣기에 관련된 단축키들

단축키

동장

ctrl+k (F9)
현재의 line 혹은 선택된 text 삭제(그리고 저장(copy))
ctrl+u (F10)
붙여넣기 (paste)
ctrl+6
현재 cursor 위치부터 text 선택 시작. 이후 alt+6로 복사 후 선택 종료. 아니면 다시 ctrl+6를 입력하면 (복사 없이)단순 종료.
alt+6
선택 구간 복사. 선택 구간이 없다면 현재 caret 이 있는 한 줄을 복사. 이후 ctrl+u 로 붙여넣기 할 수 있음,


다음 표는 화면 이동과 관련된 키들이다. 선택 모드일 경우 이동한 만큼 선택이 추가/삭제된다.


[표 4] 화면 이동과 관련된 단축키들

단축키

동작

PageUP 또는 ctrl+y (F7)
PageDown 또는 ctrl+v (F8)
이전 화면
다음 화면
alt+(
alt+)
현재 문단의 시작으로
현재 문단의 끝으로
alt+=
alt+-
한 줄 밑으로 스크롤
한 줄 위로 스크롤
ctrl+space
alt+space
한 단어 앞으로
한 단어 뒤로 (GUI모드가 아닐 경우)
alt+\
alt+/
file의 첫 line으로
file의 마지막 line으로
alt+]
현재 괄호에 match되는 괄호 찾기
ctrl+-
줄 번호와  열을 입력한 후 그곳으로 이동




Posted by 살레시오

댓글을 달아 주세요

  1. 신미경 2016.08.27 20:39  댓글주소  수정/삭제  댓글쓰기

    강의잘보았습니다. 리눅스에대한 전반적인 이해를 하는데 큰 도움이 되었습니다.

  2. 안호찬 2021.02.01 01:26  댓글주소  수정/삭제  댓글쓰기

    리눅스에 대한 이해를 하는데 큰 도움이 되었습니다. 감사합니다.

 기본적으로 리눅스의 표준 입력(standard input)은 키보드이고 표준 출력 (standard output)은 모니터 혹은 터미널윈도이다. 하지만 리눅스는 매우 유연한 운영 체제이므로 이러한 표준 입출력을 변경할 수 있다. 예를 들어 표준 출력을 모니터가 아니라 프린터로 바꿀 수 있다.


>과 |를 이용한 출력 재지정

 출력 재지정(output redirection)을 이용하면 명령어의 표준 출력 내용을 모니터에 출력하는 대신에 파일에 저장하거나 다른 명령어의 입력으로 인가할 수 있다. 이때 사용되는 기호가 >와 | 이다.


명령어 > 파일명


만약 파일이 있다면 덮어쓰게 되고 없다면 새로 생성한다. 예를 들어 다음 명령은 ls 의 결과를 모니터에 출력하지 않고 모두 파일 list.txt에 저장한다.


ls > list.txt


출력 재지정은 앞에서 cat 명령이나 echo 명령에서 사용한 바 있다. 만약  >을 이용하여 두 개의 파일을 연결하여 하나의 새로운 파일을 만들 수 있다.


cat file1 file2 > file3


이렇게 하면 file1 과 file2의 내용이 합해져서 file3 에 저장된다.


 덮어쓰기(overwrite)는 바람직하지 않으므로 만약 실수로 중요한 파일을 덮어쓰는 것을 방지하려면 .bashrc 파일에 set -o noclobber 라는 명령을 추가시켜주는 것이 좋다.


 만약 다음과 같이 ‘아무 것도 아닌 것을’ 존재하는 파일에 재지정하면 그 파일은 빈 파일이 되어버린다.


> list


list라는 파일의 크기는 0인 것을 확인할 수 있을 것이다. (이것을 truncating 이라고 한다.) 또는 존재하지 않는 파일에 같은 일을 하면 빈 파일이 새로 생성된다. touch 명령어와 동일한 동작을 수행한다.


 기호 | 는 좌측의 출력을 우측의 입력으로 인가한다. 만약 긴 리스트를 한 페이지씩 보고 싶다면 다음과 같이 한다.


ls -al | less


만약 파일명에 특정 문자열이 들어간 것만 보고 싶다면 다음과 같이 grep 명령과 조합하여 사용하면 된다.


ls -al | grep part_of_file_name


입력 재지정 (input redirection)

 입력 재지정을 이용하면 명령어의 표준 입력을 키보드 대신 파일에서 받을 수 있다. 이 때 < 연산자가 이용된다.


명령어 < 파일


예를 들어 wc (줄바꿈문자수, 단어수, 바이트수를 표시하는 명령)의 입력을 파일에서 받고 싶다면 다음과 같이 입력한다.


wc < list1.txt


입력과 출력 재지정을 조합해서 사용할 수도 있다


wc < list1.txt > result


이 명령은 list1.txt파일의 워드카운트 결과를 result 파일에 기록한다.

출력 추가(append)

 기호 >> 를 이용하면 명령어의 표준 출력을 기존 파일에 추가할 수 있다.


명령어 >> 파일


예를 들어 현재 로그인한 사용자들의 리스트를 list.txt에 추가하려면 다음과 같이 하면 된다.


who >> list.txt


만약 파일이 없다면 생성한 후 기록하게 된다.



Posted by 살레시오

댓글을 달아 주세요

  1. KaiTae 2019.05.09 11:50 신고  댓글주소  수정/삭제  댓글쓰기

    출력 추가를 하게 되면 모니터에 출력하고, 파일에도 출력이 되는 것인가요?

 아래 표에 기타 명령어들을 나열하였다.


[표 1] 기타 명령어들

명령어

기능

date
현재 날짜 및 시간을 확인한다.
hostname
현재 사용하고 있는 호스트 이름을 확인한다.
uname
현재 사용하고 있는 운영체제.
who
현재 접속 중인 사용자들의 리스트
clear
화면을 초기화함. ( [ctrl]+L 과 동일함)
passwd
비밀번호를 바꾼다.
touch filename
빈 파일을 생성한다.
history
이전에 내린 명령들을 보여준다.
echo "content" >> file
file 이라는 파일에 content 라는 내용을 기록한다.(file이 없다면 생성한 후 기록)
poweroff
halt
shutdown -h now
시스템 종료



Posted by 살레시오

댓글을 달아 주세요

 긴 명령어를 짧게 다시 정의하는 명령어로 alias 가 있다. 아무런 옵션 없이 그냥 alias라고 입력하면 현재 정의되어 있는 별칭의 목록을 보여준다.



만약 ‘ls -alh’를 ll로 새로 정의하고 싶다면 다음과 같이 하면 된다.


alias ll = ’ls -alh’


이후에는 ‘ll’ 이라고 입력할 때마다 자동으로 ‘ls -alh’가 실행되므로 편리하게 사용할 수 있다. 다른 예를 들어보면


alias rm = ‘rm -i’


이후로는 rm 명령이 실행될 때마다 ‘rm -i’ 가 실행되어 확인 과정을 거치게 된다.


alias lsd = ‘ls -al | grep “^d”’


이후에는 ‘lsd’ 명령을 입력하면 디렉토리의 리스트만 보여준다.


 정의된 별칭을 제가하려면 unalias 몀령을 이용하면 된다.


unalias ll


사용자 홈디렉토리에 보면 .bashrc 라는 숨김 파일이 있는데 (리눅스에서는 점으로 시작하는 파일은 숨김파일이다) 이 파일 안에 사용자의 alias가 설정되어 있다. 이 파일에 사용자가 alias를 더 설정해 놓으면 터미널을 실행시킬 때 로드되므로  일일이 다시 재정의할 필요가 없게 된다.



Posted by 살레시오

댓글을 달아 주세요

 텍스트 파일의 내용을 보여주는 쉘 명령어들을 다음 표에 정리하였다.


[표 1] 텍스트 파일의 내용을 보여주는 명령어들

cat file1 file2 file3

- file들의 내용을 모두 합해서 끝까지 한 번에 보여준다.(concatenation)

- 내용이 긴 경우 화면에 넘어간 내용을 확인할 수 없다.

- 인수가 없는 경우 키보드로 부터 입력을 받아 그 내용을 그대로 출력한다.(이후 ^D로 종료)

more  filename

파일의 내용을 한 페이지 단위로 끊어서 보여준다. 스페이스를 입력하면 다음 페이지로 이동한다. 종료하려면 ^z나  ‘q’를 입력

less filename

more와 같이 큰 파일의 내용을 끊어서 보여주지만 위아래로 이동할 수 있다는 점이 다르다. 한 줄씩 이동(커서키)과 페이지 업/다운 키를 지원한다. 종료하려면 ^z 혹은 ‘q’를 입력.

diff file1 file2

두 파일의 다른 점을 보여준다.

head

tail

파일의 앞 부분(10줄)을 출력한다.

파일의 뒷 부분(10줄)을 출력한다.


 ‘cat’ 명령을 인수 없이 입력할 경우 키보드 입력을  표준 출력(화면)에 표시한다. 따라서 키보드 입력을 파일에 저장하고 싶을 경우 다음과 같이 하면 된다.


cat > filename


그러면 ^D 가 입력될 때까지의 키보드 입력이 파일에 저장된다.


 ‘less’ 명령어를 이용하면 긴 도움말 전체를 살펴볼 수 있다. 예를 들어서 다음과 같이 하면 된다.


ls --help | less


여기에서 ‘|’ 기호는 좌측의 출력을 우측의 입력으로 인가하라는 지시이다. 따라서 less 뷰어의 입력으로 ls --help 명령의 출력내용이 인가되므로 커서키나 페이지 업/다운 키로 전체를 살펴볼 수 있다.



Posted by 살레시오

댓글을 달아 주세요

cp (CoPy)

 파일을 복사할 때는 ‘cp’ 명령을 이용한다. 아래 표에서 file~ 로 시작하는 것은 파일명을, dir~로 시작하는 것은 디렉토리명을 나타낸다.


[표 1] cp 명령어의 용례들

cp fileSrc fileDest

fileSrc를 fileDest로 (이름을 바꿔서) 복사한다.

cp fileSrc dirDest

fileSrc를 dirDest 안에 (같은 이름으로) 복사한다.

cp fileSrc dir/fileDest

fileSrc를 dir 디렉토리 밑의 fileDest로 (이름을 바꿔서) 복사한다.

cp -r dirSrc dirDest

디렉토리 안의 내용을 모두 복사한다.(dirDest가 없다면 새로 생성한 후 복사한다.)


mv (MoVe)

 파일이나 디렉토리의 이동시킬 때 mv 명령을 사용하는데 이름을 바꿀 때에도 사용한다.


[표 2] rm 명령어의 용례들

mv fdSrc fdSest

화일(디렉토리)의 이동. 이름을 바꾸는 데도 사용된다.

mv file dir

file을 dir 안으로 옮긴다.

mv file1 file2

file1을 file2로 이름을 바꾼다.

mv file1 dir/file2

file1을 dir로 옮기면서 file2로 이름도 바꾼다.




Posted by 살레시오
TAG CP, Linux, MV, 리눅스

댓글을 달아 주세요

mkdir 명령어

 디렉토리를 생성하는 명령어가 ‘mkdir’ 이다. 바로 뒤에 디렉토리 명을 옵션으로 주어 생성할 수 있다.


[표 1] ‘mkdir’ 명령의 용례들

mkdir dirName

dirName 이라는 디렉토리를 현재 위치에 생성

mkdir dir1 dir2 dir3

동시에 여러 개의 디렉토리를 생성한다.

mkdir -p dir1/dir2/dir3

-p 옵션을 사용하면 중첩된 디렉토리를 한 번에 생성해 준다.


rm (ReMove)

 파일이나 디렉토리를 삭제할 때는 rm 명령어를 이용한다.


[표 2] ‘rm’ 명령어의 용례들

rm fileName1 fileName2

파일(들)을 삭제 (디렉토리는 이 명령어로 지울 수 없음)

rm *

현재 디렉토리의 모든 파일 삭제

rm a*

a문자로 시작하는 모든 파일 삭제

rm -r dir1

dir1 디렉토리 및 그 안에 포함된 파일과 디렉토리를 모두 삭제 (r은 recursive 의 의미임)

rm -r ab*

ab 로 시작하는 파일과 디렉토리(하위도 포함)을 모두 삭제

rm -f

강제 삭제 (데비안/우분투에서는 기본 옵션임. 즉 rm -r 은 rm -rf 와 같은 명령임)

rm -i

삭제 전에 확인 과정을 거친다.



이 명령어를 사용할 경우에는 주의를 기울여야 한다. 어떤 배포판에서는 확인 과정을 거치지 않고 바로 삭제가 이루어지기 때문이다. 만약 실수로 시스템 파일들을 삭제하게 되면 돌이킬 수 없게 된다.


rmdir (RmMove DIRectory)

디렉토리를 삭제하는 명령어로 rmdir 이  있다. 하지만 이 명형어는 비어있는 디렉토리만을 제거할 수 있다.


rm dir1


위의 명령은 만약 dir1이 비어있다면 삭제되지만 그렇지 않다면 에러를 발생시킨다. 만약 중첩된 디렉토리를 모두 삭제하려면 -p 옵션을 주면 된다.


rm -p dir1/dir2/dir3


위 명령은 dir1 과 그 하위 디렉토리를 모두 삭제한다. 단, 이 경우에도 모든 디렉토리가 비어있어야 한다.



Posted by 살레시오

댓글을 달아 주세요

 ‘cd’ 명령은 디렉토리를 이동할 때 사용되는 명령어이다. ‘cd’ 명령을 사용하려면 먼저 다음 문자들의 의미를 잘 숙지하고 있어야 한다.


[표 1] 특정 디렉토리를 의미하는 특수문자들

~(틸다)

현재 사용자의 홈디렉토리를 나타냄.(만약 사용자가 pi 라면 /home/pi 임.)

. (점 하나)

현재 디렉토리

.. (점 둘)

현재에서 한 단계 상위 디렉토리

/

(단독으로 사용되면) 루트 디렉토리


기본적인 사용법은  다음과 같다.


cd [상대경로|절대경로] : 지정된 경로로 이동.


즉, cd 다음에는 상대경로 혹은 절대 경로가 오게 된다. 절대 경로는 / 로 시작되는 경로이고 상대 경로는 현재 위치를 기준으로 한 목적지 디렉토리 경로이다.


[표 2] ‘cd’ 명령의 용례들

cd /

루트 디렉토리로 이동 (절대 경로)

cd /home/pi

/home/pi 로 이동 (상대 경로)

cd .

변함 없음. (현재 디렉토리로 이동이므로)

cd ..

한 단계 상위 디렉토리로 이동.

cd ../..

두 단계 상위 디렉토리로 이동.

cd ../test4

상위 디렉토리의 밑의 test4 디렉토리로 이동.

cd 혹은 cd ~

사용자의 홈디렉토리로 이동

cd -

직전의 디렉토리로 되돌아간다.


한 가지 팁은 디렉토리나 파일명을 입력할 때 선행하는 한두 문자를 입력한 후 tab 키를 누르면 자동으로 완성시켜주는 기능이 있으니 편리하게 사용할 수 있다.




Posted by 살레시오

댓글을 달아 주세요

 리눅스 시스템에 전원을 인가한 후 부팅이 끝나면 아이디와 비밀번호를 입력하여 로그인을 할 수 있다. 로그인한 후에는 사용자가 명령을 입력하여 수행할 수 있다. 또는 gui환경이 시작되었다면 터미널(terminal) 창을 열어서 명령어를 입력할 수 있다. 터미널을 실행했을 때 명령을 대기하는 프롬프트의 끝이 $ 라면 현재 사용자를, #로 끝나면 슈퍼 유저(super user, 시스템 관리자를 의미)를 나타낸다. 홈디렉토리는 ~ (틸드) 로 표시한다.


~$_ : 현재 사용자의 명령 대기

~#_ : 슈퍼 유저(시스템 관리자의) 명령 대기


예를 들어 터미널을 실행시켰을 때 다음과 같은 글이 처음에 뜨고 맨 우측에 캐롯(caret)이 깜빡이게 된다.


pi@raspberrypi:~$_


여기서 pi는 현재 사용자의 이름, reapberrypi는 컴퓨터의 이름, 콜론 다음에는 현재 디렉토리, 그리고 $는 쉘 프롬프트(shell prompt)로서 사용자의 명령을 대기하고 있다는 것을 의미한다.


 다음 그림은 데비안 리눅스의 X윈도 터미널을 실행시킨 모습이다.



터미널을 종료하려면 exit 명령을 입력하거나 ctrl-D 키를 누르면 된다.


 캐럿(caret)을 이동시키는데 있어서 좌우 방향키는 한 칸씩 이동하고 [BACKSPACE]는 직전 문자를 하나씩 지우면서 이동, [DEL]키는 직후의 문자를 지움,   [HOME]은 행의 시작으로 , [END]는 행의 끝으로 이동시킨다. 이러한 키들은 문서를 편집하는 프로그램에서 보통 공통적으로 사용되므로 그리 혼동되지 않을 것이다. 다음 표는  터미널에서 사용할 수 있는 그 외의 키와 동작을 요약한 것이다.


키 혹은 키조합

기능

상하 방향키

Ctrl+R

과거에 입력했던 명령들을 입력 순으로 하나씩 불러온다.

과거 명령어 검색

[Shift]+[PageUp]

[Shift]+[PageDown]

터미널에서 화면 밖으로 넘어간 출력 내용을 다시 본다. ( shift 키와 같이 눌러야 한다는 점에 유의.)

Tab

명령어나 파일이름의 자동 완성.

Tab Tab

명령어나 파일이름의 자동 완성 후보 리스트를 표시

Ctrl+C

Ctrl+Z

프로그램 실행을 중단하고 프롬프트를 표시.

프로그램의 실행을 잠시 멈추고 빠져나감.

Ctrl+L

현재의 터미널 표시 내용을 초기화.

Ctrl+D, exit, logout

터미널 종료


 윈도우 OS의 조작에만 익숙해져 있다면 리눅스 터미널에서 명령을 입력하는 방식이 처음에는 조금 어려워 보일 수 있다. 리눅스에서도 GUI 환경을 이용하면 윈도우와 비슷하게 조작을 할 수는 있으나 리눅스 시스템을 다루는데 있어서 터미널 명령에 익숙해지는 과정은  거의 필수적이라고 할 수 있다. 그리고 조금만 익숙해 지면 이 방식이 더 효율적이라는 것을 알게 될 것이다.


리눅스 강좌 전체 목록 >>>


c{linux},n{ln0007}

Posted by 살레시오

댓글을 달아 주세요

 윈도우에서 폴더(folder)라고 부르는 파일의 저장 공간을 리눅스에서는 디렉토리(directory) 라고 하며 최상위 디렉토리를 루트(root) 라고 한다. 루트는 ‘/’ (forward slash) 기호로 표기되는데 이 기호는 하위 디렉토리를 나타내는 데에도 사용된다. (윈도우의 경우 폴더를 구분하는데 백워드 슬래쉬 ‘\’ 기호를 사용하므로 처음에는 혼동하기 쉽다.)


  • 디렉토리 (directory) - 파일 저장 공간

  • 루트(root) 디렉토리 - 리눅스 파일 시스템의 최상위 경로

루트 밑에 다양한 디렉토리들이 있는데 리눅스 OS라면 대체로 표준으로 정해진 것들이 있다. 몇 가지 예를 들면 다음 표와 같다.


표 1. 리눅스의 표준 디렉토리 예

/bin

모든 사용자가 실행할 수 있는 기본 명령어와 프로그램

/boot

리눅스 커널 이미지, 부트로더

/dev

시스템의 각종 물리적인 장치를 나타내는 특수 파일

/etc

시스템/x11의 구성 설정 파일 등

/home

사용자의 홈 디렉토리

/root

관리자 홈디렉토리

/lib

프로그램의 라이브러리

/proc

실행 중인 프로세스들과 OS에 대한 정보

/usr

사용자 명령어, 시스템 프로그램, 라이브러리 루틴

/sbin

부팅 관련 명령어

/tmp

임시 파일을 저장하는 공간(시스템 시동시 내용이 모두 삭제됨)

/var

메일, 시스템 로그 및 스풀파일, 웹서비스 관련


이중에서 /home 디렉토리는 윈도우의 “c:\사용자”와 유사한 디렉토리로서 만약 어떤 이용자의 아이디가 pi 라면 /home/pi 디렉토리에 이 사용자가 생성하는 파일들이 저장되게 된다.


리눅스에서는 데이터를 읽을 수 있는 자원 또는 데이터를 쓸 수 있는 대상은 모두 파일로 간주된다. 따라서 디스크에 저장된 전자 정보인 파일뿐만 아니라 입출력 장치(device)들도 모두 파일처럼 사용될 수 있다. 장치를 나타내는 특수 파일은 물리적인 장치에 대한 내부적인 표현으로 키보드(입력 자원, stdin), 모니터(출력 자원, stdout), 프린터 등이 있으며 모두 파일처럼 사용할 수 있다. 디렉토리 자체도 일종의 파일이며 다른 파일들을 조직하고 사용하는데 필요한 정보를 디스크와 같은 저장장치에 저장한 것이다.


리눅스 강좌 전체 목록 >>>


c{linux},n{ln0006}

Posted by 살레시오

댓글을 달아 주세요