Linux 101

1. 로그인&아웃

(1)  개인컴퓨터가 리눅스 machine인 경우(local Linux machine을 사용하는 경우)

개인컴퓨터에 리눅스OS를 설치하여 사용한다면 대개 사용자 자신이 root user (관리자 administrator 또는 super user)인 경우에 해당한다. 이 경우 관리자 권한으로 일반 계정을 생성한 뒤, 보안상의 이유로 가급적 일반 사용자 계정으로 로그인하는 습관을 들인다. 일반 사용자로 로그인 후, 필요하다면 su (switch user)명령어를 사용하여 언제든지 일반 사용자에서 관리자로 계정 전환이 가능하다. 계정전환없이 특정 명령어만 관리자 권한으로 실행하려면 sudo + (실행하고자 하는 명령어)를 사용하여도 된다. 

(2) Linux 클러스터에 원격 접속(remote connection)하는 경우

원격으로 떨어져 있는 Linux 클러스터에 접속하려면 먼저 본인의 컴퓨터(local computer)에서 터미널(terminal)을 실행한다. 본인의 컴퓨터 OS가 리눅스 OS이거나 MacOS라면 터미널이 기본으로 설치되어 있으나, Windows인 경우는 부가적인 프로그램(puttyMobaXterm)을 설치해야 한다. putty 터미널을 사용하는 경우 기본적으로 텍스트 기반 통신만 가능하므로, gui (graphic user interface) 기반 프로그램을 원격 실행하려면 x11 기능을 활성화 해야 한다. 이를 위해서 xming을 추가적으로 설치해준다. xming이 설치되었으면 putty configuration -> connection -> SSH -> X11에서 Enable X11 forwarding을 체크하여 ssh 접속시 X11 기능을 활성화한다. 

putty나 MobaXterm외에도 cygwin 또는 Windows Subsystem Linux (WSL) 등을 설치하여도 terminal을 실행할 수 있다. 

$ ssh -X 사용자ID@IP주소

$ ssh -X 사용자ID@클러스터이름

(3) log out

2. 디렉토리 구조 (directory structure)

일반 사용자로 리눅스 시스템에 로그인하면 home directory (/home/사용자ID)에서 시작하게 된다. 일반적인 리눅스 시스템의 디렉토리(Windows에서 폴더에 해당함) 구조를 보면 최상위를 root 디렉토리라고 하며 / 로 표시된다. 그 아래에 /bin, /boot, /dev, /etc, /home, /lib, /media, /mnt, /opt, /root, /sbin, /tmp, /usr,  /var 등의 디렉토리가 있다. 

3. 기본 명령어

로그인하자마자 pwd를 입력하면 home directory를 보여준다. 

$ pwd

/home/사용자ID

옵션 -l을 사용하면 long listing format으로 현 디렉토리 안에 파일과 하위 디렉토리를 보여준다. 

$ ls -l

drwx------ 12 사용자1 사용자1  4096 Jul  4 11:31  .

drwxr-xr-x 17 root        root          4096 Dec 28  2023  ..

현재 디렉토리가 비어 있으면 .과 .. 두 개만 보이는데, .은 현재 디렉토리 그리고 ..은 상위 디렉토리를 의미한다.  ls ../을 입력하면 상위 디렉토리의 내용을 보여준다. 

$ ls ../

사용자1  사용자2  사용자3 사용자4

root directory의 내용을 볼려면 ls /을 입력한다. 

$ ls /

bin     de    etc         lib       media  opt    root  sbin  sys    usr

boot  dev  home  lib64  mnt      proc  run   srv    tmp  var

옵션 -a를 사용하면 숨겨진 파일(hidden file)까지 보여준다. 숨겨진 파일은 그 이름이 .으로 시작한다. 

$ ls -a

.    .bash_history   .bash_profile   .cache

..   .bash_logout    .bashrc

그 외에 자주 사용되는 ls의 option으로는 -h, -r, -R -t 등이 있다.  ls의 다양한 option에 대해서 알려면 --help 옵션이나 man 명령어 사용한다. man 명령어 manual을 의미하며, ls 이외에도 다양한 리눅스 명령어 사용법을 확인하는데 유용하게 이용될 수 있다. man 명령어의 설명 페이지가 긴 경우 다음 페이지로 갈려면 f, 이전 페이지로 갈려면 b, 매뉴얼 페이지를 빠져나갈려면 q를 입력한다. 

$ ls --help

Usage: ls [OPTION]... [FILE]...

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               with -l, print the author of each file

  -b, --escape               print C-style escapes for nongraphic characters

      --block-size=SIZE      scale sizes by SIZE before printing them; e.g.,

                               '--block-size=M' prints sizes in units of

                               1,048,576 bytes; see SIZE format below


$ 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 alphabeti‐

       cally 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 ..


(1) 디렉토리의 생성과 이동, 삭제

Test라는 디렉토리를 생성하려면 

$ mkdir Test

$ ls -l 

drwxrwxr-x  2 사용자ID 그룹ID    6 Jul  4 14:26 Test

(2) 절대경로 vs 상대경로

(3) 파일 생성/이동/삭제

(4) 파일 속성 변경

(5) 파일 내용 확인 

echo $HOME

echo $PWD

(6) 리다이렉팅 그리고 파이프라인

test.exe > test.out

cal > october.txt

test.x < input.dat > output.dat

mail mark < letter


who | grep "sedu"


(7) 파일 생성

cat > date.x 타이핑후 엔터를 치면 문자열 입력 가능함. 입력을 다하면 ctrl+c 키를 눌러서 파일 저장후 빠져나옴


(8) 기타

which 명령어의 경로

whereis 실행파일, 소스, man page의 경로

whatis 명령어가 하는 일을 간단히 설명 

clear 화면 삭제