Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2021.06.29] CS101 2-4강 #5

Open
JhyeonLee opened this issue Jun 29, 2021 · 6 comments
Open

[2021.06.29] CS101 2-4강 #5

JhyeonLee opened this issue Jun 29, 2021 · 6 comments

Comments

@JhyeonLee
Copy link

No description provided.

@JhyeonLee
Copy link
Author

JhyeonLee commented Jun 29, 2021

2강 Shell Tools and Scripting 요약

변수 정의

변수이름=값
주의! 띄어쓰기 X

변수 호출

$변수이름
"$변수이름" 이면 변수 값 반환
'$변수이름' 이면 문자열 자체 반환

$0 스크립트 이름
$1 ... $9 스크립트 인자
$@ 모든 인자
$# 인자 수
$? 이전 명령 반환
$$ 현재 스크립트에 대한 프로세스 식별 번호
!! 인수 포함 마지막 명령어 전체(sudo와 함께 사용해서 실패한 명령을 신속하게 다시 실행할 수 있다)
$_ 마지막 명령에서 나온 인수
STDERR 0일 때 정상

&& AND연산자
|| OR연산자
; 동일한 행에서 명령을 분리

마찬가지로
0 참인 경우 리턴값
1 거짓인 경우 리턴값
ls 파일과 디렉토리 이름 보여준다
ls *.sh sh확장자를 가진 파일 보여준다
ls project? project1이나 project2와 같이 project라는 문자열이 들아간 디렉토리와 디렉토리 안을 보여준다

foo foo1 foo2 foo10 bar 라는 파일이 있을때
rm foo? 는 foo1과 foo2를 삭제한다
rm foo * 는 bar를 뺀 모든 파일 삭제한다
{  } 공통 부분 문자열이 있을때 bash에 중괄호 사용해서 자동으로 확장

명령어 사용법 매뉴얼

ls -l
mv --help
mkdir --help

파일 나열

fd
find에 대한 간단하고 빠른 사용자 친화적 대안

locate
updatedb
cron

코드에서 찾기

grep
grep -C
grep -v
grep -C 5 일치하는 전 후 5줄 출력
grep -R 많은 파일을 빠르게 검색
grep -u 숨겨진 파일 무시하지 않는다

ack
ag
rg
history

history | grep find
history에서 find를 포함하는 명령 출력

Ctrl + R
history를 역방향으로 검색

디렉토리 탐색

ls -R
fasd
autojump
tree

3강 Editor(Vim)

normal mode: 파일 찾기, 파일에서 파일로 이동
insert mode: 텍스트 삽입 i
replace mode: 텍스트 교체 R
visual mode: 텍스트 블록 선택
v : visual(plain)
V : visual line
: visual block
command-line mode: 명력 실행용(파일 열기, 저장, 파일 닫기) i
;q 종료
:w 저장
:wq 저장 후 종료

가 불편하여 키 리바인딩하여 다른 키로 옮길 수 있다

Movement

h 왼쪽
j 아래쪽
k 위쪽
l 오른쪽
w 다음 단어
b 단어 시작점
e 단어 끝점
0 줄 시작점
$ 줄 끝점
H 스크린 가장 위쪽
M 스크린 중간
L 스크린 가장 아래쪽
Ctrl-u 스크롤 위로
Ctrl-d 스크롤 아래로
gg 파일의 시작점
G 파일의 마지막 점

찾기
f{character} 앞쪽으로 찾기
t{character} 뒤쪽으로 찾기
F{character}
T{character}

Selection

Visual Modes:
v: visual
V: visual line
Ctrl-v: visual block

Edit

i: insert mode
o: 아래로 insert
O: 위로 insert
d{motion} : 모션을 삭제
c{motioㅜ} : 모션 바꾸기
x: 삭제
u : 되돌아가기
y: 복사
p: 붙여넣기

Count

3w : 3개 단어 앞으로 가기
5j : 4줄 아래로 가기
7dw : 7개 단어 삭제

Modifier

i : 안(inner 또는 inside)
a : 주변(around)

ci(  괄호 안의 내용 변경
da' 작은 따음표 포함 주변 문자열 삭제

4강 Data Wrangling

@newminkyung
Copy link

newminkyung commented Jun 29, 2021

2강 :: Shell Tools and Scripting
3강 :: Vim
4강 :: Data Wrangling

보충 학습

파이프 개념

4강 실습을 진행하면서 파이프 개념이 헷갈려서 다시 정리

파이프(|): 어떤 프로세스의 출력이 그 다음 프로세스의 입력이 됨

cat /etc/passwd | grep mail
: /etc/passwd의 출력 결과가 grep 명령어로 입력되어 출력 결과에서 mail만 필터링
=> 주로 필터링, 가공에 사용되는 것 같음

sed 개념

예제를 통해 sed 명령어 이해

sed -n '주소범위' 파일명

  • p: 프린트, -n: sed로 작업한 부분만 -> p, -n은 주로 함께 사용
  • '주소범위': s/ = 치환할 때 사용, /g = 전체 행에서 수행, i = 대소문자 무시

subcommand 명령어 종류

subcommand 의미
s 치환
p 행 출력
d 행 삭제
플래그 의미
g 전체 행
w 파일에 작성

ssh 설치

  • ssh 설치 sudo apt-get install openssh-server
    • 오류 you need to be root to perform this command
      root 계정으로 변경 : su -

@Kongheechul
Copy link

2강 셸 툴과 스크립팅

  • 변수 설정: 여타 프로그래밍 언어와 같이 ‘a=b’로 설정이 가능하다.
    하지만 반드시 띄어쓰기를 하면 안된다.
    ex) ‘a=b’ ( o )
    ‘a = b’( x )
  • 여러 가지 기호 : || (or 연산자)
    &&(and 연산자)
    false는 항상 1 리턴 코드 반면 true는 0 리턴 코드
  • $ 표시 : $사용하면 $을 실행되고 난 결과 값을 함께 출력한다.
    ex) today is $(date). --> today is 2021.06.29.

