명령어 | 풀 네임 | 간단 설명 |
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는 print working directory의 약어로 현재 사용자가 어느 위치에 있는지 경로를 출력해줍니다.
$ pwd
/Users/dev/finder/shell-dev/boo
-L : 해당 경로가 심볼릭을 포함하고 있으면 심볼릭의 경로를 보여줍니다.
-P : 해당 경로가 심볼릭을 포함하고 있으면 실제 경로를 보여줍니다.
$ 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)의 옵션을 심볼릭 링크의 경로가 아닌 실제 경로를 보여주고 있습니다.
환경변수를 사용하여 현재 경로, 이전 경로를 사용할 수 있습니다.
$ echo $PWD
/Users/dev/finder/shell-dev/foo
$ echo $OLDPWD
/Users/dev/finder/shell-dev
list segments의 약어로 디렉터리의 파일 목록을 표시하는 기능을 수행하는 명령어입니다.
$ ls [-option] [directory]
$ ls
a b boo c foo
$ ls shell-dev
a b boo c foo
디렉터리를 생략 시에는 디폴트로 현재 경로의 목록을 출력하며, ls의 명령어는 기본적으로 파일과 디렉터리를 알파벳 오름차순 순서로 정렬하여 표시합니다.
-l : 퍼미션, 포함된 파일 수, 소유자, 그룹 등 자세한 내용을 출력
-a : 숨김 파일까지도 모두 출력
-A : 숨김 파일까지도 모두 출력하지만 .와 ..는 제외
-R : 디렉터리의 하부 디렉터리까지 나열 'ls -R /' 명령은 모든 파일을 나열
-h : 파일 크기를 사람이 인지 할 수 있는 포맷으로 출력
-r : 출력 결과를 내림차순으로 정렬
-t : 파일이 수정된 시간 기준으로 정렬
-g : 사용자 권한을 출력 제외
-m : 목록을 콤마(,)로 구분하여 출력
-p : 디렉터리에 슬래시(/)를 추가하여 출력
-i : 목록에 인덱스 값을 추가하여 출력
-s : 블록에 할당된 크기를 출력
위의 옵션 이 외에도 더 많은 옵션이 있으나 제가 아는 옵션들만 설명하여 붙였습니다. 추후 더 알게 될 시 추가할 예정입니다.
$ 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 등 로그인 할때 자동으로 실행해주는 파일에 명시해주면 됩니다.
change directory의 약어로 현재 디렉터리에서 다른 디렉터리로 이동하는 명령어 입니다.
$ cd [directory]
$ pwd
/Users/jev/finder/shell-dev
$ cd boo
$ pwd
/Users/jev/finder/shell-dev/boo
cd . : 현재 디렉터리로 이동 (결국 디렉터리 이동이 없음)
cd .. : 한 단계의 상위 디렉터리로 이동
cd / : root의 디렉터리로 이동
cd, cd ~, cd $HOME : 사용자의 홈 디렉터리로 이동 ex.) /Users/dev 로 이동
cd ~계정명 : 입력한 계정명의 홈 디렉터리로 이동
cd - : 이전 경로로 이동
move의 약어로 파일이나 디렉터리를 이동할 때 사용하는 명령어 입니다.
$ 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는 파일명을 변경할때도 사용하기도 합니다.
$ ls
e.txt f g.txt
$ mv g.txt g_1.txt
$ ls
e.txt f g_1.txt
-b : 이동 위치에 파일에 이미 있는 경우 백업 파일을 생성
-i : 파일이 이미 있는 경우 덮어쓸지 묻는 옵션
-v : 이동 진행 상태를 출력하는 옵션
-n : 이동 위치에 파일이 이미 존재하면 덮어쓰지 않는 옵션
-f : 이동 위치에 파일이 이미 존재하면 덮어쓰는 옵션
-r : 디렉터리를 이동 시 하위에 있는 파일 및 디렉터리까지 같이 이동하는 옵션
remove의 약어로 파일이나 디렉터리를 삭제할 때 사용하는 명령어 입니다.
$ rm [옵션] [삭제 파일|디렉터리]
$ ls -a
. .. test.txt
$ rm test.txt
$ ls -a
. ..
-r : 디렉터리르 삭제, 디렉터리의 하위 파일 및 디렉터리를 먼저 삭제합니다.
-i : 삭제할 때 매번 삭제 여부를 묻습니다. 디렉터리의 하위 파일 및 디렉터리를 삭제할 때도 삭제 여부를 묻습니다.
-f : 강제로 파일이나 디렉터리를 삭제하고 대상이 존재 하지 않는 경우 메세지를 출력하지 않습니다.
-v : 삭제되는 대상의 정보를 출력합니다.
-d : 비어있는 디렉터리만 삭제합니다. 여러개의 디렉터리를 인자값으로 주면 해당 인자값의 디렉터리 중 비어있는 것만 삭제합니다.
concatenate의 약어로 표준 입력을 표준 출력으로 이어주는 명령어입니다.
$ 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.
-n : 공백을 포함하여 문장 앞에 번호를 표시
-b : 공백을 제외하고 문장 앞에 번호를 표시
-E : 공백을 포함하여 라인의 마지막에 $을 표시
-T : 탭 문자를 ^I로 표시하여 출력
-v : 줄 바꿈 문자와 탭 문자를 제외한 ^와 M 표시법으로 출력
-e : -vE와 같은 옵션으로 줄 바꿈을 포함한 문자를 출력
-t : -vT와 같은 옵션으로 탭을 포함한 문자를 출력
-A : -vET와 같은 옵션으로 줄 바꿈과 탭을 포함한 문자를 출력
파일의 날짜와 시간을 수정하거나 빈 파일을 생성하는 명령어
$ 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
-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 "foo, boo"
foo, boo
$ echo $HOST
dev-MacBookAir.local
-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
netcat 약자로 TCP 또는 UDP 프로토콜을 사용하는 프로그램으로 일반적으로 서버의 포트가 열려있나 사용하거나, 서버에 접속이 가능한지 확인하는 용도로 사용
$ 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!
-v : 상세한 정보를 출력
-z : 최소한의 데이터로 연결
-u : UDP로 연결
-n : 호스트 네임과 포트를 숫자로만 연결
-l : listen 모드로 실행
-p : listen local 포트를 지정
명령어의 실행파일 위치를 알려주는 명령어입니다.
$ which vim
/usr/bin/vim
[Linux] tail - grep 활용하기 (0) | 2020.07.29 |
---|---|
[리눅스/find] 파일찾기 - 허가 거부 제외하고 결과물 출력하기 (0) | 2020.06.17 |
[Linux] 리눅스 환경에서 특정 문자열을 검색해서 파일 찾기 (0) | 2020.04.03 |
댓글 영역