Nattawut Phetmak
Jack of all Trades
ไฟล์ในระบบ 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/