Score:-1

ไฟล์หายไปในคำสั่ง mv :

ธง us

ฉันพยายามที่จะย้าย ไฟล์.py ไปยังไดเร็กทอรีโมดูลที่มีอยู่ ...

wm@my-laptop:~/Desktop/1linuxandpython$ mv Modules_and_packages.py /Modules_and_packages_Game

มันบอกว่าได้รับอนุญาตถูกปฏิเสธ ดังนั้นฉันจึงทำสิ่งนี้:

wm@my-laptop:~/Desktop/1linuxandpython$ sudo mv Modules_and_packages.py /Modules_and_packages_Game

จากนั้นมันก็หายไป ฉันค้นหาคำตอบและพบว่าชื่อไฟล์คือ /Modules_and_packages_Game ตอนนี้แต่หาที่ไหนไม่ได้แล้ว และเป็นไปได้อย่างไรสำหรับ .py ให้เป็นชื่อตามชื่อโฟลเดอร์ ?

แก้ไข:

ป้อนคำอธิบายรูปภาพที่นี่

ls -l แสดงชื่อโฟลเดอร์และเมื่อฉันเรียกใช้งาน มันจะเปิดเป็น a ไฟล์.py รู้ก่อนดำเนินการคำสั่ง:

$ sudo mv Modules_and_packages.py /Modules_and_packages_Game

ฉันแน่ใจว่ามีโฟลเดอร์ Modules_and_packages_Game อยู่ ?

Artur Meinild avatar
vn flag
ดูเหมือนว่าคุณทำ `ls /` หรือไม่
guiverc avatar
cn flag
คุณใช้ `mv` เพื่อย้ายและเปลี่ยนชื่อไฟล์ คำสั่งที่ดำเนินการนั้นเป็นสิ่งที่คุณบอกให้ทำแม้ว่านั่นจะไม่ใช่ความตั้งใจของคุณก็ตาม ซึ่งอยู่ในไดเร็กทอรี `/` ตามที่คุณรายงาน
Score:10
ธง in

เป้าหมายของคุณ เอ็มวี คำสั่งคือ /Modules_and_packages_Game. นั่นคือเส้นทางที่สมบูรณ์

  • หากมีเส้นทางอยู่และเป็นไดเร็กทอรี เอ็มวี จะย้ายไฟล์ต้นฉบับไปยังไดเร็กทอรีนั้น
  • หากไม่มีพาธ ไฟล์ต้นฉบับจะถูกเปลี่ยนชื่อเป็นชื่อเป้าหมาย

เปรียบเทียบ แมน เอ็มวี และดูรูปแบบการดำเนินการที่เป็นไปได้สามรูปแบบ เอ็มวี:

เรื่องย่อ
  mv [ตัวเลือก]... [-T] แหล่งที่มาปลายทาง
  mv [ตัวเลือก]... แหล่งที่มา... ไดเรกทอรี
  mv [ตัวเลือก]... -t แหล่งไดเรกทอรี...
คำอธิบาย
  เปลี่ยนชื่อ SOURCE เป็น DEST หรือย้าย SOURCE เป็น DIRECTORY

เป็นไปได้มากว่าคุณใช้แบบฟอร์มแรก (เปลี่ยนชื่อ SOURCE เป็น DEST) ในขณะที่คุณต้องการแบบฟอร์มที่สอง (ย้าย SOURCE เป็น DIRECTORY)
ไฟล์ของคุณเป็นไฟล์ใน / (รูทของระบบไฟล์ของคุณ) ชื่อ Modules_and_packages_Game.

ตรวจสอบโดยใช้ ls -l /Modules_and_packages_Game.

หากต้องการย้อนกลับ ให้เรียกใช้:

sudo mv /Modules_and_packages_Game Modules_and_packages.py

ตอนนี้ทำอย่างถูกต้อง ฉันถือว่าไดเร็กทอรีเป้าหมายของคุณคือเส้นทางสัมพัทธ์ Modules_and_packages_Gameและไม่ใช่เส้นทางที่แน่นอน /Modules_and_packages_Game.

อย่างใดอย่างหนึ่ง (ใช้แบบฟอร์มที่สอง):

mv Modules_and_packages.py Modules_and_packages_Game

หรือ (ใช้แบบฟอร์มที่สาม):

mv -t Modules_and_packages_Game Modules_and_packages.py

อันหลังมีความปลอดภัยมากกว่าเนื่องจากจะทำให้เกิดข้อผิดพลาดหากไม่มีไดเร็กทอรีเป้าหมาย

Marinos TBH avatar
us flag
จริงๆแล้วไฟล์ตอนนี้เป็นโฟลเดอร์ . เมื่อฉัน: ls หรือ ls -l จะปรากฏเป็นโฟลเดอร์สีน้ำเงิน และหากต้องการเข้าถึง ฉันเพียงแค่ต้อง /Modules_and_packages_Game จึงรวบรวม ./file.py
pLumo avatar
in flag
ไฟล์ไม่สามารถเป็นไดเร็กทอรีหลังจาก `mv` จากนั้นไดเร็กทอรีมีอยู่ก่อน และคุณย้ายไฟล์ไปยังไดเร็กทอรีนั้น
Marinos TBH avatar
us flag
โปรดดูภาพหน้าจอด้านล่าง
pLumo avatar
in flag
คุณคิดผิด คุณเรียกใช้ไฟล์ที่ย้ายด้วย `/Modules_and_packages_Game` มันตรงตามที่ฉันพูด สิ่งที่คุณเห็น (ไดเร็กทอรีสีน้ำเงิน) คือเส้นทางสัมพัทธ์ `Modules_and_packages_Game` ซึ่ง **ไม่เหมือนกัน** กับ `/Modules_and_packages_Game`
Score:1
ธง jp

ในขณะที่คนอื่นกำลังชี้มาที่คุณ คุณกำลังสับสน ญาติ เส้นทางเทียบกับ แน่นอน เส้นทาง คำนึงถึงข้อพิจารณาต่อไปนี้:

  1. เฉือนคนเดียว / คือ ไดเรกทอรีราก. ให้คิดว่าเป็นโฟลเดอร์ที่อยู่ด้านบนของโฟลเดอร์อื่นๆ ทั้งหมด กล่าวคือ ทุกโฟลเดอร์และไฟล์ในระบบของคุณจะอยู่ที่ไหนสักแห่งภายใน / ไดเรกทอรี
  2. หนึ่ง เส้นทางที่แน่นอน เป็นเส้นทางจากไดเรกทอรีรากไปยังไฟล์หรือโฟลเดอร์ ดังนั้นจึงมักเริ่มต้นด้วย /ซึ่งเป็นไดเรกทอรีราก และลงท้ายด้วยไฟล์หรือโฟลเดอร์ที่คุณต้องการเข้าถึง ตัวอย่างของเส้นทางที่แน่นอนสำหรับไฟล์จะเป็น:
/home/username/Desktop/myFile.txt
  1. ตัวหนอน ~ เป็นทางลัดที่แสดงถึง โฮมไดเร็กตอรี่ของคุณ. ดังนั้น คุณสามารถเข้าถึงไฟล์ที่อยู่ภายในโฟลเดอร์เริ่มต้นของคุณได้โดยใช้ทางลัดนี้ และตัวอย่างข้างต้นอาจเป็นดังนี้:
~/Desktop/myFile.txt
  1. เดอะ ไดเร็กทอรีปัจจุบัน หรือ ไดเร็กทอรีการทำงาน คือสิ่งที่คุณกำลังทำอยู่ โดยปกติจะแสดงบนพรอมต์ Bash เป็นสีน้ำเงินระหว่างเครื่องหมายอัฒภาค : และเครื่องหมายดอลลาร์ $. ตัวอย่างเช่น หากคุณกำลังทำงานกับ เดสก์ทอป โฟลเดอร์ Bash prompt บน Terminal จะเป็นดังนี้:
ชื่อผู้ใช้@ชื่อโฮสต์:~/เดสก์ท็อป$
  1. เส้นทางสัมพัทธ์ สามารถใช้เมื่อไฟล์หรือโฟลเดอร์ที่คุณต้องการเข้าถึงอยู่ในไดเร็กทอรีการทำงานปัจจุบันของคุณ ในกรณีนั้น คุณต้องไม่เริ่มต้นเส้นทางด้วย /เนื่องจากนั่นจะแสดงว่าพาธเป็นพาธสัมบูรณ์ที่เริ่มต้นในไดเร็กทอรีรูท ตัวอย่างเช่น หากคุณกำลังทำงานกับ เดสก์ทอป โฟลเดอร์ คุณสามารถอ่านเนื้อหาของ myFile.txt ไฟล์โดยเพียงแค่พิมพ์ชื่อ
ชื่อผู้ใช้@ชื่อโฮสต์:~/Desktop$ cat myFile.txt
  1. เดอะ ไดเร็กทอรีปัจจุบัน สามารถแสดงด้วยจุดเดียว .. ดังนั้น เพื่อป้องกันความผิดพลาดและให้แน่ใจว่าคุณกำลังอ้างอิงเส้นทางสัมพัทธ์ คุณอาจเริ่มเส้นทางสัมพัทธ์ด้วย ./ เพื่อเป็นตัวแทน บางอย่างในไดเร็กทอรีปัจจุบัน, เช่น.:
ชื่อผู้ใช้@ชื่อโฮสต์:~/Desktop$ cat ./myFile.txt
  1. เดอะ ไดเร็กทอรีเหนือไดเร็กทอรีการทำงานของคุณ แสดงด้วยจุดสองจุด ... ดังนั้น หากคุณอยู่ในโฟลเดอร์ Downloads แต่ต้องการเข้าถึงไฟล์ของคุณบนเดสก์ท็อป คุณสามารถใช้เส้นทางสัมพัทธ์ต่อไปนี้:
