2. CLI 명령어

오대근·2022년 9월 5일
0

echo aa: 뒤이어 입력한 내용(aa)을 출력

pwd: 현재 경로 출력

ls: list, 현재 디렉토리 내의 모든 파일 또는 하위 디렉토리의 목록을 모두 출력(GUI 환경에서의 폴더 더블클릭 해서 내용물 보는 것과 같음)

ls -al: -로 세부 옵션 설정 가능, a(all)은 숨김파일까지 모두 출력, l(long format)은 자세히 정보를 출력.

터미널에서 숨김파일은 파일/폴더명 앞에 . 이 붙는다.

cd: Change directory

.: 그냥 그 폴더

..: 그 폴더의 상위폴더

cd ..: 상위폴더로 이동

cd ~: 홈디렉토리로 이동

mkdir new_folder: 뉴폴더 새로 만들기

rm -r new_folder: 뉴폴더 지우기, -r(recursive, 반복적)은 반복적으로 폴더 안의 세부내용물까지 다 지우란말

mv new_folder ~: 뉴폴더를 홈디렉토리로 이동

cp -r new_folder ..: 뉴폴더를 상위폴더에 복사, 세부 내용까지 다(-r)

cat: 하나 이상의 텍스트 파일을 순서대로 출력

sort: 입력된 텍스트를 줄 단위로 정렬


그냥 이런게 있구나 정도로만 기억하기

/home: 사용자별 홈 디렉토리들이 있는 곳
/root: 최고 관리자 계정의 홈 디렉토리
/mnt: 저장장치(HDD, SSD)가 붙는 위치
/media: 이동식 미디어(USB 드라이브)가 붙는 위치
/tmp: 재부팅 시 삭제될 임시 파일들을 저장하는 폴더
/dev: 컴퓨터에 연결된 하드웨어 및 가상 기기(device)들을 가리키는 파일들
/proc: 현재 실행 중인 프로세스들을 가리키는 파일들
/etc: 각종 설정 파일들
/bin: 실행 가능한 프로그램(binary)들
/sbin: 시스템 관리용 프로그램들
/usr: 다중 사용자 모드에서 사용 가능한 파일 및 프로그램들 (root 계정만 있는 단일 사용자 모드에서는 사용 불가)
/var: 캐시, 로그 등 시스템 구동 간 계속 내용이 바뀌는 파일들


apt-get: 우분투에서 패키지를 관리하기 위해 주로 쓰이는 명령어
sudo: apt-get 앞에 붙는 명령어(substitute user do"(다른 사용자의 권한으로 실행))

apt list --installed, dpkg -l 등: 리스트를 확인하는 명령어

grep: 입력으로 전달된 내용에서 특정 문자열을 포함한 라인만 선택해서 출력. 파이프(|)를 통해 다른 명령문 실행결과와 결합해서 사용할 때 특히 유용.
'grep (패키지명)' 을 입력해주면 검색하는 단어를 포함하는 패키지만 출력됨. 보통 아주 많은 패키지가 설치되어 있기 내가 원하는 걸 찾기 힘듦. 이럴 때 grep 옵션을 사용하면 편리하게 원하는 패키지만 검색해 볼 수 있음.

sudo apt-get update: 패키지 인덱스 정보를 업데이트

sudo apt-get upgrade: 모든 패키지에 대해, 새롭게 업데이트 된 버전이 있다면 전부 업그레이드를 하는 명령어. 패키지를 최신 버전으로 업그레이드 하는 것은 언제나 기존 패키지들과의 충돌을 야기하기 때문에 주의해야함.


가상환경?: 프로젝트 별로 독립된 공간을 만들어주는 기능

가상환경은 왜 필요한가?: 프로젝트마다 특정 패키지의 서로 다른 버전이 필요하거나 패키지 간 충돌이 생길 위험이 있을 때, 각 프로젝트를 독립된 공간에서 사용할 수 있도록 하기 위해. 충돌이 생기기 전에, 애초에 프로젝트 간 공간을 나누어 놓겠다는 의도

패키지(package): 특정 기능을 위한 여러 함수 또는 클래스를 담고 있는 보따리로서, 라이브러리(library), 모듈(module)과 비슷한 개념 (다만 모듈은 조금 더 작은 개념으로 쓰기도 함)

파이썬 가상환경을 관리하는 툴은 pyenv, pip, anaconda 등


기타 명령어 모음

필수(❤️) 및 권장(👍) 명령어들은 한번씩 실행하거나, 사용법을 검색해 보는 것을 추천합니다.

셸 환경
👍history: 셸 명령어 이력을 출력합니다.
👍man: 프로그램의 매뉴얼 페이지를 출력합니다.
👌which: 명령어의 전체 경로를 출력합니다.
👌export: 셸 변수나 함수를 현재 환경으로 내보냅니다.
👌env: 명령어가 제공된다면 해당 명령어를 새로운 환경에서 실행합니다. 명령어가 제공되지 않은 경우 현재 환경의 정보를 출력합니다.

텍스트 처리
❤️echo: 뒤이어 입력한 내용을 출력합니다.
❤️cat: 하나 이상의 텍스트 파일을 순서대로 출력합니다.
👍sort: 입력된 텍스트를 줄 단위로 정렬합니다.
👍less: 텍스트 파일의 내용을 자유롭게 조회하고 검색합니다.
👍head: 텍스트 파일의 앞 몇 줄만 출력합니다.
👍tail: 텍스트 파일의 마지막 몇 줄만 출력합니다.
👍cut: 텍스트를 구분자(delimiter)에 따라 나눕니다.
👍uniq: 텍스트 중 중복 값들을 제거합니다.
👍grep: 정규식을 활용해 텍스트를 검색합니다.
👍wc: 텍스트를 단어, 줄, 문자 등 단위로 셉니다.
👌comm: 텍스트 파일을 비교합니다.
👌zcat: 압축된 텍스트 파일을 출력합니다.
👌sed: 정규식을 활용해 텍스트를 변형합니다.
👌awk: 텍스트를 스캔하고 변형합니다.

파일 제어 및 이동
❤️ls: 현재 디렉토리 내의 파일 및 폴더들을 출력합니다.
❤️cd: Change Directory의 약자로, 뒤에 따라오는 폴더로 내가 있는 셸의 현재 위치를 이동시킵니다.
❤️cp: 파일을 복사합니다.
❤️mv: 파일을 이동합니다.
❤️rm: 파일을 삭제합니다. 폴더를 삭제하기 위해서는 -r (recursive) 옵션을, 빈 폴더가 아니더라도 내부까지 삭제하려면 -f (force) 옵션을 함께 사용해야 합니다.
👍chown: 대상 파일의 소유 사용자와 그룹을 변경합니다.
👍chmod: 대상 파일의 권한을 변경합니다.
👍find: 파일을 찾습니다.
👍pwd: Present Working Directory의 약자입니다. 현재 내가 >위치한 디렉토리 위치를 출력합니다.
👌ln: 파일에 대한 링크를 생성합니다.
👌touch: 파일 접근 및 수정 시간을 변경합니다. 빈 파일을 만드는데도 사용할 수 있습니다.
👌tar: 파일 및 폴더를 하나의 아카이브 파일로 통합하고 압축합니다.
👌mount: 새로운 저장장치를 파일시스템으로서 추가합니다.
👌rename: 여러 파일들의 이름을 규칙에 따라 한번에 변경합니다.
👌df: 파일시스템의 남은 용량을 표시합니다.

시스템 및 프로세스 제어
❤️sudo: 이어지는 명령을 최고 관리자 권한으로 실행합니다.
❤️apt-get: APT 패키지 관리자를 통해 공인 저장소에서 패 >키지를 가져다 설치하거나 제거합니다.
👍ps: 현재 프로세스 목록을 출력합니다.
👍kill: PID에 해당하는 프로세스에 시그널을 보냅니다.
👌fg: 배경에서 실행되는 작업을 전경(foreground)으로 가져옵니다.
👌bg: 작업을 배경(backgound)으로 보냅니다.
👌jobs: 전경 및 배경 작업의 목록을 표시합니다.

기타
❤️ssh: 원격으로 셸에 접속합니다.
👍tmux: 여러 개의 셸 세션을 관리하고, 터미널 접속이 끊어지더라도 셸 세션을 유지합니다.
👍watch: 이어지는 명령을 주기적으로 실행하여 표시합니다.
👍curl: 주어진 URL과 통신합니다.
👍wget: 네트워크를 통해 파일을 다운로드합니다.
👍scp: SSH를 통해 원격으로 파일을 전송합니다.
👌ssh-keygen: SSH 공개키 비밀키 쌍을 생성합니다.
👌ssh-copy: SSH 공개키를 해당 서버에 등록합니다.
👌rsync: 원격으로 파일을 동기화합니다.
👌xarg: 명령어를 구성하여 실행합니다. 이전 명령에서 인자를 넘겨받아 실행하거나, 다중 프로세스를 사용하여 명령을 병렬로 실행하는 등의 작업이 가능합니다.
👌cron: 주기적으로 실행될 명령을 등록합니다.
👌htop: 프로세스 목록 및 자원 사용량을 시각적으로 표시합니다.

profile
neuro.deeplearning

0개의 댓글