내용 수정 명령 키
r | 커서가 위치한 글자를 다른 글자로 수정 |
cw, #cw | 커서 위치부터 현재 단어 끝까지 수정. #에는 수정할 단어의 수 지정. #cw는 커서 위치로부터 #개의 단어를 수정한다는 뜻. |
s, #s | 커서 위치부터 esc키 입력할 때까지 수정. #에는 수정할 글자의 수 지정 |
cc | 커서가 위치한 행의 내용 모두 수정. |
C | 커서 위치부터 행의 끝까지 수정 |
내용 삭제 명령 키
x, #x | 커서 위치의 글자 삭제. # : 삭제할 글자 수 |
dw, #dw | 커서 위치의 단어 삭제. # : 삭제할 단어 수 |
dd, #dd | 커서 위치의 행 삭제. # : 삭제할 행의 수 |
D | 커서 위치부터 행의 끝까지 삭제. |
이전 명령 취소 키
u | 명령 취소 |
U | 해당 행에서 한 모든 명령 취소 |
:e! | 마지막으로 저장한 내용 이후의 것 버리고 새로 작업. |
복붙잘
yy, #yy | 커서가 위치한 행 복사. # : 복사할 행의 수 지정 |
p | 커서가 위치한 행의 아래쪽에 붙임 |
P | 커서가 위치한 행의 위쪽에 붙임 |
dd, #dd | 커서가 위치한 행 잘라두기. 삭제와 같은 기능 # : 잘라둘 행의 수 지정. |
검색 명령 키
/문자열 | 문자열 아래 방향으로 검색 |
?문자열 | 문자열 위 방향으로 검색 |
n | 원래 찾던 방향으로 다음 문자열 검색 |
N | 반대 방향으로 다음 문자열 검색 |
파일 관련 명령 키
:r 파일 | 지정한 파일을 읽어들여 현재 커서 위치에 삽입 |
:e 파일 | 지정한 파일로 전환(기존 파일 :w로 저장한 뒤에 실행) |
:n | vi 시작 시 여러파일 지정했을 경우 다음 파일로 작업 이동. |
저장하기 |
:w |
종료하기 | :q |
저장하고 종료하기 | :wq |
쓰기 금지임에도 강제로 쓰고 종료하기 | :wq! |
- chsh (change shell) : 사용자 로그인 셸 바꿈. 바꿀 수 있는 셸은 /etc/shells 파일에 지정되어 있음. *바꾸려는 셸은 절대 경로로 지정해주기.
stud2222@com-B70EV-AP5VBGE:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
- echo : 화면에 한 줄의 문자열을 출력. -n : 마지막에 줄바꿈 X
- printf : 자료를 형식화하여 화면에 출력. %d, \n 등 C언어 printf 함수의 형식 지정.
- ls * (현재 디렉터리의 모든 파일과 서브 디렉터리 나열. 서브 디렉터리 내용 또한 출력한다.)
examples.desktop exec.txt test test.out week.out
temp:
file1 lnfile1 sLnfile1.sl temp temp2 test tmp1
temp2:
tmp1:
tmp2:
tmp3:
week3:
exec.txt exec2_save.txt exec3_save.txt poetry
exec2.txt exec3.txt exec_save.txt
week5:
f.out file.txt file02.txt ls.out temp u.dat u.out un.out week05
week6:
mask.txt mask2.txt mask3.txt test.txt test2.txt
week7:
tmp.out
- cp * /tmp : 현재 디렉터리의 모든 파일을 /tmp 디렉터리 아래로 복사.
- ? : 길이가 1인 임의의 한 문자
ex) ls t?.txt : t 다음에 임의의 한 문자가 오고 파일의 확장자가 txt인 모든 파일의 이름 출력.
- [ ] : 괄호 안에 포함된 문자 중 하나
ex) ls [0-9] * : 파일명이 숫자로 시작하는 모든 파일의 목록 출력.
ls -l tmp[135].txt : tmp 다음에 1,3,5 중에서 하나가 오고 파일의 확장자가 txt인 모든 파일의 이름 출력
~ : 디렉터리 나타내는 특수문자. ~만 사용하면 현재 사용 중인 사용자의 홈 디렉터리 표시.
다른 사용자의 로그인 ID와 함께 사용하면 (~ 로그인 ID) 해당 사용자의 홈 디렉터리 표시
- (=cd명령) : 디렉터리 이전하기 직전의 작업 디렉터리 표시. (cd - : 이전 작업 디렉터리로 이동)
ex) cp *.txt~/ch3 : 확장자가 txt인 모든 파일을 사용자의 홈 디렉터리 아래 ch3 디렉터리로 복사.
cp ~user/linux.txt : user라는 사용자의 홈 디렉터리 아래에서 linux.txt라는 파일을 찾아서 복사
stud2222@com-B70EV-AP5VBGE:~/tmp1$ ls -l
total 0
stud2222@com-B70EV-AP5VBGE:~/tmp1$ cd
stud2222@com-B70EV-AP5VBGE:~$ cd -
/home/stud2222/tmp1
stud2222@com-B70EV-AP5VBGE:~/tmp1$
- 쌍반점( ; ) ; 왼쪽부터 차례대로 명령 실행
stud2222@com-B70EV-AP5VBGE:~$ date;ls;pwd
2022. 04. 20. (수) 23:12:50 KST
examples.desktop temp test tmp1 tmp3 week3 week6
exec.txt temp2 test.out tmp2 week.out week5 week7
/home/stud2222 (현재 작업 디렉터리의 절대 경로)
- 파이프( | ) : 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달
ls -al / |more : ls -al 명령의 결과가 more 명령의 입력으로 전달되어 페이지 단위로 출력.
- ' '와 " "의 차이
' ' : 모든 특수문자 vs " " : $,``, \ 제외한 모든 특수문자 일반 문자로 간주하여 처리함
stud2222@com-B70EV-AP5VBGE:~$ echo '$SHELL'
$SHELL
stud2222@com-B70EV-AP5VBGE:~$ echo "$SHELL"
/bin/bash
- ` ` : 이 특수문자로 감싸인 문자열을 명령으로 해석, 명령의 실행 결과로 전환함.
stud2222@com-B70EV-AP5VBGE:~$ echo "Today is `date`"
Today is 2022. 04. 20. (수) 23:17:45 KST
* ls /usr/bin/`uname -m` : uname -m 명령의 실행 결과를 문자열로 바꾸어 파일명 사용.
- \ : 특수문자 바로 앞에 사용되며 해당 특수문자의 효과 없애고 일반 문자처럼 처리.
stud2222@com-B70EV-AP5VBGE:~$ ls -l t\*
ls: cannot access 't*': No such file or directory
stud2222@com-B70EV-AP5VBGE:~$ ls -l t*
-rw-r--r-- 1 stud2222 linux2022 0 3월 17 11:56 test
-rw-r--r-- 1 stud2222 linux2022 0 4월 15 10:19 test.out
temp:
total 16
-rw-r--r-- 2 stud2222 linux2022 0 3월 18 11:58 file1
-rw-r--r-- 2 stud2222 linux2022 0 3월 18 11:58 lnfile1
lrwxrwxrwx 1 stud2222 linux2022 5 3월 18 12:05 sLnfile1.sl -> file1
-rw-r--r-- 2 stud2222 linux2022 232 3월 17 17:57 temp
drwxr-xr-x 2 stud2222 linux2022 4096 3월 17 18:17 temp2
drwxr-xr-x 2 stud2222 linux2022 4096 3월 17 18:20 test
drwxr-xr-x 2 stud2222 linux2022 4096 3월 18 12:21 tmp1
temp2:
total 0
tmp1:
total 0
tmp2:
total 0
tmp3:
total 0
stud2222@com-B70EV-AP5VBGE:~$ echo \$SHELL (= echo '$SHELL')
$SHELL
- 특수문자 > , < , >> : 입출력의 방향 바꿈
stud2222@com-B70EV-AP5VBGE:~$ cd tmp
stud2222@com-B70EV-AP5VBGE:~/tmp$ ls -l > lsfile
stud2222@com-B70EV-AP5VBGE:~/tmp$ ls
lsfile res
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat lsfile
total 4
-rw-r--r-- 1 stud2222 linux2022 0 4월 20 23:29 lsfile
-rw-r--r-- 1 stud2222 linux2022 61 4월 20 23:26 res
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat res
total 0
-rw-r--r-- 1 stud2222 linux2022 0 4월 20 23:26 res
기존에 있던 파일 res에는 특수문자 >을 사용해서 저장할 수 없고 기존에 없었던 파일을 지정해야함.
- 파일 디스크립터
파일 관리 위해서 붙이는 일련 번호. 입출력 장치 변경 시 파일 디스크립터 사용함.
리다이렉션 : 표준 입출력 장치를 파일로 바꾸는 것.
0 | stdin(standard in) | 명령 표준 입력 |
1 | stdout(standard out) | 명령 표준 출력 |
2 | stderr(standard error) | 명령 표준 오류 |
- 출력 리다이렉션
> : 기존 파일 내용 삭제하고 새로 결과 저장
>> : 기존 파일 내용 뒤에 결과 추가.
stud2222@com-B70EV-AP5VBGE:~/tmp$ date>res
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat res
2022. 04. 20. (수) 23:38:05 KST
stud2222@com-B70EV-AP5VBGE:~/tmp$ uname -m>>res
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat res
2022. 04. 20. (수) 23:38:05 KST
x86_64
stud2222@com-B70EV-AP5VBGE:~/tmp$ ^C
stud2222@com-B70EV-AP5VBGE:~/tmp$ man uname
stud2222@com-B70EV-AP5VBGE:~/tmp$ echo "uname -n"
uname -n
stud2222@com-B70EV-AP5VBGE:~/tmp$ echo "`uname -n`"
com-B70EV-AP5VBGE
stud2222@com-B70EV-AP5VBGE:~/tmp$ uname -n>lsfile
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat lsfile
com-B70EV-AP5VBGE
- cat 명령으로 파일 생성하기
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat > catfile
Midterm exam
I want to sleep
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat catfile
Midterm exam
I want to sleep
- 표준출력 리다이렉션 : 오류 메시지는 리다이렉션 안됨
stud2222@com-B70EV-AP5VBGE:~/tmp$ ls > ls.out
stud2222@com-B70EV-AP5VBGE:~/tmp$ ls /abc > ls.err
ls: cannot access '/abc': No such file or directory
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat ls.err
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat ls.out
catfile
ls.out
lsfile
lsfile.out
res
- 오류 리다이렉션에서는 파일 디스크립터 번호 생략 불가.
stud2222@com-B70EV-AP5VBGE:~$ ls /abc 2> ls.err
stud2222@com-B70EV-AP5VBGE:~$ cat ls.err
ls: cannot access '/abc': No such file or directory
stud2222@com-B70EV-AP5VBGE:~$
- 입력 리다이렉션
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat catfile
Midterm exam
I want to sleep
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat < catfile
Midterm exam
I want to sleep
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat 0< catfile
Midterm exam
I want to sleep
정리!!
> | 표준 출력 파일에 저장 | ; | shell 명령어 순서대로 구분하여 나열하는 분리자 |
>> | 표준 출력을 파일에 추가 저장 | & | 명령어를 background로 동작시킬 때 실행 |
< | 표준입력 파일에서 읽기 | || | 이전 명령이 실패하면 실행하도록 하는 조건부 실행 |
<< word | word 바로 전줄까지를 임시 파일에 저장한 후 이 파일을 표준입력으로 읽기 | && | 이전의 명령이 성공하면 실행하도록 하는 조건부 실행 |
| | 앞 프로세스의 출력을 다음 프로세스의 입력으로 전달 | (...) | 명령어들을 하나의 그룹으로 처리 |
* | 0개 이상의 문자와 일치하는 파일들로 치환 | $ | Shell 변수 값을 적용 |
? | 단일 문자와 일치하는 파일들 치환 | ! | 히스토리 치환 |
[...] | [ ] 괄호 안의 어떤 문자와도 일치하는 파일들로 치환. 대쉬바로 구간 표현 | \ | Shell의 메타문자 앞에 붙어서 메타 문자의 특수 의미 제거 |
'...' | 따옴표 구간을 하나로 처리(특수문자 처리 없음) | "..." | 따옴표 구간을 하나로 처리($, `, \만 특수문자 처리) |
`command` $(command) |
command의 출력에 의해서 대치 | # | 그줄 끝까지 설명문으로 간주 |
~ | 홈 디렉토리 |
vi $(grep -l debug *.c)
![](https://blog.kakaocdn.net/dn/drvHK5/btrzZ4Anr8r/V0F7C9kBqPXemhkhYzIlu1/img.png)
echo there are `who | wc -l` users on the system
stud2222@com-B70EV-AP5VBGE:~$ echo there are `who | wc -l` users on the system
there are 2 users on the system
등록된 사용자 아이디 목록 출력 : cat /etc/passwd | awk -F: '{print $1}'|sort
whoami : 사용자 아이디 출력
pwd : 홈디렉토리 출력
셸 변수 : 현재 셸에서만 사용 가능하고 서브 셸로는 전달되지 않음. (=지역변수)
환경 변수 : 현재 셸 뿐만 아니라 서브 셸로도 전달 (전역변수)
주요 셸 환경변수
HISTSIZE(히스토리사이즈) | 히스토리 저장 크기 | PATH | 명령 탐색 경로 |
HOME | 사용자 홈 디렉토리 절대 경로 | PWD | 작업 디렉터리 절대 경로 |
LANG(language) | 사용하는 언어 | SHELL | 로그인 셸 |
LOGNAME(로그인네임) | 사용자 계정 이름 |
변수 이름 앞에 $ 붙여서 변수 값 출력.
stud2222@com-B70EV-AP5VBGE:~$ export SOME=test
stud2222@com-B70EV-AP5VBGE:~$ env | grep SOME
SOME=test
export : 지정한 셸 변수를 환경 변수로 바꾼다.
export -n을 사용하면 환경 변수를 다시 셸 변수로 바꿀 수 있다.
변수 해제하기 : unset 변수
!! : 바로 직전에 실행한 명령을 재실행
!번호 : 히스토리에서 해당 번호의 명령 재실행
!문자열 : 히스토리에서 해당 문자열로 시작하는 마지막 명령 재실행
환경 설정 파일
사용자가 로그인할 때마다 자동으로 실행되는 명령 저장한 것.
시스템 환경 설정 파일과 사용자 환경 설정 파일이 있음.
셸마다 다른 이름의 파일 사용.
/etc/profile | 본 셸이나.. 모든 셸에 공통으로 적용되는 .profile 파일 배시 셸의 경우 /etc/bash.bashrc 파일을 실행 배시 셸 아닌 경우 프롬프트 #나 $으로 설정 /etc/profiled.d/*.sh 파일 실행 |
/etc/bash.bashrc | 시스템 공통 적용되는 .bashrc파일 기본 프롬프트 설정 sudo 명령과 관련된 힌트 설정 |
/etc/profile.d/*.sh | 언어나 명령 별로 각각 필요한 환경 설정 필요시 설정 파일 추가 |
배시 셸의 사용자 환경 설정 파일
~/.profile | 경로 추가 등 사용자가 정의하는 환경 설정. .bashrc 파일이 있으면 실행 |
~./bashrc | 히스토리 크기 설정. 기본 에일리어스나 함수 설정함. |
~/.bash_aliases | 사용자가 정의한 에일리어스를 별도 파일로 저장 |
~/.bash_logout | 로그아웃 시 실행할 필요가 있는 함수 등을 설정. |
ex) cat .profile
*
more : 화면 출력 화면 단위로 제어 : 텍스트 파일을 읽는데 있어 한 페이지씩 차례로 확인. 긴 파일을 확인할 때 유용하게 사용이 가능하다. 위->아래 단방향 이동만 가능.
less : more의 변형. 방향키 사용 가능. 파일의 특정 위치에 표식 -> 이동 시켜주는 기능 .
head : 파일의 앞부분 보여주는 명령어
tail : 파일의 뒷부분 보여주는 명령어
In : 링크 파일 생성 명령어. *심볼릭 : -s 옵션 추가사용.
touch : 파일의 날짜와 시간을 수정하는 명령어. 아무 옵션 없이 사용하면 0 byte 파일 생성.
grep : 출력 문자열 중에서 원하는 단어나 글자가 들어있는 라인만 출력하고자 할 때 사용한다.
whereis : 명령어의 실행파일 위치, 소스 위치, man 페이지 파일 위치
which : 명령어 위치
stud2222@com-B70EV-AP5VBGE:~$ which ls
/bin/ls
stud2222@com-B70EV-AP5VBGE:~$ which date
/bin/date
stud2222@com-B70EV-AP5VBGE:~$ which man
/usr/bin/man
stud2222@com-B70EV-AP5VBGE:~$ which cat
/bin/cat
uname : 시스템 정보 출력하는 명령어
stud2222@com-B70EV-AP5VBGE:~$ uname -a
Linux com-B70EV-AP5VBGE 5.4.0-107-generic #121-Ubuntu SMP Thu Mar 24 16:04:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
export : 지정한 셸 변수를 환경 변수로 바꾼다.
env : 환경 변수만 출력
wc(word count) : 주어지는 파일 또는 표준 입력의 바이트, 문자, 단어 그리고 줄(라인) 수를 출력해주는 명령어
od : 바이너리 파일을 8진수로 dump하는 명령어
stud2222@com-B70EV-AP5VBGE:~/week3$ cat poetry
Dreams
Hold fast to dreams
For if dreams die
Life is a broken-winged bird
That cannot fly
Hold fast to dreams
For when dreams go
Life is a barren field
Frozen with snow.
By. Langston HugheS
stud2222@com-B70EV-AP5VBGE:~/week3$ od poetry
0000000 071104 060545 071555 044012 066157 020144 060546 072163
0000020 072040 020157 071144 060545 071555 043012 071157 064440
0000040 020146 071144 060545 071555 062040 062551 046012 063151
0000060 020145 071551 060440 061040 067562 062553 026556 064567
0000100 063556 062145 061040 071151 005144 064124 072141 061440
0000120 067141 067556 020164 066146 005171 044012 066157 020144
0000140 060546 072163 072040 020157 071144 060545 071555 043012
0000160 071157 073440 062550 020156 071144 060545 071555 063440
0000200 005157 064514 062546 064440 020163 020141 060542 071162
0000220 067145 063040 062551 062154 043012 067562 062572 020156
0000240 064567 064164 071440 067556 027167 005012 074502 020056
0000260 060514 063556 072163 067157 044040 063565 062550 020123
0000300 000012
0000301
who, whoami : 현재 시스템에 로그인 되어있는 사용자 출력 / 현재 로그인한 사용자 이름.(내가)
stud2222@com-B70EV-AP5VBGE:~$ who
com :0 2022-04-18 14:49 (:0)
stud2222 pts/1 2022-04-21 08:12 (203.252.66.179)
stud2222@com-B70EV-AP5VBGE:~$ whoami
stud2222
writer, wall, mesg(메세지) : (write) 해당 사용자에게 메시지 전달 / 모든 로그인된 사용자들에게 터미널을 통해서 명령 전달받는 명령어 / write를 통해서 들어오는 메시지 수신여부 확인 및 제어.
last, lastlog : show a listing of last logged in users(로그인과 재부팅 로그 확인) / 전체 사용자의 마지막 접속 기록만 출력
sort
stud2222@com-B70EV-AP5VBGE:~/tmp$ touch sort.txt
stud2222@com-B70EV-AP5VBGE:~/tmp$ vi sort.txt
stud2222@com-B70EV-AP5VBGE:~/tmp$ sort sort.txt
a
b
c
d
e
f
stud2222@com-B70EV-AP5VBGE:~/tmp$ ls
catfile ls.err ls.out lsfile lsfile.out res sort.txt
stud2222@com-B70EV-AP5VBGE:~/tmp$ cat sort.txt
b
c
d
e
a
f
'Major > Linux(Ubuntu)' 카테고리의 다른 글
Overwrite script (0) | 2022.06.06 |
---|---|
프로세스 (0) | 2022.04.23 |
파일의 속성, 접근 권한 (0) | 2022.04.05 |
셸,입출력 리다이렉션,셀 변수,환경변수,프롬프트 + 실습기록 (0) | 2022.04.05 |
Directory & file (0) | 2022.03.13 |