ชื่อผู้ใช้@ชื่อโฮสต์:~/Downloads$ cat ../Desktop/myFile.txt

เป็นตัวอย่างเพิ่มเติม ถ้า myFile.txt อยู่ภายใน บางโฟลเดอร์ ไดเร็กทอรีบนเดสก์ท็อปของคุณ จากนั้นคุณสามารถอ่านเนื้อหาโดยใช้:

  • เส้นทางสัมพัทธ์ (ไม่มีเครื่องหมายทับที่จุดเริ่มต้น):
ชื่อผู้ใช้@ชื่อโฮสต์:~/Desktop$ cat someFolder/myFile.txt
  • เส้นทางสัมพัทธ์กับจุด เพื่อหลีกเลี่ยงความสับสน:
ชื่อผู้ใช้@ชื่อโฮสต์:~/Desktop$ cat ./someFolder/myFile.txt
  • เส้นทางสัมบูรณ์ (มีเครื่องหมายทับที่จุดเริ่มต้น):
ชื่อผู้ใช้@ชื่อโฮสต์:~/Desktop$ cat /home/username/Desktop/someFolder/myFile.txt
  • เส้นทางที่สมบูรณ์พร้อมทางลัดโฮมไดเร็กตอรี่:
ชื่อผู้ใช้@ชื่อโฮสต์:~/Desktop$ cat ~/Desktop/someFolder/myFile.txt

โปรดฝึกฝนด้วยสิ่งนี้แล้วกลับมาและคุณจะเข้าใจคำตอบอื่น ๆ

กล่าวโดยสรุปคือ ตอนนี้ไฟล์ของคุณอยู่ในไดเร็กทอรีรูทของคุณแล้ว และชื่อไฟล์ก็เหมือนกับชื่อโฟลเดอร์ที่คุณพยายามจะใส่เข้าไป ดังนั้นเส้นทางที่สมบูรณ์ไปยังไฟล์คือตอนนี้ /Modules_and_packages_Game (ยังเป็นไฟล์ python อยู่เลย ขาดแค่ .py เนื่องจากคุณเปลี่ยนชื่อโดยไม่ได้ตั้งใจ). ซึ่งแตกต่างจากโฟลเดอร์ที่คุณมีอยู่ ~/Desktop/1 linux และ python ขั้นตอน/Modules_and_packages_Game. ในการใส่ไฟล์ python ลงในโฟลเดอร์นั้นและเปลี่ยนชื่อกลับ ให้ใช้:

mv /Modules_and_packages_Game "~/Desktop/1 linux และ python ขั้นตอน/Modules_and_packages_Game/Modules_and_packages.py"

(สังเกตเครื่องหมายคำพูดคู่ " จำเป็นเนื่องจากคุณมีช่องว่างในเส้นทาง)

Marinos TBH avatar
us flag
ขอบคุณสำหรับคำตอบ ฉันเข้าใจดีถึงวิธีการทำงานของการนำทางไดเร็กทอรี มิฉะนั้นฉันได้รับสิ่งนี้: mw@my-laptop:~$ mv /Modules_and_packages_Game "~/Desktop/1 ขั้นตอนสำหรับลินุกซ์และไพธอน/Modules_and_packages_Game/Modules_and_packages.py" mv: ไม่สามารถย้าย '/Modules_and_packages_Game' ไปที่ '~/Desktop/1 linux and python steps/Modules_and_packages_Game/Modules_and_packages.py': ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
Alejandro avatar
jp flag
ตรวจสอบเส้นทางสัมบูรณ์ทั้งสองอีกครั้งเพื่อดูว่าเส้นทางใดไม่ถูกต้อง และปรับเปลี่ยนตามความต้องการของคุณ คุณอาจต้องใช้ `sudo` ก่อน `mv` หรือใช้ `cp` แทน `mv` บางทีโฟลเดอร์อาจเป็น `1linuxandpython` และไม่ใช่ `"1 linux และ python steps"` ทั้งสองอย่างในคำถามของคุณ คุณสามารถตรวจสอบด้วย `ls` และเติมเส้นทางที่ถูกต้องโดยอัตโนมัติใน Terminal ด้วย แท็บ กุญแจ.
Marinos TBH avatar
us flag
ตกลงในที่สุดมันก็ใช้งานได้ (ฉันลบเครื่องหมายคำพูดคู่และทำให้เป็น '1 ขั้นตอน linux และ python' และใช้ sudo ) sudo mv /Modules_and_packages_Game ~/Desktop/'1 linux และ python steps'/Modules_and_packages_Game/Modules_and_packages.py Modules_and_packages.py อยู่ที่นั่น และ /Modules_and_packages_Game ไม่สามารถดำเนินการได้อีกต่อไป ขอบคุณสำหรับความช่วยเหลือทุกคนอาจพบคำอธิบายดังกล่าว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา