วิธีคัดลอกไฟล์โดยใช้คำสั่ง “ติดตั้ง” บน Linux
เผยแพร่แล้ว: 2022-01-29
install เป็นคำสั่งคัดลอกไฟล์อเนกประสงค์ใน Linux และ macOS เหมาะอย่างยิ่งสำหรับผู้ใช้ระดับสูงที่ต้องการประสิทธิภาพ อ่านบทความนี้เพื่อค้นพบวิธีทำงานอย่างชาญฉลาดยิ่งขึ้น—ไม่ยากขึ้น
รอ—ไม่ใช่สำหรับการติดตั้งซอฟต์แวร์ใช่ไหม
คำสั่ง install อาจมีชื่อคำสั่ง Linux ที่ทำให้เข้าใจผิดมากที่สุด มันไม่ได้ติดตั้งซอฟต์แวร์ใด ๆ เลย หากคุณกำลังพยายามติดตั้งแพ็คเกจซอฟต์แวร์จากบรรทัดคำสั่งใน Ubuntu หรือการแจกจ่ายแบบ Debian อื่น ให้ใช้คำสั่ง apt-get สำหรับลีนุกซ์รุ่นอื่นๆ ให้ใช้เครื่องมือการจัดการแพ็คเกจของลีนุกซ์รุ่นแจกจ่ายแทน—เช่น dnf บน Fedora หรือ zypper บน openSUSE
ดังนั้นการติดตั้งทำอะไร?
สรุปการ install รวมองค์ประกอบจากคำสั่ง cp (คัดลอก), chown (เปลี่ยนเจ้าของ), chmod (โหมดเปลี่ยน), mkdir (สร้างไดเรกทอรี) และคำสั่ง strip (สัญลักษณ์แถบ) ช่วยให้คุณใช้ฟังก์ชันจากฟังก์ชันทั้งหมดได้ในการดำเนินการเดียว
คำสั่ง install สามารถ:
- คัดลอกไฟล์เช่นคำสั่ง
cp - เลือกว่าจะเขียนทับไฟล์ที่มีอยู่หรือไม่
- สร้างไดเร็กทอรีเป้าหมายหากไม่มีอยู่ เช่น
mkdir - ตั้งค่าสถานะการอนุญาตผู้ใช้ของไฟล์ เช่นเดียวกับคำสั่ง
chmod - ตั้งค่าเจ้าของไฟล์ เช่นเดียวกับคำสั่ง
chown - นำสัมภาระที่ไม่จำเป็นออกจากไฟล์สั่งการ เช่นเดียวกับคำสั่ง
strip
แม้จะมีฟังก์ชันทั้งหมดนั้น คำสั่ง install ก็ไม่มีตัวเลือกมากมายให้ต้องต่อสู้ด้วย