3강 Editors (vim)

  • vim을 키는법 : vim 파일명 -> vim창으로 넘어가진다.
  • vim 모드 : Normal mode : 파일을 전체적으로 흝어보는 모드. 가장 많이 사용된다.
    --> 실행 방법 : 들어오면 normal 모드이고 다른 모드일때는 esc를 활용.
    insert mode : 파일에 글자를 넣기 위해 사용 되는 모드
    --> 실행 방법 : i를 사용하여 모드 진입.
    visual mode : 드래그 하기 위한 모드. 복붙하기 유용할 것같다.
    --> 실행 방법: v를 사용하여 모드 진입.
  • vim 끄는법 : - :q : 창 나가기.
    - :w : 저장하기.
    - :wq : 저장 후 나가기.
    - :e 파일명 : 파일을 수정하기 위해 열기.
  • 몇가지 vim 안에서의 명령어 : - hjkl : (왼쪽,밑,위,오른쪽)
    - w,b,e : 다음 문자로 이동,전 문자로 이동,문자의 끝으 로 이동.
    - /글자 : 글자를 서치.
    - o,O : 글 밑에 삽입모드, 글 위에 삽입모드.
    - 숫자x :숫자 수 만큼 글자 삭제 .
    - u : undo 즉 뒤로가기..?
    - da() : 괄호 안 글자 삭제.
    - di() : 괄호까지 삭제.
    - dw : 다음 단어 첫글자 전까지 삭제.
    - dd : 줄 삭제.
    - yw : 단어 복사.
    - yy : 행 복사.
    - p : 복사된 것 붙여넣기.
    - . : 이전에 쓴 글씨 복사.

@joo-prog
Copy link

joo-prog commented Jun 29, 2021

@JYeonKim
Copy link

강의 정리 및 요약

2강 셸 툴과 스크립팅
3강 Editors(Vim)
4강 Data Wrangling

우분투 ssh 설치 및 오류 정리
4강 실습을 위해 우분투에 ssh를 설치하고 실습 코드를 실행해보는 과정에서 예상치 못한 오류를 만나 애를 먹었음.

  • root 비밀번호 설정
    처음에 su를 입력하여 root 전환할 경우 비밀번호를 설정하지 않았음에도 묻는 경우가 있음. 비밀번호가 없는 상태에서 비밀번호를 묻는 것이기 때문에 Autehntication failure라고 에러 발생-> sudo passwd를 통해 root암호 설정
  • ssh server 설치 및 설정
    ssh를 사용하기 위해서는 install뿐만 아니라 설정해줘야 할 것도 많음.
  1. 터미널에 apt install openssh-server로 ssh를 설치 (반드시 root 계정으로 진행 - su -를 입력해 계정 변환 가능)
  2. ubuntu의 경우 ufw allow 22/tcp를 입력해 방화벽에서 tcp 포트 22번을 허용 시키기.
  • Error Permission denied (publickey, password) 가 발생한 경우
    분명 root 비밀번호도 설정하고 ssh를 설치하는 과정에서 문제가 없다가 실행시킬때 root 비밀번호 입력시 Permission denied가 뜨는 경우가 있다.
  1. sudo gedit /etc/ssh/ssh_config 를 입력하여 텍스트 편집 프로그램 실행
  2. PermitRootLogin prohibit-password 부분을 PermitRootLogin yes로 변경, PasswordAutehntication no 부분을 PasswordAuthentication yes로 변경, UseLogin no 부분을 UseLogin yes로 변경 ( 변경하다보면 찾은 부분이 #로 시작하는 경우가 있는데 그 때는 yes로 변경 후에 반드시 코드 앞의 #를 지워줘야 함 - 그래야 적용된다)
  3. 텍스트 편집 후 save 버튼을 눌러 저장. 프로그램 창의 x를 눌러 종료하기.
  4. sudo service ssh restart를 통해 ssh를 재시작하면 오류 해결
    이렇게 진행한 후 4강 코드를 입력하면 제대로 작동되는 것을 볼 수 있다.
    참고 - SSH 설치, PW오류 관련

@hyeon9698
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants