OS/Linux_ubuntu

[OS][Linux] Basic command (리눅스 기본 명령어)

눈곱만큼도모름 2023. 7. 26. 11:02
728x90
반응형

◎ Terminal 기초 command

  • Ctrl + C: 현재 실행 중인 프로세스를 종료합니다.
  • Ctrl + D: 현재 터미널 세션을 종료합니다.
  • Ctrl + Z: 현재 실행 중인 프로세스를 일시 중지합니다.
  • Ctrl + L: 터미널 화면을 지웁니다.
  • Ctrl + A: 커서를 현재 줄의 맨 앞으로 이동시킵니다.
  • Ctrl + E: 커서를 현재 줄의 맨 끝으로 이동시킵니다.
  • Ctrl + U: 현재 줄에서 커서 앞에 있는 텍스트를 삭제합니

 

◎ Shell 기초 command

- shell 명령어 기호 의미

 $ - 일반사용자    
# - 관리자  su - root

 기본정보 확인

  ▽ ' 더보기' 를 눌러서 펼치시면 기본정보 확인에 대한 코드를 보실 수 있습니다.

더보기

◦ 리눅스 배포판 버전 확인

cat /etc/*release 리눅스 배포판 버전 확인
~$ cat /etc/*release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

  여러 정보 확인

  1. uname: 시스템의 기본 정보를 확인하는 명령어에요.
    • uname -a: 시스템의 모든 정보를 확인할 수 있어요.
    • uname -s: 커널 이름을 확인할 수 있어요.
    • uname -r: 커널 버전을 확인할 수 있어요.
    • uname -v: 커널의 빌드 버전을 확인할 수 있어요.
    • uname -m: 시스템의 아키텍처를 확인할 수 있어요.
    • uname -p: 프로세서 타입을 확인할 수 있어요.
  2. lsb_release: Linux Standard Base(LSB) 정보를 확인하는 명령어에요.
    • lsb_release -a: 시스템의 LSB 정보를 모두 확인할 수 있어요.
  3. cat /etc/os-release: OS 릴리즈 파일을 확인하여 시스템 정보를 확인할 수 있어요.
  4. hostnamectl: 호스트 이름과 시스템 정보를 확인하는 명령어에요.
  5. df: 디스크 사용량을 확인하는 명령어에요.
    • df -h: 인간이 읽기 쉬운 포맷으로 디스크 사용량을 확인할 수 있어요.
  6. free: 메모리 사용량을 확인하는 명령어에요.
    • free -h: 인간이 읽기 쉬운 포맷으로 메모리 사용량을 확인할 수 있어요.
  7. top 또는 htop: 현재 실행 중인 프로세스와 시스템 리소스 사용량을 확인
  1. CPU 정보 확인:
    • lscpu: CPU에 대한 자세한 정보를 출력합니다.
    • cat /proc/cpuinfo: CPU 정보를 출력합니다.
    • nproc: CPU 코어 수를 출력합니다.
  2. 그래픽 카드 정보 확인:
    • lspci | grep VGA: 시스템에 설치된 그래픽 카드 정보를 출력합니다.
  3. RAM 정보 확인:
    • free: 메모리 사용량과 여유 용량을 출력합니다.
    • cat /proc/meminfo: 메모리 정보를 출력합니다.
  4. 하드 드라이브 용량 확인:
    • df: 디스크 사용량과 여유 용량을 출력합니다.
    • df -h: 인간이 읽기 쉬운 포맷으로 디스크 사용량을 확인합니다.
    • lsblk: 하드 드라이브와 파티션의 정보를 출력합니다.
    • fdisk -l: 하드 드라이브와 파티션의 자세한 정보를 출력합니다. (root 권한이 필요합니다)

  커널 정보확인

uname -a 커널 버젼 확인
~$ uname -a

Linux project-feac44a7-211d-4f25-bf31-26e6e0acf6c5 5.13.0-1033-gcp #40~20.04.1-Ubuntu SMP Tue Jun 14 00:44:12 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Shell 

-현재 사용하고 있는 shell정보

echo $SHELL 현재 사용하고 있는 shell 정보확인

cat /etc/shells 현재 설치된 os에서 지원하고 있는 shell유형 확인
~/test_fold/bb$ echo $SHELL

/bin/bash
~/test_fold/bb$ cat /etc/shells

# /etc/shells: valid login shells

/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/sh
/bin/dash
/usr/bin/dash
/bin/csh
/usr/bin/csh
/usr/bin/fish
/usr/bin/screen
/bin/tcsh
/usr/bin/tcsh
/bin/zsh
/usr/bin/zsh

-sh, dash등을 terminal에 치면 shell을 변경 할 수 있다.
  shell에 대해서 자세히 알고자하면 man sh등으로 확인 가능하다.
  로그인시 어떤 shell로 시작하는 지 cat /etc/passwd을 통해서 확인가능

 


명령어에 대한 설명과 옵션을 출력하기

man manual 설명을 볼 수 있다
manual {커맨드이름}
~/test_fold/aa$ man ls

LS(1)                                         User Commands                                        LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List information about the FILEs (the current directory by default).  Sort entries alphabetically
       if none of -cftuvSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
  ..
  ..

                q를 눌러서 상태에서 나갈 수 있다.

◦ 현재 위치 출력

pwd Print Working Directory 현재 작업중인 디렉토리 출력
~$ pwd
/home/user

shell창 정리

clear shell 창 정리
~/test_fold/aa$ clear

현재 디렉터리의 파일과 폴더 목록을 출력

ls List 디렉토리 내용 나열
ls, ls-l, ls -R, ls -a
~$ ls

2023-07-25-file-1.term  aa  bb  cc  dd  ee  ff  test_fold

-l  Argument를 이용하면 더 자세한 내용을 볼 수 있다.

~/test_fold$ ls -l

total 5
drwxr-xr-x 2 user user 3 Jul 26 04:17 aa
drwxr-xr-x 2 user user 4 Jul 26 04:47 aa_copy
drwxr-xr-x 2 user user 2 Jul 26 02:11 bb
drwxr-xr-x 2 user user 2 Jul 26 02:11 cc
drwxr-xr-x 2 user user 2 Jul 26 02:11 dd
drwxr-xr-x 2 user user 2 Jul 26 02:11 ee
drwxr-xr-x 2 user user 2 Jul 26 02:11 ff
drwxr-xr-x 2 user user 2 Jul 26 02:11 gg
drwxr-xr-x 2 user user 2 Jul 26 02:11 hh
drwxr-xr-x 2 user user 2 Jul 26 02:11 ii
-l Long Format 자세한 형식 출력

.. 을 붙이면 상위 목록 출력

~/test_fold$ ls ..

2023-07-25-file-1.term  test_fold
ls -a 앞에 점(.)이 붙은 숨겨진 파일 표시
ls -l 파일에 대한 상세한 정보 표시
ls -lF 폴더의 경우 끝에 /을 붙여서 보기쉽게 해줌
ls -tl 최근 수정된 날짜 순서로 정렬
ls -rtl 오래된 순서로 정렬
ls -R 하위 디렉터리 까지 표기
ls .. 상위 디렉터리 표시
-a All  
-l Long Format 자세한 형식 출력
-F classify 파일과 디렉토리구분
-t timestamp  
-r, -R Recursive 하위 디렉토리 포함 재귀적인 동작
ls -R | less 페이징 사용 - 한페이지씩 내용을 확인 할수 있다. space(다음) b(이전페이지) q(종료)

너무긴 출력줄은 Ctrl + C 를 통해서 중단시킬 수 있다.

 폴더 만들기

mkdir Make Directory 디렉토리 생성

mkdir 폴더이름
mkdir 폴더이름 폴더이름 폴더이름 
mkdir -p 폴더이름/이름/이름


~/test_fold$ mkdir aa

~/test_fold$ ls
aa

아래와 같이 한 번에 여러 폴더의 생성이 가능하다

~/test_fold$ mkdir bb cc dd ee ff gg hh ii

~/test_fold$ ls
aa  bb  cc  dd  ee  ff  gg  hh  ii

-p  Argument를 이용하면 계층적 구조를 가진 폴더생성이 가능하다

~/test_fold/bb$ mkdir -p bb1/bb2/bb3
-p parents  

 디렉터리 변경

cd Change Directory 디렉토리 변경
cd 폴더이름
cd /home/user
~$ 
cd ..
cd
cd/

- 기본 command형식 

~$ cd test_fold

~$ cd /home/user

                                     위 2번째 처럼 절대 경로도 가능하다.

- 예제

~$ pwd
/home/user
~$ ls
2023-07-25-file-1.term  test_fold
~$ cd test_fold
~/test_fold$ pwd
/home/user/test_fold
~/test_fold$ ls
aa  bb  cc  dd  ee  ff  gg  hh  ii
~/test_fold$

- 활용
    - cd를 누루고 단어의 일부만 치고 tab키를 누르면 자동완성되거나 검색이 된다.
    - cd/      root로 이동
     - cd      home으로 이동
     - cd ..   이전

. - 현재 디렉토리 의미
- 파일이름 앞에 적으면( .file) 숨긴파일의미
 
.. - 상위 디렉토리  
 ~ - 현재 위치  
~/test_fold$ pwd
/home/user/test_fold
~/test_fold$ ls
aa  bb  cc  dd  ee  ff  gg  hh  ii
~/test_fold$ cd aa
~/test_fold/aa$ ls
~/test_fold/aa$ cd ..
~/test_fold$ pwd
/home/user/test_fold
~/test_fold$ ls
aa  bb  cc  dd  ee  ff  gg  hh  ii
~/test_fold$ cd 
~$ pwd
/home/user
~$ ls
2023-07-25-file-1.term  test_fold
~$ cd test_fold
~/test_fold$ pwd
/home/user/test_fold
~/test_fold$ ls
aa  bb  cc  dd  ee  ff  gg  hh  ii

 파일 만들기

touch 빈 파일을 생성하거나, 이미 존재하는 파일의 수정 시간을 변경  

touch {filename}
touch {filename} {filename} {filename}
touch /home/user/test_fold/cc/cc_00.txt


~/test_fold/aa$ touch aa_00.txt
~/test_fold/aa$ ls
aa_00.txt
touch c file1
file1의 수정 시간을 현재 시간으로 수정
touch r file1 file2
file1의 수정 시간을   ->  file2의 수정 시간에 덮어씌움
(file2dp 복수의 파일을 적어도 되고 **라고 적어서 모든 파일의 시간을 바꿀 수도 있다)

※ find 명령을 이용하여 수정된지 n일 이상 된 파일을 삭제하도록 스케줄을 걸어 놓는 경우가 있습니다.
이럴때 파일의 시간을 변경함으로써 내일 삭제되지 않도록, 또는 내일 삭제되도록 할 수 있습니

~/test_fold/bb$ ls -l

total 2
-rw-r--r-- 1 user user 0 Jul 26 06:22 bb_01.txt
-rw-r--r-- 1 user user 0 Jul 26 06:22 bb_02.txt
-rw-r--r-- 1 user user 0 Jul 26 06:22 bb_03.txt

~/test_fold/bb$ touch -c bb_01.txt

~/test_fold/bb$ ls -l

total 2
-rw-r--r-- 1 user user 0 Jul 26 07:21 bb_01.txt
-rw-r--r-- 1 user user 0 Jul 26 06:22 bb_02.txt
-rw-r--r-- 1 user user 0 Jul 26 06:22 bb_03.txt

~/test_fold/bb$ touch -r bb_01.txt bb_02.txt

~/test_fold/bb$ ls -l

total 2
-rw-r--r-- 1 user user 0 Jul 26 07:21 bb_01.txt
-rw-r--r-- 1 user user 0 Jul 26 07:21 bb_02.txt
-rw-r--r-- 1 user user 0 Jul 26 06:22 bb_03.txt

- 다른 파일 생성의 예 

vim 이 명령어를 입력하면 Vim 편집기가 열리고, 새 파일을 만들거나 기존 파일을 편집할 수 있습니다.
   (vi 에서 강제로 나가기 esc를 누루고 :q! 입력)
vim filename

 

nano 이 명령어를 입력하면 Nano 편집기가 열리고, 새 파일을 만들거나 기존 파일을 편집할 수 있습니다.
nano {filename}
echo 이 명령어는 주어진 문자열을 파일에 쓰거나, 파일을 생성하여 해당 문자열을 저장
echo "Hello"   (출력만)
echo
 "Hello" > filename
cat 이 명령어를 입력하면 터미널에서 입력한 내용을 파일에 쓸 수 있는 편집기가 열립니다.
원하는 내용을 작성한 후
Ctrl + D를 눌러 저장하고 편집기를 종료할 수 있습니다
cat > filename

{파일, 디렉터리}의  {이동, 이름} 변경

mv Move {파일,디렉토리}의  {이동,이름} 변경

- 이동할 폴더가 존재한다면 이동, 없다면 {파일, 디렉터리} 이름 변경
- 상위로 이동하려면 'mv {파일,디렉터리} ..' , ..을 사용한다.
- 위치에 절대 경로를 적어도 된다. 

~/test_fold$ mv aa /home/user

◦ { 파일, 디렉터리 } 복사

cp Copy {파일, 디렉토리} 복사  
-r Recursive 하위 디렉토리 포함 재귀적인 동작
~/test_fold$ cp aa aa_copy
~/test_fold$ cp -r aa aa_copy
~/test_fold/aa_copy$ cp aa_00.txt aa_copy_00.txt
~/test_fold$ ls
aa  bb  cc  dd  ee  ff  gg  hh  ii
~/test_fold$ cp -r aa aa_copy
~/test_fold$ ls
aa  aa_copy  bb  cc  dd  ee  ff  gg  hh  ii
~/test_fold/aa_copy$ mv aa_00.txt aa_copy_00.txt
~/test_fold/aa_copy$ ls
aa_copy_00.txt
~/test_fold/aa_copy$ cp aa_copy_00.txt aa_copy_01.txt
~/test_fold/aa_copy$ ls
aa_copy_00.txt  aa_copy_01.txt

 

 디렉터리  삭제

rmdir remove  rmdir 폴더이름

rmdir의 경우 -r을 지원하지 않는다. 내용이 있을 경우 rm -r을 사용하면 된다

{파일, 디렉터리 } 삭제

rm remove directory  

rm example.txt
rm -r  폴더이름
 
rm {이름} {이름} 복수 파일 삭제가능
rm -r 하위 디렉터리까지
rm -ri i를 붙이면 지울지 물어본다. 휴먼에러를 줄일 수있다.
-r Recursive 하위 디렉토리 포함 재귀적인 동작
-i interactive 대화식 모드 작동

폴더의 경우 -r을 추가적으로 적으면 하위에 파일까지 삭제
rm만 적으면 빈폴더만 삭제

 화면에 프린트

echo echoes and prints 화면에 프린트
echo "Hello"   (출력만)
echo
 "Hello" > filename  (저장)
echo –e “hello\nWorld"

 

- e 옵션은 escape 문자열을 인식하여 출력
     echo "hello\nworld"위 경우  \n을 인식하여 줄바꿈이 일어난다.

◦ 파일 읽기

cat catenate 파일을 읽을 수 있다.
cat a.txt
cat a.txt|more

 - cat은 모든 파일의 내용을 출력하므로  |more를 이용하면 보다 보기편하다. |more상태에서 나오고자 하려면 q를 누루면된다.

cat a.txt |more    
cat > filename    

 파일의 처음 부분 출력

head 앞에 10줄을 출력한다
head a.txt
head -n20 a.txt
~/test_fold/bb$ head bb_01.txt
head -n20 a.txt -n숫자의 형태로 쓰면 줄을 지정해서 출력 할 수 있다.  

 

-n number  

파일의 끝 부분 출력

tail 끝에 10줄을 출력한다
tail a.txt
tail -n20 a.txt
~/test_fold/bb$ tail bb_01.txt
tail -n20 a.txt -n숫자의 형태로 쓰면 줄을 지정해서 출력 할 수 있다.  
-n number  

◦ 파일의 줄, 단어, 문자 수 세어주기

wc   wc a.txt

 

~/test_fold/bb$ wc bb_01.txt
 45  39 137 bb_01.txt

  줄, 단어, 문자 의 순으로 출력됨

◦ 과거 명령어 기록보기

history   history
history 10
history |less

과거 모든 기록을 보거나 입력된 숫자만큼의 최근 기록을 볼 수 있다.

728x90
반응형