Score:1

แท็บ Bash ไม่เติมโฟลเดอร์ขอบเขต node_module ที่ขึ้นต้นด้วย @ (ที่อักขระ) โดยอัตโนมัติ

ธง in

ฉันมีพฤติกรรมแปลก ๆ ดังต่อไปนี้ มีโฟลเดอร์ต่อไปนี้อยู่ @fortawesome

แต่เมื่อฉันกด

แท็บคีย์ซีดี

ไม่มีโฟลเดอร์ที่ขึ้นต้นด้วย "@" ปรากฏขึ้น เหตุใดสิ่งนี้จึงเกิดขึ้น/ ฉันจะตรวจสอบเพิ่มเติมได้อย่างไร

cn flag
พิสูจน์ว่าคุณใช้ BASH :-) 2 ไฟล์และ 1 dir ที่ขึ้นต้นด้วย @ และการเติมข้อความอัตโนมัติ bash จะเลือกไดเร็กทอรีเมื่อคุณทำ `cd {tab}` `สัมผัส @1 @2 && mkdir @5 && ls @1 @2 @5` และ `cd {tab}` ทำให้เป็น `cd @5/`
Nate T avatar
it flag
@Rinzwind ยืนยันแล้ว: ฉันเพิ่งทดสอบบน 20.04.2 (bash 5.0.17(1)-version) มันแสดงไดเรกทอรีทดสอบ `~/@hello` ของฉัน แต่ไม่สนใจสัญลักษณ์ @ เมื่อตัดสินใจเรียงลำดับ ของฉันอยู่ในส่วน '_H_'
Nate T avatar
it flag
@OP คุณหมายถึงอะไรโดยโฟลเดอร์ขอบเขต node_module เช่นเดียวกับในโหนดแพ็คเกจ?
partizanos avatar
in flag
ฉันคิดว่าเป็นเพราะ @ เป็นอักขระพิเศษใน bash @Rinzwind echo "$SHELL" แสดง /ถัง/ทุบตี
partizanos avatar
in flag
@NateT ฉันคิดว่าปัญหาอาจเกี่ยวข้องกับความจริงที่ว่ามันเป็นแพ็คเกจที่กำหนดขอบเขต nod_modules (นี่คือโฟลเดอร์ที่ขึ้นต้นด้วยอักขระ @ ในชื่อตามการประชุม)
partizanos avatar
in flag
@Rinzwind นอกจากนี้เมื่อคุณไม่เขียน @ เพียงแค่แท็บ cd มันจะไปที่โฟลเดอร์ @5 แต่ถ้าคุณเขียน `cd @5tab` ก็จะไม่
cn flag
สิ่งสำคัญที่สุดคือคุณได้จัดเรียงแล้ว ;-)
Score:1
ธง in

เนื่องจาก @ เป็นอักขระพิเศษที่เพิ่มเครื่องหมายแบ็กสแลชในการเริ่มต้นจึงแก้ปัญหาได้ เช่น. ซีดี \@แท็บ ในขณะที่เติมชื่อโฟลเดอร์ให้ถูกต้องโดยอัตโนมัติ

Nate T avatar
it flag
My bash shows it regardless. What version are you on? `bash --version`. The shortcut doesn't work. It prints the input from .bashrc
partizanos avatar
in flag
My bash version from `bash --version` is 5.0.17(1)-release (x86_64-pc-linux-gnu). Which shortcut do you mean?
Nate T avatar
it flag
Buy shortcut, I just meant using the shorthand for the --version option, like `bash - v`. We have the exact same version of bash. It has to be another program causing your shell to modify its behavior. The question is which program and how exactly is it modifying. Were you able to check the value of BASHOPTS? The command is just `echo $BASHOPTS`
Nate T avatar
it flag
If you add it's value to your question, we can compare it against my value and maybe get a clue as to what's going on. It should be an array.
partizanos avatar
in flag
`echo $BASHOPTS` outputs `checkwinsize:cmdhist:complete_fullquote:expand_aliases:extquote:force_fignore:globasciiranges:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath`
Score:1
ธง it

หากคุณไม่ได้สร้างไดเร็กทอรีโดยใช้ระบบ linux มีโอกาสที่ bash จะเสร็จสมบูรณ์ ดังนั้น bash จะไม่เห็นมันเป็นไฟล์

ไดเร็กทอรีใน Linux เป็นเพียงไฟล์เท่านั้น ที่มีข้อมูลเมตา รวมถึงตำแหน่งของไฟล์ที่ "อยู่ใน" สิ่งนี้แตกต่างจากวิธีที่ Windows ทำอย่างมาก

หากโมดูล (สมมติว่าเป็นโมดูลโหนด) มาจาก npm มีโอกาสที่ดีที่จะสร้างโดยระบบไฟล์ NTFS

ฉันไม่แน่ใจว่าสิ่งนี้จะส่งผลต่อวิธีการที่ bash เสร็จสิ้นเห็นอย่างไร แต่ถ้าไม่แสดงนั่นอาจเป็นเหตุผล

ฉันจะตรวจสอบเพิ่มเติมได้อย่างไร

เพื่อให้แน่ใจว่าไดเร็กทอรียังคงอยู่ คุณสามารถทำได้ ซีดี ข้างในนั้น ทั้งสองวิธีนี้จะให้ข้อมูลเพิ่มเติมแก่คุณ นอกจากนี้เรียกใช้ ls -a ~ หรือ ลา~ ถ้าคุณมีมัน

คุณควรสร้างโฟลเดอร์ใหม่โดยใช้หลักการตั้งชื่อเดียวกันเพื่อดูว่ามีปัญหาเดียวกันหรือไม่

นอกจากนี้ยังมีเครื่องมือที่คุณจะได้รับจาก aptcall ต้นไม้. มันเหมือนกับ ls แต่เรียกซ้ำ จะแสดงโครงสร้างไดเร็กทอรีทั้งหมดของไดเร็กทอรีปัจจุบัน

หากต้องการดูว่า Linux ได้ "ยอมรับ" ไดเร็กทอรีอย่างถูกต้องหรือไม่ คุณสามารถตรวจสอบสิทธิ์ได้

ลา -a -n

ให้ความสนใจกับอักขระตัวแรกในรายการไดเรกทอรีผู้ร้าย มันควรจะเป็น 'd' หากเป็น '-' แสดงว่าไม่ใช่โฟลเดอร์เลย ตอนนี้มันเป็นไฟล์เท่าที่เกี่ยวข้องกับ OS ซึ่งอาจหมายความว่าทุกอย่างที่อยู่ภายในถูกลบออก

นี่จะแสดงข้อมูลเจ้าของ & กลุ่มด้วย หากมีคุณสมบัติเหล่านี้ทั้งหมด ก็ควรจะแสดงให้เห็นอย่างแน่นอน

ในกรณีนี้ ให้รันกระบวนการด้านบนอีกครั้งและแคปหน้าจอผลลัพธ์ของแต่ละขั้นตอน หากคุณเพิ่มพวกเขาในคำถามของคุณ ฉันรับประกันได้ว่าบางคนจะรู้ว่าเกิดอะไรขึ้น

แก้ไข:

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

(Ubuntu = เวอร์ชัน 20.04.2 -- bash = เวอร์ชัน 5.0.17release)

โดยการทำ @ทดสอบ ไดเร็กทอรีและตรวจสอบผลการรันคำสั่งและแอพพลิเคชั่นต่างๆ ภายในพาเรนต์ไดเร็กทอรีเดียวกัน ฉันทำสิ่งนี้ก่อนที่คุณจะค้นพบว่าคุณสามารถหลบหนีได้ ปัญหาคือพวกเขาทั้งหมดทำงานตามที่คาดไว้สำหรับฉัน

หากสิ่งนี้เกิดขึ้นกับคุณ และคุณใช้ Ubuntu เวอร์ชันที่ค่อนข้างเป็นปัจจุบัน ไม่ต้องสงสัยเลยว่ามีผู้อื่นที่มีปัญหาเดียวกัน

ในขณะนี้ ฉันเห็นความเป็นไปได้หลักสองประการเกี่ยวกับสาเหตุของความคลาดเคลื่อน ไม่ว่าเราจะเคยพบเจอเงื่อนไขของขอบแปลก ๆ ที่ยังไม่มีใครค้นพบ (ไม่น่าเป็นไปได้ที่ฉันรู้สึกอายที่จะพิมพ์มัน .. XD) หรือโปรแกรมอื่นในระบบของคุณกำลังเปลี่ยนพฤติกรรมของเชลล์

ตามที่ฉันได้บอกใบ้ไว้ในความคิดเห็น สิ่งนี้เป็นไปได้ผ่านการจัดการสภาพแวดล้อมของเชลล์ มีตัวแปรสภาพแวดล้อมไม่กี่ตัว (ในสภาพแวดล้อม 20.04 ของฉันมี 11 ตัว) ซึ่งเริ่มต้นด้วยรูปแบบ ทุบตีและชี้ไปที่แอตทริบิวต์ของ bash shell โดยตรง สิ่งเหล่านี้ง่ายต่อการระบุ เนื่องจากทั้งหมดอยู่ที่จุดเริ่มต้นของรายการที่แสดงเมื่อคุณเรียกใช้ ชุด สั่งการ. หากคุณท่อผ่าน น้อยดังใน:

ชุด | น้อย

พวกเขาจะเป็นสิ่งแรกที่คุณเห็นในหน้าจอเทอร์มินัล ในขณะที่ส่วนใหญ่มีไว้เพื่อเป็นค่าคงที่เพื่อให้เข้าถึงข้อมูลในสคริปต์ของคุณ ฯลฯ และแสดงข้อมูลที่มีอยู่ (เช่น BASH_VERSION) คนอื่นๆ สามารถควบคุมข้อมูลที่อ้างอิงได้ ตัวแปรหนึ่งที่โดดเด่นสำหรับฉันคือ บาชอป. ถ้าในความเป็นจริงแล้ว พฤติกรรมเป็นผลลัพธ์ของค่าของตัวแปร ค่านี้จะเป็นตัวเลือกที่ดีสำหรับตัวการ

ที่กล่าวว่า จุดประสงค์หลักประการหนึ่งของสิ่งแวดล้อมโดยรวมคือเพื่อควบคุมพฤติกรรมของเชลล์ด้วยเหตุนี้ อาจเป็นตัวแปรใดๆ ในสภาพแวดล้อมของคุณ... หรือบางอย่างที่แตกต่างไปจากเดิมอย่างสิ้นเชิง

จุดประสงค์ของฉันในการแก้ไขปัญหานี้ต่อไปก็คือ ถ้ามีใครมาที่นี่เพื่อหาทางแก้ไขปัญหานี้ พวกเขาจะไม่เพียงแต่รู้วิธีแก้ไขปัญหาเท่านั้น แต่ยังรู้ถึงสาเหตุที่ทำให้เกิดปัญหานี้อีกด้วย

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

บันทึก:

โดย 'นี้ เป็นไปได้' ฉันหมายถึงการจัดการพฤติกรรมของ bash ในความหมายทั่วไป ฉันไม่รู้ว่าเป็นไปได้ไหมที่จะแก้ไขอักขระที่ bash เห็นว่าเป็น 'พิเศษ' ที่กล่าวว่าฉันไม่เห็นข้อสรุปอื่นใดที่ยอมรับได้ ฉันต้องยืดเส้นยืดสายเล็กน้อยเพื่อมาถึงสิ่งนี้ ถ้าใครมีความคิดอื่น ๆ ฉันยินดีรับฟัง

partizanos avatar
in flag
การใช้คำสั่ง `ls ` โฟลเดอร์ @XX จะปรากฏขึ้นสำเร็จ ปัญหาคือเมื่อกด `cd @tab` โฟลเดอร์ @XX ไม่ปรากฏขึ้น เหมือนกับว่า @ เป็นอักขระพิเศษใน bash (แต่ฉันหาไม่เจอว่า @ ที่ไม่มี $ ข้างหน้า (`$@`) มีความหมายพิเศษอย่างไร https://www.gnu.org/software/bash/manual/bash.html ) สถานการณ์ที่น่าสนใจกับ NTFS หากคุณมีตัวอย่างนี้อาจพูดถึงในกรณีที่มีคนประสบปัญหาเดียวกัน (ไม่ใช่กรณีของฉันเนื่องจากเป็น envrionment ที่ใช้ Ubuntu) ขอบคุณสำหรับความช่วยเหลือ :)
Nate T avatar
it flag
ฉันใช้เวลานานเกินไปที่จะตอบ ฉันเริ่มทันทีหลังจากความคิดเห็นแรกของฉัน และเมื่อฉันพูดจบ คุณก็ได้แก้ไขและตอบกลับแล้ว ฉันเดาว่านั่นเป็นวิธีที่จะไปในบางครั้ง สิ่งสำคัญคือคุณพบวิธีแก้ปัญหา ฉันจะใช้ W ตามนั้น ที่กล่าวว่า ฉันยังคงสนใจ เพราะก่อนหน้านี้ฉันได้ทำการทดสอบสองสามครั้ง และระบบของฉันไม่ถือว่ามันเป็นอักขระพิเศษนอกเหนือแอปพลิเคชัน regex เช่น `grep` ของแบบนี้ดึงดูดใจฉันเสมอXD ...คุณเคยตรวจสอบเวอร์ชัน bash ของคุณหรือไม่? อาจมีการปรับเปลี่ยนพฤติกรรมในบางจุด
Nate T avatar
it flag
นอกจากนี้ คุณควรทดสอบกับ bash อื่น เช่น /usr/bin/bash นอกจากนี้ยังอาจเป็น env ตัวแปรที่กำหนดโดยแพ็คเกจที่ติดตั้งบนระบบของคุณ เมื่อคุณเรียกใช้ `set` จะมีบางรายการที่อยู่บนสุดของรายการ ซึ่งบางรายการมีความสามารถในการแก้ไขลักษณะการทำงานเริ่มต้นของเชลล์ในรูปแบบต่างๆ
Nate T avatar
it flag
จะย้ายสิ่งเหล่านี้ (อย่างน้อยส่วนที่เกี่ยวข้อง) ไปยังคำตอบของฉันเพื่อจัดระเบียบความคิดเห็น
partizanos avatar
in flag
เวอร์ชัน bash ของฉันจาก `bash --version` คือ 5.0.17(1)-release (x86_64-pc-linux-gnu)
partizanos avatar
in flag
ในเปลือกอื่น ๆ เช่น ~/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin การเติมข้อความอัตโนมัติไม่จำเป็นต้องใช้ basckslash (คนละเครื่องกับวินโดว์) ใน google collab พฤติกรรมยังเติมอัตโนมัติโดยตรงกับ GNU bash รุ่น 4.4.20(1)-release (x86_64-pc-linux-gnu)
sudodus avatar
jp flag
@partizanos การทำให้ TAB สมบูรณ์ใช้ได้กับ `@name` ใน bash --version คือ 5.0.17(1)-release (x86_64-pc-linux-gnu) ใน Ubuntu 20.04 LTS

โพสต์คำตอบ

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