# command [-단일문자옵션] [--다중문자옵션]
- 단일 문자로 구성된 옵션은 동시에 여러 개를 지정 할 수 있음
- ls -a -l ==> ls -al 과같이 표현 가능
디렉토리
- 파일을 담고 있는 일종의 방(폴더와 비슷)
- 절대 경로 표현방법 : /[디렉토리]를 기준으로 표현
- 상대 경로 표현방법 : 현재 위치(./)를 기준으로 표현
- 리눅스의 디렉토리는 /[디렉토리]를 기점으로 트리 구조 형성
- 디렉토리는 파일의 일종으로 대소문자를 구별하고 확장자 개념이 없다. 최대 255자
cd
- 디렉토리를 이동하는 명령어
- # cd [디렉토리]
pwd
- 현제 위치한 디렉토리를 절대 경로로 표현하여 출력
- # pwd
rmdir
- 지정한 디렉토리 삭제
- 디렉토리가 비워져 있는 경우만 가능
- # rmdir [삭제할 디렉토리]
mkdir
- 지정한 디렉토리 생성
- 생성한 디렉토리는 생성한 유저의 소유가 됨
- -p : 생성하고자 하는 상위의 디렉토리까지 생성함
- # mkdir [옵션] [생성할 디렉토리]
ls
- 현재 디렉토리의 목록을 출력
- # ls [옵션]
- -a : 숨겨진 파일의 목록까지 출력
- -l : 파일에 대한 정보를 자세히 출력
- -R : 하위 디렉토리의 내용까지 출력
- -h : 사람이 이해하기 쉽도록 파일의 크기 출력
- -k : kb단위로 파일의 크기 출력
- -i : 파일의 inode(고유번호) 번호를 같이 출력
리다이렉트
- 표준 입출력 지시자
- > : 표준 출력 지시자 (command > 파일)
- >> : 추가 표준 출력 지시자 (command >> 파일)
- < : 표준 입력 지시자 (command < 파일)
cat
- 파일의 입출력 제어
- # cat [옵션] [출력 대상 파일]
- -n : 행 단위 번호
- -b : 공백 라인을 제외하고 행 단위 번호
- 기본 입력 파일 : 키보드
- 기본 출력 파일 : CRT
- 입력 파일의 경우 <기호 생략 가능
echo
- 환경 변수나 입력내용을 출력
- # echo [환경변수 | 문자열]
- 리다이렉트 이용시 파일 생성 가능(ex. echo asd>a.txt)
env
- 모든 환경 변수를 출력
cp
- 파일이나 디렉토리를 복사
- # cp [옵션] [원본파일] [복사파일명]
- -a : 원본의 속성유지
- -r : 하위 디렉토리나 파일모두 복사
- -f : 강제 실행
- -p : 파일의 소유와 권한등을 보존한채 복사
- -u : 새파일 덮어쓰기 금지
- cp 명령어를 사용할 때에는 -a -r -f -p 옵션을 전부 사용하는 것이 좋음(ex. cp arfp a.txt b.txt)
mv
- 파일이나 디렉토리를 이동
- # mv [옵션] [원본파일] [이동파일명]
- -f : 강제 실행
- -b : 파일이 덮어 쓰여질 경우 백업파일 생성
- -d : 디렉토리 삭제
- -i : 삭제전 일일이 삭제여부 확인
- -v : 삭제 파일 만들기
rm
- 파일이나 디렉토리 삭제
- # rm [옵션] [대상파일]
- -f : 강제 실행
- -r : 대상 중에 디렉토리가 있는 경우 디렉토리도 삭제
ln
- link파일 생성(soft, hard)
- # ln [옵션] [원본파일] [링크파일]
- -s : soft link 생성(디렉토리는 soft link만 생성 가능)
- -f : 대상이 존재하는 경우 지우고 link파일 생성
more
- 화면 출력을 화면 단위로 제어(출력되는 내용이 많아 화면을 넘어가는 경우 사용)
- # more [파일]
|(파이프)
- 앞쪽명령의 결과를 뒤쪽명령의 입력 값으로 이용 (ex. ls -a | more)
- # command | command
grep
- 필터링(출력 문자열중 원하는 단어나 글자가 들어있는 라인만 출력하고자 할때 사용)
- # command | grep [필터링 문자열]
find
- 파일 시스템에서 조건에 만족하는 파일을 검색
- # find [검색경로] [검색조건1] [검색조건2]....
- -name : 파일명으로 검색(와일드카드문자 사용)
- -perm : 특정 퍼미션을 가진 파일 검색
- -empty : 크기가 0인 파일 검색
- -user : 지정한 사용자가 소유한 파일
- -group : 지정한 그룹이 소유한 파일
- -nouser : 소유자가 없는 파일
- -nogroup : 그룹 소유자가 없는 파일
- -type : 검색하고자 하는 파일의 종류 지정 b(block), c(char), d(dir), l(slink), f(regular)
- -mount : 마운트된 파일 시스템만 검색
- find : paths must precede expression:~~ => -name 옵션 사용시 문자열을 인식하지 못하는 에러 문자열에 ''을 추가한다(ex. find / -name '*.txt')
tar
- 여러 개의 파일을 하나로 압축
- 용량이 줄어들지 않음. 용량을 줄이기 위해서는 gzip을 이용하거나 특별한 옵션을 이용
- 백업용으로 많이 사용
- 다른 명령어와 달리 옵션에 -를 넣지 않음
- # tar [옵션] [압축파일명] [대상]
- -c : 압축
- -x : 풀기
- -v : 작업내용을 출력
- -z : gzip을 이용 압축(압축해제)
- -j : bzip2 이용
- -f : 파일명을 지정
- -p : 퍼미션 유지
gzip
- # gzip a.txt : a.txt.gz로 압축
- # gzip -d a.txt.gz : 파일의 압축 해제
bzip2, compress, cpio
- # bzip2, compress : 압축
- # bunzip2, uncompress : 압축 해제
- # cpio -idmv < [압축파일명] : 압축 해제
실습