เมื่อไหร่ที่คุณจะใช้มัน
คำสั่ง install อาจจะไม่ได้ใช้ทุกวัน มีประโยชน์ แต่สำหรับบางสถานการณ์เท่านั้น สถานการณ์หนึ่งที่การ install เกิดขึ้นเองคือการพัฒนาซอฟต์แวร์ สมมติว่าคุณกำลังเขียนโปรแกรมยูทิลิตี้ใหม่ คุณจะต้องทำการทดสอบนอกสภาพแวดล้อมการพัฒนา ในการทำเช่นนั้น คุณต้องคัดลอกไฟล์โปรแกรมใหม่ไปยังไดเร็กทอรีทดสอบ อาจจำเป็นต้องสร้างไดเร็กทอรีทดสอบ และคุณต้องตั้งค่าสิทธิ์และความเป็นเจ้าของไฟล์ที่ถูกต้อง
เนื่องจากการพัฒนาเป็นกิจกรรมที่ต้องทำซ้ำๆ คุณจึงสามารถทำลำดับการกระทำนี้ได้หลายครั้ง หลายๆ ครั้ง คำสั่ง install จะทำทุกอย่างให้คุณ สุดท้าย เมื่อยูทิลิตี้ใหม่ของคุณพร้อมที่จะปรับใช้ คุณสามารถใช้การ install เพื่อคัดลอกโดยมีสิทธิ์ที่ถูกต้องไปยังตำแหน่งการทำงานสุดท้าย
ตัวอย่าง
โปรแกรมเมอร์กำลังทำงานกับยูทิลิตี้ใหม่ที่เรียกว่า ana ประกอบด้วยไฟล์ไบนารีที่ปฏิบัติการได้และฐานข้อมูล หลังจากการทดสอบ จะต้องคัดลอกไฟล์ไปยัง /usr/local/bin เพื่อให้พร้อมใช้งานสำหรับผู้ใช้ระบบ Linux ทุกคน คุณจะต้องแทนที่ชื่อไฟล์และเส้นทางไดเรกทอรีในตัวอย่างของเราสำหรับไฟล์และเส้นทางที่คุณใช้บนคอมพิวเตอร์ของคุณเมื่อคุณใช้ install
จนกว่ามันจะพร้อมสำหรับการเปิดตัว มันจะทำการทดสอบในไดเร็กทอรีชื่อ ~/test/ana สมาชิกของกลุ่ม geek จะมีสิทธิ์ในการอ่านและดำเนินการ ผู้ใช้รายอื่นจะมีสิทธิ์ในการอ่านและดำเนินการด้วย คำสั่ง install ใช้การแสดงตัวเลขแบบเดียวกันสำหรับการอนุญาตเช่นเดียวกับ chmod โปรแกรมเมอร์ของเราตัดสินใจว่าต้องตั้งค่าการอนุญาตเป็น:
- เจ้าของ: อ่าน เขียน และดำเนินการ
- กลุ่ม: อ่านและดำเนินการ
- อื่นๆ: ดำเนินการเท่านั้น
วิธีใช้คำสั่ง install
ไดเร็กทอรีการทำงานของโปรแกรมเมอร์สมมติของเราคือ ~/work เขาได้เขียนโปรแกรม คอมไพล์มัน และสร้างไบนารีที่เรียกว่า ana เขาได้สร้างไฟล์ฐานข้อมูลที่ ana ใช้งานได้แล้ว Words.db ดังนั้นไฟล์ทั้งสองจึงพร้อมสำหรับการทดสอบ ลองดูที่พวกเขา:
ls -l ana Words.db

โปรแกรมอรรถประโยชน์ ana ที่เขาเพิ่งเขียนสร้างแอนนาแกรมจากวลีที่ให้ไว้ในบรรทัดคำสั่ง การทดสอบยืนยันค่อนข้างตรงไปตรงมา

โปรแกรมเมอร์ของเราเรียก ana ด้วยวลี "biscuit" และทุกอย่างก็ดูดี ตอนนี้เขาต้องการคัดลอกไฟล์ทั้งสองนี้ไปยังไดเร็กทอรี ~/test/ana เพื่อดูว่ายูทิลิตี้ใหม่ทำงานอย่างถูกต้องหรือไม่จากสภาพแวดล้อมการพัฒนา เขาออกคำสั่งดังต่อไปนี้:
ติดตั้ง -D -v ana Words.db -t ~/test/ana

ตัวเลือกที่ใช้ในบรรทัดคำสั่งคือ:
- D : สร้างไดเร็กทอรี รวมถึงไดเร็กทอรีหลัก หากจำเป็น
- v : ละเอียด แสดงรายการแต่ละไดเร็กทอรีตามที่สร้างขึ้น และแต่ละไฟล์คัดลอกเมื่อดำเนินการ
- t : ไดเรกทอรีเป้าหมาย
เราจะเห็นว่าการ install สร้างไดเร็กทอรี ~/test แล้วสร้างไดเร็กทอรี ~/test/ana ไฟล์ถูกแสดงรายการทีละรายการเนื่องจากถูกคัดลอกไปยังไดเร็กทอรีเป้าหมาย
การแสดงรายการไฟล์ใน ~/test/ana ยืนยันว่าไฟล์เหล่านั้นถูกคัดลอกอย่างถูกต้อง
ลส -ล

ขั้นตอนต่อไปคือการทดสอบยูทิลิตี้ ana โดยเรียกใช้ในไดเร็กทอรี ~/test/ana

ยูทิลิตี้ทำงานตามที่คาดไว้ซึ่งดีมาก อย่างไรก็ตาม การอนุญาตไม่ถูกต้อง ข้อกำหนดคือการตั้งค่าสมาชิกของกลุ่ม geek ให้มีสิทธิ์ในการอ่านและดำเนินการ และสำหรับผู้ใช้รายอื่นให้ดำเนินการเท่านั้น
เราสามารถแก้ไขปัญหาทั้งสองอย่างง่ายๆ ด้วยคำสั่งต่อไปนี้ สังเกตการใช้ sudo เพื่อรันคำสั่งด้วยสิทธิ์รูท -o และ -g และตัวเลือกต้องการสิ่งนี้ เราจะขอรหัสผ่านเมื่อเราออกคำสั่ง
sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

- อ็อพชัน
-b(backup) จะสร้างการสำรองข้อมูลของไฟล์ก่อนที่จะถูกเขียนทับ - ตัวเลือก
-S(ส่วนต่อท้าย) กำหนดส่วนต่อท้ายสำหรับไฟล์สำรอง หากคุณไม่ได้ระบุคำต่อท้าย ให้ใช้~(ตัวหนอน) เรากำลังขอให้installใช้คำต่อท้าย.bak - เราตั้งค่าให้เจ้าของไฟล์เป็น
daveฟโดยใช้ตัวเลือก-o(เจ้าของ) - ตัวเลือก
-g(กลุ่ม) ต้องการชื่อของกลุ่ม ซึ่งจะกลายเป็นกลุ่มเจ้าของไฟล์ กลุ่มที่เราจะใช้เรียกว่าgeek - ตัวเลือก
-m(โหมด) ตั้งค่าโหมดไฟล์สำหรับไฟล์ โดยใช้ไวยากรณ์ตัวเลขchmodมาตรฐาน
เราไม่จำเป็นต้องใช้ตัวเลือก -D (สร้างไดเร็กทอรี) อีกต่อไป เพราะเรารู้ว่าไดเร็กทอรีทดสอบมีอยู่แล้ว นอกจากนี้เรายังละเว้นตัวเลือก -v (verbose) การแสดงรายการไฟล์ในไดเร็กทอรี ~/test/ana ของเราจะแสดงรายละเอียดไฟล์ให้เราเห็น:
ลส -ล

นี่เป็นการยืนยันว่าเป็นไปตามข้อกำหนดทั้งหมดของเราแล้ว
- ไฟล์ถูกคัดลอกไปยังไดเร็กทอรีการทดสอบ
- สิทธิ์ได้รับการตั้งค่าอย่างถูกต้อง
-
daveฟเป็นเจ้าของไฟล์ - กลุ่ม
geekคือกลุ่มเจ้าของไฟล์ทั้งสอง - สำเนาสำรองของแต่ละไฟล์เรียกว่า ana.bak และ Words.db.bak
ทั้งหมดนี้ทำได้โดยใช้คำสั่งเดียว ประณีต.

โปรแกรมเมอร์ของเราทำการเปลี่ยนแปลงขั้นสุดท้ายกับยูทิลิตี้และคอมไพล์ใหม่ ไฟล์ที่เปลี่ยนแปลงจะต้องถูกคัดลอกไปยังไดเร็กทอรี ~/test/ana จากไดเร็กทอรี ~/work เราสามารถทำได้โดยใช้ตัวเลือก -C (เปรียบเทียบ) หากไฟล์ต้นทางและไฟล์เป้าหมายเหมือนกัน ไฟล์ต้นฉบับจะไม่ถูกคัดลอก
sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

รายชื่อไฟล์ในไดเร็กทอรีเป้าหมายแสดงให้เราเห็นว่าขนาดไฟล์ของไฟล์ ana มีการเปลี่ยนแปลง มีขนาดใหญ่กว่าไฟล์ ana.bak การประทับเวลาบน ana ก็เปลี่ยนไปเช่นกัน การเปลี่ยนแปลงเหล่านี้เกิดจากการคัดลอกไฟล์เวอร์ชันใหม่ที่นี่
ลส -ล

