2023.10.26 TIL
file$ file .profile
.profile: ASCII text
$ file downloads
downloads: directory
/.. 🦖 서브 디렉토리 확인 : ls
$ ls -F /
bin/ dev/ tmp/ usr/ 등등
→ / 디렉토리의 서브 디렉토리
🦖 작업 디렉토리 : . pwd
현재 작업중인 디렉토리
🦖 홈 디렉토리 : ~
각 사용자에게 할당된 디렉토리, 처음 사용자 계정을 만들 때 지정
~user1 == /home/user1
/root → root 계정의 홈 디렉토리 == /
/tmp → 시스템 사용 중 발생하는 임시 데이터가 저장됨. 재시작하면 모두 삭제됨
/로 시작/가 아닌 문자로 시작| directory | 절대 경로명 | 상대 경로명 |
|---|---|---|
/ | / | ../.. |
/home | /home | .. |
/boot | /boot | ../../boot |
/lib | /usr/lib | ../../usr/lib |
/ls | /bin/ls | ../.../bin/ls |
.로 시작하면 숨김 파일로 간주한다🦖 디렉토리 이동하기 : cd
절대 경로명으로 이동할 디렉토리 지정하기
user1@myubuntu:~$ cd tmp
user1@myubuntu:/tmp$
상대 경로명으로 이동할 디렉토리 지정하기
user1@myubuntu:/tmp$ cd ../usr/lib
user1@myubuntu:/usr/lib$
🦖 디렉토리 내용보기 : ls
-a → 숨김 파일을 포함하여 모든 파일의 목록 출력
-d → 디렉터리 자체의 정보 출력
-i → 첫 번째 행에 inode 번호를 출력
-l → 파일의 상세 정보를 출력
→ 필드(파일 종류, 파일 접근 권한, 하드링크의 개수, 파일 소유자, 파일이 속한 그룹, 파일 Byte 크기, 파일이 마지막으로 수정된 시간, 파일명)
-A → .와 ..를 제외한 모든 파일 목록을 출력
-F → 파일의 종류를 표시(* : 실행 파일, / : 디렉토리, 0 : 심볼릭 링크)
-L → 심볼릭 링크 파일의 경우 원본 파일의 정보를 출력
-R → 하위 디렉토리의 목록까지 출력
같이 사용도 가능 → ls -aF
디렉터리의 자체 정보 출력 → ls -ld /
파일 존재여부 확인 → ls game
ls명령의 심벌릭 링크 : dir, vdir
dir == lsvdir == ls -l🦖 디렉토리 만들기 : mkdir
동시에 여러개 만들기 가능 → mkdir temp1 temp2 temp3
중간 디렉토리 자동으로 만들기 → -p 옵션 사용
→ mkdir -p temp/mid/han
→ temp에 mid 디렉토리가 없을 경우 temp 밑에 mid를 만들고 mid 밑에 han을 만들어줌
🦖 디렉토리 삭제하기 : rmdir
디렉토리가 비어있지 않으면 삭제 불가
🦖 파일 내용 연속 출력하기 : cat
행 번호 붙여서 출력 → cat -n file1
🦖 화면 단위로 파일 내용 출력하기 : more
more [option] file1
space → 다음 화면 출력, Enter: 한 줄씩 스크롤
개선된 화면 단위로 파일 내용 출력하기 : less
j → 한 줄씩 다음 행으로 스크롤, k: 한 줄씩 이전 행으로 스크롤, control+f: 다음 화면으로 이동, ctrl+b: 이전 화면으로 이동
🦖 파일 뒷부분 출력하기 : tail
tail [option] /etc/services
+행번호 → 지정한 행부터 끝까지 출력
-숫자 → 화면에 출력할 행의 수를 지정(default: 10)
-f → 파일 출력을 종료하지 않고 주기적으로 계속 출력
🦖 파일/디렉토리 복사하기: cp
파일 복사하기
-i → file2가 존재하면 덮어쓸 것인지 물어본다
-r → 디렉터리를 복사할 때
다른 이름으로 복사하기
cp text1 temp/tex2 → text2라는 이름으로 저장됨
cp /etc/hosts /etc/services temp → temp에 /etc/hosts와 /etc/services 복사
디렉토리 복사하기: cp -r
cp -r temp temp2
🦖 파일 이동하기: mv
mv text1 temp/data2 → 파일명을 data2로 바꿔서 temp로 이동
💡 파일을 파일로 이동하기 == 원본 파일의 파일명을 다른 파일명으로 바꾸기
mv text1 data1 → 파일명을 data1로 변경
파일 여러개 이동하기
mv temp/data1 temp/data2 . → pwd로 두개의 파일 이동
-i → 두 번째 인자에 지정한 파일명이 이미 존재할 경우 덮어서 이동할 것인지 물어봄
💡 디렉토리를 디렉토리로 이동하기 == 원본 디렉터리 이름을 다른 이름으로 바꾸기
mv temp2 temp1 → 디렉토리명을 temp1로 변경
🦖 파일 삭제하기: rm
rm data2
-i 옵션 → 진짜 삭제할건지 물어봄
🦖 디렉토리 삭제하기: rm -r
rm -r temp3 → rmdir와 달리 temp3가 비어있지 않아도 삭제
ls -i 로 확인 가능 🦖 하드링크, 심볼릭링크 만들기 : ln
ln test lntest → 원본파일(test)의 링크파일(lntest.ln)을 생성
ln -s test lntest → 심볼릭 링크 파일(lntest.sl)을 생성
🦖 빈 파일 생성, 수정 시간 변경 : touch
touch test.cp → 빈 파일 생성
-t [[CC]YY]MMDDhhmm[.ss] 형식으로 시간 지정 가능
🦖 파일 내용 검색하기 : grep
grep root /etc/passwd → root라는 단어가 들어간 라인을 출력
grep -l hello *.c → hello라는 단어가 들어가고 확장자가 c인 파일의 파일명 출력
grep -n unix ~/*.txt → unix라는 단어가 들어간 (홈디렉토리 아래 확장자가 txt인 모든 파일들에서) 라인넘버 출력
-i → 대문자와 소문자를 모두 검색
-r → 하위 디렉토리를 포함한 모든 파일에서 검색
-l → 지정한 패턴이 포함된 파일명 출력
-n → 행 번호를 출력
🦖 파일 찾기 : find
find ~ -name hello.c → 홈디렉토리에서 hello.c라는 이름의 파일의 절대경로 출력
find /home -user user1 → /home 에서 user1이 소유자인 파일들의 절대경로 출력
find /tmp -user user1 -exec rm {} \; → /tmp에서 user1이 소유자인 파일들을 대상으로 rm 명령을 수행 (해당 파일들의 절대경로가 {} 위치에 삽입되어 명령이 수행되는것)
find /tmp -user user1 -ok rm {} \; → rm 명령 수행 전에 하나씩 확인할 수 있음
🦖 명령의 위치 찾기 : whereis, which
whereis ls → ls라는 명령의 바이너리 파일이나 매뉴얼 파일이 존재하는 경로 출력
which mv → alias나 PATH 환경변수로 지정된 경로에서 mv 명령어 파일의 경로 출력
시작 → 명령 모드(커서 이동, 페이지 이동, 글자 삭제, 행 삭제 등)
i, l, a, A, o, O → 입력 모드
Esc → 명령 모드
:, /, ? → 마지막 행 모드
Enter, Esc → 명령 모드
vi file1.txt → 파일을 편집
명령 모드
i → 커서 앞(현재 커서 자리)에 입력
a → 커서 뒤(현재 커서 다음 자리)에 입력
o → 커서가 위치한 행의 다음 행에 입력
명령 모드
ZZ → 작업한 내용을 저장하고 종료
마지막 행 모드
:q, :q! → 저장하지 않고 종료
:wq, :wq! → 저장하고 종료
:w [filename] → 파일명을 지정하면 새 파일로 저장됨
커서 이동하기
k → 커서를 한 행 위로 이동
j → 커서를 한 행 아래로 이동
l → 커서를 한 글자 오른쪽으로 이동
h → 커서를 한 글자 왼쪽으로이동
^ → 커서를 현재 행의 처음으로 이동
$ → 커서를 현재 행의 마지막으로 이동
- → 커서를 앞 행의 처음으로 이동
+, Enter → 커서를 다음 행의 처음으로 이동
화면 이동하기
ctrl+u → 반 화면 위로 이동
ctrl+d → 반 화면 아래로 이동
특정 행으로 바로 이동하기
G → 파일의 마지막 행으로 커서 이동
50G → 50행으로 이동
내용 수정하기
r → 커서가 위치한 글자 수정
cw → 커서가 위치한 단어 수정
내용 삭제하기
x → 커서 위치의 글자를 삭제
dw → 커서 위치의 단어를 삭제
dd → 커서 위치의 행을 삭제(잘라내기)
D → 커서 위치부터 행의 끝까지 삭제
명령 취소하기
u → 명령을 취소
복사하기, 잘라서 붙이기
yy → 커서가 위치한 행을 복사
p → 커서가 위치한 행의 아래쪽에 붙이기
네임드 버퍼 사용하기
yy나 dd, p"a, "b, "1 등 문자나 숫자의 형태"ayy → 복사"ap → 붙여넣기검색하기
/문자열 → 문자열을 아래 방향으로 검색
?문자열 → 문자열을 위 방향으로 검색
n → 다음 문자열
N → 반대 방향의 다음 문자열 (이전 문자열)
바꾸기
:s/문자열1/문자열2 → 커서가 위치한 행에서 첫번째로 나오는 문자열1을 문자열2로 바꾸기
:s/문자열1/문자열2/g → 커서가 위치한 행에서 모든 문자열1을 문자열2로 바꾸기
:%s/문자열1/문자열2/g → 파일 전체의 모든 문자열1을 문자열2로 바꾸기
파일 읽어오기, 여러 파일 편집하기
:r file → 지정한 파일을 읽어들여 현재 커서 위치에 삽입
:e file → 지정한 파일로 전환 ( :w 를 한 뒤에!)
$ vi test.txt exec.txt memo.txt → 하나의 파일 작업을 마치고 :n으로 다음 파일로 이동
vi에서 shell 명령 사용하기
:! 명령어 → vi 작업을 잠시 중단하고 shell 명령을 실행. 다시 돌아오려면 Enter.
:sh → 잠시 vi를 빠져나가서 명령 여러개 사용. 다시 돌아오려면 exit.
기타 명령 키
control+l → 현재 화면을 다시 출력
control+g → 현재 커서 위치의 행 번호를 마지막 행에 출력
. → 바로 직전에 했던 명령을 반복 (== command+shift+z)