File

ไฟล์ในระบบ Unix/Linux มีด้วยกัน 2 แบบหลักคือ text (คนเปิดอ่านรู้เรื่อง) กับ binary (หรือ executable คอมเปิดอ่านรู้เรื่อง) ซึ่งชื่อของมันนั้นไม่จำเป็นต้องลงท้ายด้วย extension เพื่อแยกว่าเป็นชนิดไหนก็ได้ (ระบบจะรู้จาก metadata เอง) ส่วนการที่เราจะรู้ชนิดของมันได้นั้น สามารถใส่ตัวเลือกเพื่อให้แสดงเครื่องหมาย / ตามหลัง directory หรือ * ตามหลัง executable (ส่วน text จะไม่มีอะไรตาม) ดังนี้

$ ls -F
a.exe*  doc/  hello.c  simple  src/

การจะเรียกใช้ไฟล์ใดๆ ต้องนำหน้าด้วย ./ หรือ path ที่จะเข้าถึงไฟล์ได้ (ไม่งั้นระบบจะเข้าใจว่าเป็นการเรียกโปรแกรมจาก global แทน) เช่น ต้องการเรียกโปรแกรม a.exe ซึ่งเป็นโปรแกรม hello world

$ # incorrect
$ a.exe
bash: a.exe: command not found
$
$
$ # correct
$ ./a.exe
hello world!

นอกจากนี้ ยังสามารถเรียกใช้งาน shell script จากไฟล์ได้อีกด้วย เช่น ไฟล์ simple เก็บคำสั่ง echo hello shell;

$ ./simple
hello shell

และการอ้างชื่อไฟล์นั้น จะทำโดยใช้ wildcard ก็ได้ โดยสัญลักษณ์ที่ใช้บ่อยคือ * ที่หมายความแทนตัวอักษรใดๆ เป็นจำนวนกี่ตัวก็ได้ เช่น

$ # list files that store in any directory
$ ls */
doc/:
README  tutorial  manual

src/:
compiler

การ copy ไฟล์ทำได้โดยคำสั่ง cp ตามด้วยไฟล์ต้นฉบับ และที่อยู่ที่จะ copy ไฟล์นั้น

$ cp hello.c src/
$ ls src/
compiler  hello.c
$
$ cp hello.c src/hola.c
$ ls src/
compiler  hello.c  hola.c
$
$
$ # copy multiple files will lost ability to rename while copying
$ cp a.exe simple src/
$ ls src/
a.exe  compiler  hello.c  hola.c  simple
$
$
$ # to copy entire directory, use -r option
$ cp -r src/ test/

การย้ายไฟล์จะคล้ายๆ การ copy คือใช้คำสั่ง mv ตามด้วยไฟล์ที่ต้องการย้าย และที่อยู่ที่จะย้ายมันไป

$ mv doc/README src/
$ ls src/
README  a.exe  compiler  hello.c  hola.c  simple
$
$
$ # rename file is action of moving old file to new file
$ mv src/simple src/script
$ ls src/
README  a.exe  compiler  hello.c  hola.c  script
$
$
$ # move entire directory no need of -r option
$ mv doc/ src/
$ ls src/
README  a.exe  compiler  doc  hello.c  hola.c  script

ส่วนการลบไฟล์นั้น ทำได้โดยคำสั่ง rm ตามด้วยชื่อไฟล์ที่ต้องการลบ

$ rm src/a.exe src/h*
$ ls src/
README  compiler  doc  script
$
$
$ # remove entire directory with -r option
$ rm -r test/
$ ls
a.exe*  hello.c  simple  src/

Nattawut Phetmak

Jack of all Trades

blog comments powered by Disqus