2021-3-12 유닉스기초(4) 파일조회
6장 파일과 디렉터리의 생성, 이동, 이름 변경, 삭제
-
mkdir : 디렉터리 생성 명령어
-
$mkdir dir => 현재 디렉터리에 dir 디렉터리 생성 $mkdir /path/dir => path에 디렉터리 생성
-
-
cp : 파일 복사, 윈도우나 맥에서는 파일을 불러오거나 이동할때 드래그앤드롭을 사용한다. => 파일의 위치가 동일한 하드웨어면 이동, 다른 하드웨어이면 복사. 반면 유닉스는 파일 이동과 복사를 구별한다.
-
디렉터리는 cp로 안된다.
-
$cp 원본파일 복사본이름 $cp login.copy profile.copy newDir // 파일들을 newDir에 복사
- -R플래그를 이용하면 파일들과 디렉터리를 재귀적으로 복사할 수 있다.
-
-
mv : 파일, 디렉터리 위치를 변경, mv를 통해 파일이름을 변경할 수 있고, 디렉터리 이름은 변경할 수 없다.
-
$mv profile.copy login.copy $mv -i profile.cpoy login.copy overwrite login.copy? (y/n [n])
- login.copy 파일이 존재하면 profile.copy가 login.copy를 덮어쓰고 아무런 경고를 하지 않는다. -i 플래그를 사용하면 무조건 덮어쓰기를 방지할 수 있다.
-
-
rmdir : 디렉터리 삭제, 비어있는 디렉터리만 삭제
-
rm : 파일삭제, 복구할 수 없도록 영원히 삭제 => 휴지통에도 없다. -i 플래그를 이용하면 삭제할지 묻는다. -r플래그를 이용하면 디렉터리 계층을 재귀적으로 내려가면서 파일을 삭제한다. -f플래그를 사용하면 경고메세지, 권한도 무시한다. rm -rf /* 사용하면 답이 없다.
7장 파일 들여다보기
-
file : 파일의 첫 몇줄을 보고, 어떤 파일인지를 사용자에게 가르쳐준다. 하지만 100% 정확한 결과를 못준다. 권한 정보와 파일의 이름, 저장된 내용의 앞줄을 분석하여 결과를 내는데, C프로그램 소스가 실행권한이 있으면 실행파일이라고 결론을 내려서 부정확하다.
-
$file 스크린샷\ 2021-03-10\ 오전\ 11.49.56.png 스크린샷 2021-03-10 오전 11.49.56.png: PNG image data, 959 x 1035, 8-bit/color RGBA, non-interlaced $file build.gradle build.gradle: ASCII text $file * build.gradle: ASCII text gradle: directory gradlew: a /usr/bin/env sh script text executable, ASCII text gradlew.bat: DOS batch file text, ASCII text, with CRLF line terminators settings.gradle: ASCII text src: directory $file * [: Mach-O 64-bit executable x86_64 bash: Mach-O 64-bit executable x86_64
-
*를 붙이면 현재 디렉터리에 존재하는 모든 파일을 분석, *는 현재 디럭터리 내에 있는 모든 파일의 이름으로 대체
-
$ls build.gradle gradlew settings.gradle gradle gradlew.bat src $echo * build.gradle gradle gradlew gradlew.bat settings.gradle src
-
-
개인적인 생각 : file 명령어에 대한 동작은 Linux 버전마다 살짝 다르고, 얼마나 유용한지, 정확한지 잘 모르겠다.
-
head : 파일의 앞 10줄만 보는 명령어 -[숫자] 옵션을 줘서 line 지정도 가능
-
$head build.gradle plugins { id 'org.springframework.boot' version '2.4.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'me.jimmy' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' $head -5 build.gradle plugins { id 'org.springframework.boot' version '2.4.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' }
-
-
tail : 파일의 뒷 10줄을 보는 명령어, -[숫자] 옵션을 통해 뒤에 몇줄까지 출력할지 지정가능
-
$head ~/.zshrc | tail -3 # load a random theme each time oh-my-zsh is loaded, in which case, # to know which specific one was loaded, run: echo $RANDOM_THEME # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
-
위의 명령어 처럼 head와 tail을 파이프라인을 이용하여 조합이 가능, head를 통해 .zshrc의 10줄까지 출력하고 그 결과의 마지막 3번째 줄을 출력해서 8,9,10번쨰 줄을 출력
-
: 파이프라인 -
cat 명령어 : 파일의 내용을 전부본다. -v를 주면 실행파일이여도 안전하게 출력, -s을 주면 빈줄이 여러개일때 1줄만 출력, -n플래그를 사용하면 출력할때 라인출력
-
$cat -n build.gradle 1 plugins { 2 id 'org.springframework.boot' version '2.4.2' 3 id 'io.spring.dependency-management' version '1.0.11.RELEASE' 4 id 'java' 5 } 6 7 group = 'me.jimmy' 8 version = '0.0.1-SNAPSHOT' 9 sourceCompatibility = '11' 10
- 텍스트 양이 클 경우, cat 명령어를 이용하면 내용이 위로 올라가는 경우가 많다. 이때 more 명령어를 쓴다.
-
more 명령어 : 출력되는 내용을 페이지 단위로 확인
-
-s : 여러 빈줄을 하나로 합친다.
-
-d : 각 페이지의 마지막에 출력되는 프롬프트를 친수갛게 바꾼다.
-
-c : 페이지가 넘어갈때마다 이전 출력된 페이지를 화면에서 지운다.
-
$more -12 .zshrc // 12번째 줄부터 본다. $more +/source .zshrc // source 단어가 있는 줄부터 출력
-
-
more 프롬프트
- [space] : 다음페이지 출력
- n[return] 다음 n줄이 출력 그렇지 않으면 다음 한줄이 출력
- h : more에서 사용할 수 있는 명령어목록
- d : 아래쪽으로 반페이지 스크롤
- q : more프로그램 종료
- ns : 다음 n줄을 건너뛴다.
- nf : 다음 n페이지를 건너뛴다
- b : 이전페이지로 돌아간다
- = : 현재 행 번호를 출력
- /pattern : pattern이 등장하는 위치를 찾는다.
- n : 앞서 지정한 패턴이 등장하는 다음 위치를 찾는다
- v : 현재 줄에서 vi 에디터를 실행
- Ctrl-i : 화면을 refresh한다.
- f : 현재보고 있는 파일 이름과 행을 출력
-