ขนาดไฟล์และการประทับเวลาของไฟล์ Words.db ไม่มีการเปลี่ยนแปลง ไม่มีการเปลี่ยนแปลงใดๆ กับไฟล์ Words.db ดังนั้นจึงไม่มีการคัดลอกไฟล์ดังกล่าว ในโปรเจ็กต์ที่มีไฟล์จำนวนมาก ตัวเลือก -C (เปรียบเทียบ) สามารถประหยัดเวลาและการเปลี่ยนฮาร์ดไดรฟ์ได้มาก โดยคัดลอกเฉพาะไฟล์ที่มีการเปลี่ยนแปลงเท่านั้น
โปรแกรมเมอร์ได้ทดสอบอีกครั้งว่ายูทิลิตี้ ana ยังคงทำงานต่อไป
ถึงเวลาที่จะใช้การ install เพื่อคัดลอกไฟล์ไปยังไดเร็กทอรี /usr/local/bin ซึ่งจะทำให้ยูทิลิตี้ใหม่นี้พร้อมใช้งานสำหรับผู้ใช้คอมพิวเตอร์ Linux เครื่องนี้ทุกคน เรารู้ว่า /usr/local/bin มีอยู่ ดังนั้นเราจึงไม่จำเป็นต้องสร้างไดเร็กทอรีนั้น เราสามารถใช้คำสั่งสุดท้ายของเราในเวอร์ชันที่แก้ไขได้
เราได้เปลี่ยนไดเรกทอรีเป้าหมายเป็น /usr/local/bin เราได้ลบตัวเลือก -C (เปรียบเทียบ) เนื่องจากยังไม่มีสำเนาของไฟล์เหล่านี้ในไดเร็กทอรีเป้าหมาย ดังนั้นจึงไม่มีอะไรจะเปรียบเทียบ ในทำนองเดียวกัน ไม่มีอะไรต้องสำรองข้อมูล ดังนั้นเราจึงสามารถลบตัวเลือก -b (สำรอง) และตัวเลือก -S (ส่วนต่อท้าย) ได้
sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin

เราสามารถแสดงรายการไฟล์ที่มาถึง /usr/local/bin :
ลส -ล

และในการทดสอบขั้นสุดท้าย ให้เปลี่ยนไดเร็กทอรีเป็นโฮมไดเร็กตอรี่ของเรา และดูว่าเราสามารถเรียกใช้ยูทิลิตีใหม่จากที่นั่นได้หรือไม่

โปรดทราบว่าเราไม่จำเป็นต้องนำหน้าคำสั่ง ana ด้วย ./ / ซึ่งหมายความว่ากำลังทำงานจาก /usr/local/bin ภารกิจเสร็จสมบูรณ์.
เรากล่าวว่าการติดตั้งสามารถดึงตารางสัญลักษณ์ที่ซ้ำซ้อนและสัมภาระอื่นๆ ออกจากภายในไฟล์ไบนารี เพื่อลดขนาดลง มาทำกันตอนนี้เลย โปรดทราบว่าคำสั่งด้านล่างไม่มี Words.db เนื่องจาก Words.db เป็นไฟล์ฐานข้อมูล ไม่ใช่ไฟล์ปฏิบัติการแบบไบนารี ในการคัดลอกและลดขนาดไฟล์ไบนารี ana เราสามารถใช้คำสั่งต่อไปนี้ เราได้เพิ่มตัวเลือก -s (ย่อ) ด้วยตัวพิมพ์เล็ก "s" เราได้เพิ่มกลับเข้าไปในตัวเลือก -b (สำรอง) และตัวเลือก -S (ส่วนต่อท้าย) ด้วยตัวพิมพ์ใหญ่ "S"
sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin

การแสดงรายการไฟล์ใน /usr/local/bin ทำให้เราสามารถเปรียบเทียบขนาดของไฟล์ ana กับเวอร์ชันสำรองได้ ไฟล์ ana ถูกลดขนาดลงเหลือเกือบ 60% ของขนาดก่อนหน้า
ls -l /usr/local/bin

สรุป
คำสั่ง install เหมาะสำหรับการใช้งานเฉพาะกลุ่ม สำหรับคนจำนวนมาก จะไม่มีการใช้งานแบบวันแล้ววันเล่า หรืออาจใช้แบบเดือนต่อเดือน แม้จะเป็นเช่นนั้น คำสั่ง install เป็นเครื่องมือที่ดีที่คุณคุ้นเคยและมีไว้ในคลังเทคนิคของคุณ สำหรับโอกาสเหล่านั้นเมื่อคุณต้องการ มันจะให้รางวัลแก่ช่วงการเรียนรู้ของคุณด้วยการเพิ่มประสิทธิภาพ ความเรียบง่าย และการกดแป้นพิมพ์ที่น้อยลง
| คำสั่งลินุกซ์ | ||
| ไฟล์ | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · เข้าร่วม · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · ดู · strings · พิมพ์ · เปลี่ยนชื่อ · zip · unzip · เมานต์ · umount · ติดตั้ง · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · แพทช์ · แปลง · rclone · ฉีก · srm | |
| กระบวนการ | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · หมดเวลา · ผนัง · ใช่ · ฆ่า · หลับ · sudo · su · เวลา · groupadd · usermod · กลุ่ม · lshw · ปิดระบบ · รีบูต · หยุด · poweroff · passwd · lscpu · crontab · วันที่ · bg · fg | |
| ระบบเครือข่าย | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ
