상세 컨텐츠

본문 제목

[리눅스] 리눅스 기본 명령어 간단 정리

Development/Linux

by J-Developer 2023. 7. 23. 16:41

본문

반응형

리눅스 기본 명령어 간단 정리

명령어 풀 네임 간단 설명
pwd print working directory 현재 사용자가 어느 위치에 있는지 경로를 출력
ls list segments 현재 디렉터리 내의 파일과 디렉터리를 목록을 출력
cd change directory 현재 디렉터리에서 다른 디렉터리로 이동
mkdir make directory 디렉터리 생성
cp copy 디렉터리 또는 파일 복사
mv move 디렉터리 또는 파일 이동
cat concatenate 파일을 연결하고 출력
touch - 파일의 날짜와 시간을 수정, 빈 파일 생성
echo - 입력받은 문자열을 출력
nc netcat TCP 또는 UDP 프로토콜을 사용하는 프로그램
which - 실행 파일의 위치를 식별

 


 

pwd

pwd는 print working directory의 약어로 현재 사용자가 어느 위치에 있는지 경로를 출력해줍니다.

 

  • pwd 예시
$ pwd

/Users/dev/finder/shell-dev/boo

 

  • pwd 옵션
-L : 해당 경로가 심볼릭을 포함하고 있으면 심볼릭의 경로를 보여줍니다.
-P : 해당 경로가 심볼릭을 포함하고 있으면 실제 경로를 보여줍니다.

 

  • pwd 옵션 예시
$ ls -al

drwxr-xr-x boo
lrwxr-xr-x foo -> boo

 

foo는 boo의 심볼릭 링크입니다. foo로 이동하여 테스트를 해보겠습니다.

$ pwd -L

/Users/dev/finder/shell-dev/foo

 

-L(logical)의 옵션은 심볼릭 링크의 경로를 보여주고 있습니다.

 

$ pwd -P

/Users/dev/finder/shell-dev/boo

 

-P(physical)의 옵션을 심볼릭 링크의 경로가 아닌 실제 경로를 보여주고 있습니다.

 

 

  • $PWD, $OLDPWD

환경변수를 사용하여 현재 경로, 이전 경로를 사용할 수 있습니다.

$ echo $PWD

/Users/dev/finder/shell-dev/foo

$ echo $OLDPWD

/Users/dev/finder/shell-dev

 


 

ls

list segments의 약어로 디렉터리의 파일 목록을 표시하는 기능을 수행하는 명령어입니다.

 

  • ls 사용법
$ ls [-option] [directory]

 

  • ls 예시
$ ls

a b boo	c foo

 

  • ls [directory] 예시
$ ls shell-dev

a b boo c foo

 

디렉터리를 생략 시에는 디폴트로 현재 경로의 목록을 출력하며, ls의 명령어는 기본적으로 파일과 디렉터리를 알파벳 오름차순 순서로 정렬하여 표시합니다.

 

  • ls [option] 설명
-l : 퍼미션, 포함된 파일 수, 소유자, 그룹 등 자세한 내용을 출력
-a : 숨김 파일까지도 모두 출력
-A : 숨김 파일까지도 모두 출력하지만 .와 ..는 제외
-R : 디렉터리의 하부 디렉터리까지 나열 'ls -R /' 명령은 모든 파일을 나열
-h : 파일 크기를 사람이 인지 할 수 있는 포맷으로 출력
-r : 출력 결과를 내림차순으로 정렬
-t : 파일이 수정된 시간 기준으로 정렬
-g : 사용자 권한을 출력 제외
-m : 목록을 콤마(,)로 구분하여 출력
-p : 디렉터리에 슬래시(/)를 추가하여 출력
-i : 목록에 인덱스 값을 추가하여 출력
-s : 블록에 할당된 크기를 출력

 

위의 옵션 이 외에도 더 많은 옵션이 있으나 제가 아는 옵션들만 설명하여 붙였습니다. 추후 더 알게 될 시 추가할 예정입니다.

 

  • ls [-option] 편하게 사용하기
$ alias ll="ls -la"
$ ll

drwxr-xr-x  11 dev  staff      352  7 14 11:57 .
drwxr-xr-x@ 14 dev  staff      448  7 11 11:33 ..
-rw-r--r--@  1 dev  staff     6148  7 14 11:47 .DS_Store
drwxr-xr-x   2 dev  staff       64  7 14 11:54 .hide
drwxr-xr-x   2 dev  staff       64  7 11 12:19 a
-rw-rw-r--@  1 dev  staff  3574581  7 10 07:46 a.pdf
drwxr-xr-x   2 dev  staff       64  7 11 12:19 b
drwxr-xr-x   2 dev  staff       64  7 11 11:38 boo
drwxr-xr-x   3 dev  staff       96  7 14 11:43 c
-rw-r--r--   1 dev  staff        0  7 14 11:57 f.log
lrwxr-xr-x   1 dev  staff        3  7 11 11:37 foo -> boo

 

간혹 리눅스 설치 시 기본으로 alias가 설정되어 있는 경우도 있지만 설정되어 있지 않을 경우에는 저렇게 설정하여 ls [-option]을 요약해서 사용할 수 있습니다.

위와 같이 현재의 터미널에서 사용 시 현재 사용중인 세션에서만 설정이 되어지며 터미널을 종료 후 다시 접속 시에는 다시 설정해주어야 합니다.

만약 접속 할때마다 자동으로 설정이 적용되고 싶으면 .bash_profile 등 로그인 할때 자동으로 실행해주는 파일에 명시해주면 됩니다.

 


 

cd

change directory의 약어로 현재 디렉터리에서 다른 디렉터리로 이동하는 명령어 입니다.

 

  • cd 사용법
$ cd [directory]

 

  • cd 예시
$ pwd

/Users/jev/finder/shell-dev

$ cd boo
$ pwd

/Users/jev/finder/shell-dev/boo

 

  • cd [option] 설명
cd . : 현재 디렉터리로 이동 (결국 디렉터리 이동이 없음)
cd .. : 한 단계의 상위 디렉터리로 이동
cd / : root의 디렉터리로 이동
cd, cd ~, cd $HOME : 사용자의 홈 디렉터리로 이동 ex.) /Users/dev 로 이동
cd ~계정명 : 입력한 계정명의 홈 디렉터리로 이동
cd - : 이전 경로로 이동

 


 

mv

move의 약어로 파일이나 디렉터리를 이동할 때 사용하는 명령어 입니다.

 

  • mv 사용법
$ mv [옵션] [이동 할 파일|디렉터리] [이동 될 위치]

 

mv에서 옵션을 생략이 가능하지만 ‘이동 할 파일’과 ‘이동 될 위치’의 파라메터 값은 필수 입니다.

 

  • mv 예시
$ ls

a b c d.txt g.txt

$ mv g.txt c/

$ ls

a b c d.txt

$ ls c

e.txt f g.txt

 

mv는 파일명을 변경할때도 사용하기도 합니다.

 

  • mv 이름 변경 예시
$ ls

e.txt f g.txt

$ mv g.txt g_1.txt

$ ls

e.txt f g_1.txt

 

  • mv 옵션
-b : 이동 위치에 파일에 이미 있는 경우 백업 파일을 생성
-i : 파일이 이미 있는 경우 덮어쓸지 묻는 옵션
-v : 이동 진행 상태를 출력하는 옵션
-n : 이동 위치에 파일이 이미 존재하면 덮어쓰지 않는 옵션
-f : 이동 위치에 파일이 이미 존재하면 덮어쓰는 옵션
-r : 디렉터리를 이동 시 하위에 있는 파일 및 디렉터리까지 같이 이동하는 옵션

 


 

rm

remove의 약어로 파일이나 디렉터리를 삭제할 때 사용하는 명령어 입니다.

 

  • rm 사용법
$ rm [옵션] [삭제 파일|디렉터리]

 

  • rm 예시
$ ls -a

. .. test.txt

$ rm test.txt

$ ls -a

. ..

 

  • rm 옵션
-r : 디렉터리르 삭제, 디렉터리의 하위 파일 및 디렉터리를 먼저 삭제합니다.
-i : 삭제할 때 매번 삭제 여부를 묻습니다. 디렉터리의 하위 파일 및 디렉터리를 삭제할 때도 삭제 여부를 묻습니다.
-f : 강제로 파일이나 디렉터리를 삭제하고 대상이 존재 하지 않는 경우 메세지를 출력하지 않습니다.
-v : 삭제되는 대상의 정보를 출력합니다.
-d : 비어있는 디렉터리만 삭제합니다. 여러개의 디렉터리를 인자값으로 주면 해당 인자값의 디렉터리 중 비어있는 것만 삭제합니다.

 


 

cat

concatenate의 약어로 표준 입력을 표준 출력으로 이어주는 명령어입니다.

 

  • cat 사용법
$ cat [옵션] [파일]

 

  • cat 예시
$ ls

a b c d.txt g.txt test.txt

$ cat test.txt

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

 

  • cat 옵션
-n : 공백을 포함하여 문장 앞에 번호를 표시
-b : 공백을 제외하고 문장 앞에 번호를 표시
-E : 공백을 포함하여 라인의 마지막에 $을 표시
-T : 탭 문자를 ^I로 표시하여 출력
-v : 줄 바꿈 문자와 탭 문자를 제외한 ^와 M 표시법으로 출력
-e : -vE와 같은 옵션으로 줄 바꿈을 포함한 문자를 출력
-t : -vT와 같은 옵션으로 탭을 포함한 문자를 출력
-A : -vET와 같은 옵션으로 줄 바꿈과 탭을 포함한 문자를 출력

 


 

touch

파일의 날짜와 시간을 수정하거나 빈 파일을 생성하는 명령어

 

  • touch 사용법
$ touch [옵션] [파일]

 

  • touch 예시
$ ls -l

drwxr-xr-x  2 dev  staff    64  7 16 17:54 a
drwxr-xr-x  2 dev  staff    64  7 16 17:54 b
drwxr-xr-x  5 dev  staff   160  7 16 18:44 c
-rw-r--r--  1 dev  staff     0  7 16 17:54 d.txt
-rw-r--r--  1 dev  staff     0  7 16 17:55 g.txt
-rw-r--r--@ 1 dev  staff  2710  7 22 15:26 test.txt

$ touch test2.txt

$ ls -l

drwxr-xr-x  2 dev  staff    64  7 16 17:54 a
drwxr-xr-x  2 dev  staff    64  7 16 17:54 b
drwxr-xr-x  5 dev  staff   160  7 16 18:44 c
-rw-r--r--  1 dev  staff     0  7 16 17:54 d.txt
-rw-r--r--  1 dev  staff     0  7 16 17:55 g.txt
-rw-r--r--@ 1 dev  staff  2710  7 22 15:26 test.txt
-rw-r--r--  1 dev  staff     0  7 22 16:02 test2.txt

$ touch test.txt

$ ls -l

drwxr-xr-x  2 dev  staff    64  7 16 17:54 a
drwxr-xr-x  2 dev  staff    64  7 16 17:54 b
drwxr-xr-x  5 dev  staff   160  7 16 18:44 c
-rw-r--r--  1 dev  staff     0  7 16 17:54 d.txt
-rw-r--r--  1 dev  staff     0  7 16 17:55 g.txt
-rw-r--r--@ 1 dev  staff  2710  7 22 16:03 test.txt
-rw-r--r--  1 dev  staff     0  7 22 16:02 test2.txt

 

위의 예시 코드와 같이 touch를 사용 시 빈 파일을 생성하거나 현재 있는 파일의 수정 시간, 접근 시간, 상태 변경 시간을 현재 시간으로 수정할 수 있습니다.

 

  • 리눅스 타임스탬프
atime: 최종 접근 시간 (access time)
ctime: 최종 상태 변경 시간 (change time)
mtime: 최종 수정 시간 (modify time)

# 최종 접근 시간 확인
$ ls -lu

-rw-r--r--@ 1 dev  staff  2717  7 22 18:42 test.txt

# 최종 상태 변경 시간 확인
$ ls -lc

-rw-r--r--@ 1 dev  staff  2717  7 22 18:42 test.txt

# 최종 수정 시간 확인
$ ls -l

-rw-r--r--@ 1 dev  staff  2717  7 22 18:42 test.txt

# 파일 상태 정보 출력(Mac에서는 stat -x test.txt)
$ stat test.txt

File: "test.txt"
  Size: 2717         FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (  501/dev)  Gid: (   20/   staff)
Device: 1,16   Inode: 7579483    Links: 1
Access: Sat Jul 22 18:42:31 2023
Modify: Sat Jul 22 18:42:30 2023
Change: Sat Jul 22 18:42:30 2023
 Birth: Sat Jul 22 18:42:30 2023

 

  • touch 옵션
-d : 지정한 시간으로 변경 ex) touch -d 'YYYY-MM-DD hh:mm:ss' [파일명]
-a : 파일의 접근 시간을 변경
-c : 파일이 없으면 새로운 파일을 생성하지 않는 옵션
-m : 현재의 시간으로 파일의 수정시간과 변경시간을 설정
-r : 지정한 파일의 최종 접근 시간(atime), 최종 수정 시간(mtime)으로 파일의 시간이 변경이되고 최종 상태 변경 시간은 현재 시간으로 수정 ex) touch -r [동기화 될 파일] [실제로 변경할 파일]
-t : 지정한 시간으로 최종 접근 시간(atime), 최종 수정 시간(mtime)으로 파일의 시간이 변경되고 최종 상태 변경 시간은 현재 시간으로 수정 지정 시간의 포맷은 'YYYYMMDDhhmm.SS'
ex) touch -t '202211110000.00' [파일명]

 


 

echo

입력 받은 문자열을 출력하는 명령어

 

  • echo 사용법
$ echo [옵션] [문자열]

 

  • echo 예시
$ echo "foo, boo"

foo, boo

$ echo $HOST

dev-MacBookAir.local

 

  • echo 옵션
-n : 마지막에 오는 개행 문자를 출력하지 않는 옵션
-e : 문자열에 역슬래시와 이스케이프 문자를 사용하여 문자열을 해석하는 옵션

 

  • 이스케이프 문자 옵션
\\ : 역슬래시 문자를 사용합니다.
\a : 경고음 소리를 출력합니다.
\b : 백스페이스 역할을 합니다. ex) echo -e "foo, \bboo" -> foo,boo
\c : 이스케이프 문자 이후로 출력하지 않습니다. ex) echo -e "foo, \cboo, test" > foo, 
\f : 폼 피드 형식으로 터미널에서 지정한 문자 이후로 출력
ex) echo -e "foo,\f boo, test"
foo,
     boo, test

\n : newline으로 새로운 라인으로 줄바꿈 출력
ex) echo -e "foo,\nboo, test"
foo,
boo, test

\r : carriage return으로 새 줄을 시작하는데 쓰임
ex) echo -e "foo,\rboo,test"
boo,test

\t : tab의 간격을 출력 ex) echo -e "foo,\tboo,test" -> foo,	boo,test

\v : vertical tab으로 수직으로 tab의 간격을 출력
ex) echo -e "foo,\vboo,test"
foo,
    boo,test

 


 

nc

netcat 약자로 TCP 또는 UDP 프로토콜을 사용하는 프로그램으로 일반적으로 서버의 포트가 열려있나 사용하거나, 서버에 접속이 가능한지 확인하는 용도로 사용

 

  • nc 사용법
$ nc [옵션] [호스트네임] [포트]

 

  • nc 예시
$ nc -zv xxx.xxx.xxx.xxx 22

Connection to xxx.xxx.xxx.xxx port 22 [tcp/ssh] succeeded!

$ nc -zvu xxx.xxx.xxx.xxx 22

Connection to xxx.xxx.xxx.xxx port 22 [udp/ssh] succeeded!

 

  • nc 옵션
-v : 상세한 정보를 출력
-z : 최소한의 데이터로 연결
-u : UDP로 연결
-n : 호스트 네임과 포트를 숫자로만 연결
-l : listen 모드로 실행
-p : listen local 포트를 지정

 


 

which

명령어의 실행파일 위치를 알려주는 명령어입니다.

 

  • which 예시
$ which vim

/usr/bin/vim
반응형

관련글 더보기

댓글 영역