pwd 명령어는 현재 작업 디렉터리를 나타내며 폴더명을 알려준다.
cd /
ls
여기서 '/' 디렉토리(기본 폴더)로 간 뒤 list를 보면 해당 폴더에 있는 파일과 폴더 list를 볼 수 있다.

그 중 home 폴더에 들어가면 내가 설정한 컴퓨터 이름을 볼 수 있다.
cd ~
이렇게 폴더에 접속하면 맨 처음 기본 pwd를 입력했을 때의 경로에 도달할 수 있다.
ls -F
를 입력하게 되면 기존 폴더명들 나열에서 '/'가 추가되어 보이는 것을 확인할 수 있다.
echo "Hello World" > file.txt
위 명령어로 file.txt 파일을 만들어 주고 그 안에 "Hello World"라는 문장을 넣었다.
그 다음 다시 'ls -F' 명령을 하게 되면 방금 생성한 파일이름 뒤에는 '/'가 없는 것을 볼 수 있다. 이 슬레쉬(/)는 폴더와 파일을 구별해주는 것이다.
이 출력을 파일에 저장해보면
ls -F > list.txt

파일 속에도 적용되어 내용이 출력된 것을 볼 수 있다.
ls -l
위 명령을 실행하면 현재 있는 폴더의 파일과 폴더에 대해 자세한 리스틑업이 출력된다.

첫번째 10자리 단어의 의미는 아래와 같다.

그 다음 단어들은 순서대로 Owner, Group, File Size, Last Modified, File name을 나타낸다.
cd 명령어를 통해 다른 폴더로 이동할 수 있다.
cd / # 절대 경로
cd /home/(컴퓨터 이름)/Downloads/ # 절대 경로를 이용해서 Downloads 폴더로 이동
cd ~ # 틸다 이용
cd ~/Downloads # 틸다 이용해서 Downloads 폴더로 이동
cd Downloads # 상대 경로 이용해서 Downloads 폴더로 이동
# 단, 이건 현재 폴더에 Downloads 폴더가 있는 경우에만 가능.
아래 명령어를 통해 리스트를 보면 숨겨진 폴더나 파일까지 모두 확인할 수 있다.
ls -a
그 중 . 과 ..이 있는데 .은 현재 경로, ..은 상위폴더로 이동하는 것이다.
폴더를 이동할 때 폴더 경로를 일일이 길게 작성하는 것이 비효울적일 때가 있다. 그럴때는 '/'를 입력하고 원하는 폴더 단어를 몇개 입력한 뒤 tab을 누르면 해당 단어로 시작하는 폴더들을 보여주고 해당하는 폴더가 하나라면 그 폴더명이 자동 완성된다.
파일 확장자를 알아보기 위해서 우선 2가지를 준비해준다.
그리고 터미널에서 cd Desktop/으로 Desktop폴더로 이동한 다음에 file image.jpg를 실행한다.
파일에 대한 설명이 출력되는데 이미지 파일을 'image.png'로 변경 후 다시 file image.png를 실행한다. 파일 확장자가 바꼈음에도 파일에 대한 설명이 'JPEG image data'로 동일하게 나오는 것을 확인할 수 있다.
이를 통해 Linux에서 파일 확장자는 중요하지 않은 것을 알 수 있다. Linux에서는 파일 헤더부분의 데이터를 읽어서 파일 형식을 알 수 있다.
텍스트 파일도 동일하다 'txt'나 'pdf' 파일은 file 명령으로 파일 확장자를 보면 'ASCII' 파일로 동일하다.
Linux에도 Microsoft의 Excel과 동일한게 있는데 'LibreOffice Calc'이다.
해당 파일로 하나 생성하고 file명령으로 파일 확장자를 보면 'OpenDocument Spreadsheet'라고 출력된다.
이 파일의 확장자를 'txt'로 변경하고 Calc에서 열려고 하거나 텍스트 파일로 열려고 하면 오류가 나고 해당 파일을 file 명령으로 확인해도 확장자가 변경되지 않음을 확인할 수 있다.
Linux에서는 파일명에 있는 확장자명은 중요하지 않다고 볼 수 있다.
ls 명령어를 사용할 때 현재 위치에 있는 폴더나 파일 리스트 말고, 현재 위치에 있는 폴더 중 몇개의 폴더 내 리스트업을 하기 위해선 아래와 같은 방법을 사용할 수 있다.
ls Documents/ Downloads/ Desktop/ # '/'를 생략해도 무방하다.
현재 위치에 있는 폴더들 내 파일들을 리스트업 하기 위해선 아래와 같은 방법을 사용할 수 있다.
ls *
여기서 D로 시작하는 모든 폴더의 파일을 리스트업 하고 싶다면 아래와 같은 방법을 사용할 수 있다.
ls D*
만약 텍스트 파일만 리스트업 하고 싶다면 아래와 같은 방법을 사용할 수 있다.
ls *.txt
만약 텍스트 파일인데 파일명 글자 수가 한 개인 텍스트 파일들을 리스트업 하려면 아래와 같은 방법을 사용할 수 있다.
ls ?.txt

이 외에도 파일명이 살짝씩만 다른 파일들을 리스트업 하는 방법은 아래와 같다.
ls file?.txt
ls file[123].txt
ls file[1-3].txt

.txt로 끝나는 홈 디렉토리의 모든 파일을 나열하는 명령은?
ls ~/*.txt
파일명에 1, 3이 들어간 파일만 나열하는 명령은?
ls *[1,3]*
정규식은 텍스트를 일치시키는데 사용할 수 있는 패턴이다.
Linux에서는 사용자가 명령을 실행하려는 파일에 대해 다소 일반적인 표현을 만들 수 있도록 하는데 사용된다.
파일 이름과 일치하는 정규식을 만드는 것을 Globbing(글로빙)이라고 하며 정규식 패턴은 와일드카드라는 특수 구성 요소를 사용하여 만들 수 있다.
와일드 카드는 Sheell에 대한 특정 의미를 갖는 기호이다.
* : 길이에 관계없이 무엇이든 일치한다.? : 무엇이든 일치하지만 한 장소에만 해당된다.[ ] : 한 장소에 대해서만 내부 옵션과 일치한다.touch 명령어를 사용하면 파일을 새로 생성할 수 있다.
touch a.txt # a.txt 파일 생성
mkdir 명령어는 'make directory'의 약자로 사용하면 폴더를 새로 생성할 수 있다.
만약 새로운 폴더를 생성과 동시에 그 폴더 안에 새로운 폴더를 만들기 위해서는 아래 방법을 사용할 수 있다.
mkdir -p folder1/folder2
띄어쓰기로 폴더명들을 구별한다면 한번에 여러개의 폴더를 생성할 수도 있다.
mkdir a b c
만약에 폴더명에 띄어쓰기가 있는 경우에는 폴더명을 따옴표 안에 넣어서 만들어준다. (하지만 보통 스페이스로 공백을 주기보단 언더바로 공백을 주어 만드는 것이 이상적이다.)
mkdir "a b c"
mkdir "a_b_c"
challenge라는 폴더를 만들고 그 안에 폴더명이 'jan_2024', 'feb_2024', ... 'nov_2026'이렇게 36개의 폴더를 한번에 만들고 싶다면 어떻게 할까?
mkdir challenge
cd challenge
mkdir {jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec}_{2024,2025,2026}
위 명령어들을 실행하면 여러개의 폴더를 지정된 규칙에 의해 한번에 만들 수 있다.

방금 만든 각 폴더마다 1~100파일을 생성하고 싶다. 어떻게 할까?
touch {jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec}_{2024..2026}/file{1..100}
위 명령어를 실행하면 여러개의 파일을 지정된 규칙에 의해 여러 폴더에 한번에 만들 수 있다.

파일을 삭제하고 싶을 땐 아래 명령어를 사용하여 삭제할 수 있으며 하나 또는 여러개, 여러 곳에 있는 파일들을 한번에 삭제할 수도 있다. 이럴 때 사용하는 명령어는 rm 이며 'remove'의 약자이다.
rm (삭제하고 싶은 파일명1) (삭제하고 싶은 파일명2)
rm (파일 위치)/(삭제하고 싶은 파일명)
touch ↔ rm 으로 생각하면 되고 rm도 와일드카드(*, ?, [ ]) 사용이 가능하다.
파일을 생성하고 삭제할 때 touch, rm 명령어가 있었다면 폴더 생성 명령어인 mkdir의 짝꿍도 있다.
rm -r (삭제하고 싶은 폴더명)
폴더가 비어 있어도, 파일이 있어도 삭제 가능하다.
rm -ri (삭제하고 싶은 폴더명) # 대화형으로 세부적으로 삭제를 할 수 있다.

rmdir deletefolder/* # 비어 있는 폴더만 삭제
파일과 폴더를 복사할 때는 cp 명령어를 사용한다. cp는 'copy'의 약자이다.
우선, 파일을 복사하는 방법이다.
echo "Hello World!" > file1.txt # file1.txt 파일 안에 "Hello World!" 문장과 함께 생성.
cp file1.txt file2.txt
여러 파일을 다른 폴더(위치)로 복사하는 방법이다.
mkdir destination # destination이란 폴더 생성
cp file1.txt file2.txt destination/
rm file* # 현재 위치에서 file로 시작하는 파일 전부 삭제.
cp destination/* . # destination 폴더에 있는 파일 전체를 현재 위치로 복사

폴더를 복사하는 방법이다. 삭제하는 방법과 동일하게 -r를 붙여준다.
cp -r (복사하고 싶은 폴더명) (복사하고 싶은 위치)
우선 파일을 이동시킬 때는 mv 명령어를 사용하는데 'move'의 약자이다. 이동도 가능하지만 이름 변경하는데에도 사용된다.
touch file1.txt
mv file1.txt file2.txt # file1이 file2로 이름 변경
mkdir folder
mv folder newfolder # 변경 및 이동할 때는 -r을 붙여주지 않아도 된다.
이 외에도 다양한 이동에 관한 명령은 아래와 같다.
touch newfolder/file{1..3}.txt
mv newfolder/* .
mv file* newfolder
mv newfolder/ ~/Documents
mv ~/Documents/newfolder ./folder # 폴더 위치 변경 하면서 이름도 변경하기
파일을 생성하고 파일을 열어서 직접 파일 내용을 편집할 수 있지만, 터미널을 이용해서 파일 내용을 편집을 해보려고 한다.
nano file.txt
위 명령어를 입력하면 file.txt 파일을 터미널에서 열게 된다.

원하는 내용을 입력하고 저장하고 싶으면 'ctrl+o'를 해주고 편집 화면에서 나가고 싶다면 'ctrl+x'를 해주면 된다.
(위 그림에서 하단에 설명이 있는 것 처럼 ^ = ctrl이라고 생각하면 된다.)
이번에는 다른 파일에 있는 내용을 다른 파일에 옮기는 방법이다.
echo "It's file2" > file2.txt
nano file.txt
-- 문서 편집 화면으로 이동--
^r
file2.txt
이때 내용을 옮길 떄 커서의 위치에 옮겨지기 때문에 커서의 위치를 먼저 이동한 뒤 'ctrl+r'을 하여 내용을 붙여 넣는다.
nano 편집화면에서는 검색 기능도 된다.
'ctrl+w'를 누르면 원하는 검색어를 입력할 수 있고,
검색어를 대소문자 구별하여 검색하는 것으로 변경할 수도 있는데 'ctrl+w'에서 'M-c'를 이용하면 된다. (여기서 'M-'는 'alt'키 이다.)
locate 명령어에 대해 가장 먼저 알아야할 것은 이 명령이 시스템에 있는 "데이터베이스 파일"을 검색하여 작동한다는 것이다.
이 데이터베이스는 시스템에 있는 모든 파일에 대한 위치 정보를 보유하고 있다.
locate 명령이 작동하는 방식은 찾을 패턴을 제공한 다음 locate가 해당 패턴과 일치하는 모든 경로에 대해 데이터베이스를 검색하여 표준 출력으로 다시 제공하는 것이다.
처음에는 검색이 잘 안 될 수 있으므로 아래 명령어로 설치하는 것을 추천한다.
sudo apt install plocate
대소문자 구분 없이 검색하려면 아래 명령을 이용하면 된다.
locate -i (원하는 검색어)
검색된 파일명들의 갯수를 제한하려면 아래 명령을 이용하면 된다.
locate -i --limit (원하는 갯수) (원하는 검색어)
locate 명령어를 사용할 때 새로 만들어진 파일은 바로 데이터베이스에 업데이트 되지 않아 검색되지 않는 경우가 있는데 그럴 때 임의로 업데이트 하는 명령이 있다.
sudo updatedb
find 명령어는 locate 명령보다 더 정교한 검색 작업에 사용될 수 있다. 이것은 find 명령어의 다양한 option 덕분에 가능하다.
<locate 명령어와 차이점>
1. find 명령어가 속도가 더 느리다.
: 데이터 베이스에서 찾는 것이 아니기 때문.

배울수록 재밌는 리눅스였던거 같다 ㅎㅎ
걱정과 달리 생각보다 기존 Window나 IOS와 비슷해서 (오히려 IOS보다 쉬웠달까 ㅎ) 쉽고 재밌게 배울 수 있었던거 같다~!