pwd는 현재 디렉토리가 어디 있는지 표현해주는 명령어이다.
pwd입력 결과 /home/tr디렉터리에 있는 것을 확인할 수 있다.
mkdir 디렉토리를 생성하는 명령어 이다. 아마 make directory의 약자가 아닐까 싶다.
약자로 생각하며 외우는것은 좋지 않다고 한다. 아닌것들도 많다고 한다.
mkdir ./a입력 후 ls를 입력해보니 a디렉토리가 생성된 것을 확인할 수 있다.
mkdir ./a/b/c를 입력했을때 오류가 나는 이유는 c디렉토리를 생성하기 위해서는 상위 디렉토리인 b디렉토리가 있어야 하는데 b디렉토리가 없기때문에 나는 것이다.
순차적으로 b디렉토리 생성후 c디렉토리를 생성하면 가능하다 mkdir ./a/b 후에 mkdir ./a/b/c로 말이다.
하지만 너무 번거롭지 않은가
이를 해결하기위해 -p라는 옵션을 사용한다.
mkdir -p ./a/b/c를 입력하면 b디렉토리까지 자동으로 생성을 해준다.
rmdir은 디렉토리를 삭제하는 명령어이다 remove directory의 약자가 아닐까...
단 rmdir은 디렉토리 안에 파일이나 디렉토리가 없을경우에 삭제가 가능하다
위와 같이 a디렉토리 안에 b디렉토리가 있는 상태에서 a디렉토리를 지우려고 하면 b디렉토리가 있기때문에 삭제가 되지 않는다.

cat명령어는 파일의 입출력을 관리하는 명령어이다.
>는 출력지시자, <는 입력 지시자이다.
cat >a.txt는 a.txt파일을 출력하는 명령어인데 입력된 파일이 없을경우 디폴트로 키보드 입력값이 출력이 된다.
결과 ls를 입력해보니 a.txt 파일이 있는것을 확인할 수 있다.
여기서 ls 목록에 검은색 글씨와 파란색 글씨가 있는데 검은색은 파일을 나타내고 파란색은 디렉토리를 나타낸다고 한다. 이는 유닉스에는 없고 리눅스에만 존재하는 편리성이다.
cat <a.txt를 입력해 보니 hello가 출력되는것을 확인할 수 있다.
cat a.txt를 입력해도 hello에서 출력이 된다. <는 생략이 가능하다는 것을 확인할 수 있다.
cat <a.txt>b.txt는 뭘까?
a.txt를 입력받아 b.txt로 출력한다는 명령어인데 a.txt의 데이터를 b.txt로 복사한다는 말과 유사하다.
cat b.txt를 입력해보면 hello가 출력되는 것을 확인할 수 있다.

echo 명령어는 환경변수나 입력내용을 출력하는 명령어다. 리다이렉트를 사용하면 파일 생성도 가능하다.
환경변수에 대해서는 아직 잘 모르니 나중에 다시 공부하도록 하자.
echo hello>a.txt를 입력하니 현재 디렉토리에 내용이 hello인 a.txt가 생성된것을 확인할 수 있다.

cp는 파일이나 디렉토리를 복사하는 명령어 이다.
cp a.txt b.txt를 입력하니 a.txt와 내용이 같은 b.txt가 생성된 것을 확인할 수 있다.

mv는 파일이나 디렉토리를 이동할때 사용하는 명령어이다.
a디렉토리를 생성하고 mv a.txt ./a를 입력하였더니 a.txt파일이 a디렉토리로 들어가는 것을 확인할 수 있었다.
mv b.txt c.txt를 입력했더니 b.txt가 없어지고 c.txt가 생겨난것을 확인할 수 있었다.

링크는 이름이 긴 파일이나 디렉토리를 이용하여 작업할 경우 짧은 이름의 링크를 만들어 작업을하면 좀더 작업을 수월하게 할 수 있을 것 같다.