คำถามติดแท็ก shell

เชลล์เป็นอินเตอร์เฟสบรรทัดคำสั่งของ Unix คุณสามารถพิมพ์คำสั่งในเชลล์แบบโต้ตอบหรือเขียนสคริปต์เพื่อทำงานอัตโนมัติ ใช้แท็กนี้สำหรับคำถามที่ใช้กับ / bin / sh และเชลล์ที่เข้ากันได้มากที่สุด (ash, bash, ksh, zsh, …) สำหรับเชลล์สคริปต์ที่มีข้อผิดพลาดโปรดตรวจสอบใน http://shellcheck.net ก่อนโพสต์ที่นี่

4
ฉันจะตั้งค่าตัวแปรสภาพแวดล้อมในบรรทัดคำสั่งและให้มันปรากฏในคำสั่งได้อย่างไร
ถ้าฉันวิ่ง export TEST=foo echo $TEST มันส่งผลฟู ถ้าฉันวิ่ง TEST=foo echo $TEST มันไม่ใช่. ฉันจะรับฟังก์ชั่นนี้โดยไม่ใช้การส่งออกหรือสคริปต์ได้อย่างไร

10
มีซับในเดียวที่อนุญาตให้ฉันสร้างไดเรคทอรีและย้ายไปยังไดเรกตอรีในเวลาเดียวกันได้หรือไม่?
ฉันพบว่าตัวเองกำลังทำซ้ำจำนวนมาก: mkdir longtitleproject cd longtitleproject มีวิธีการทำในหนึ่งบรรทัดโดยไม่ต้องทำซ้ำชื่อไดเรกทอรีหรือไม่? ฉันทุบตีที่นี่
150 bash  shell  command-line 

14
ไฟล์การเปลี่ยนชื่อแบทช์
ฉันมีไดเรกทอรีที่เต็มไปด้วยภาพ: image0001.png image0002.png image0003.png ... และฉันต้องการหนึ่งสายการบินเพื่อเปลี่ยนชื่อพวกเขาเป็น (พูด) 0001.png 0002.png 0003.png ... ฉันจะทำสิ่งนี้ได้อย่างไร
150 shell  bash  rename 

9
วิธีตรวจสอบว่าเชลล์คือล็อกอิน / โต้ตอบ / แบทช์
ฉันคิดว่าฉันเข้าใจความแตกต่างระหว่างการโต้ตอบการเข้าสู่ระบบและแบทช์เชลล์ ดูลิงค์ต่อไปนี้สำหรับความช่วยเหลือเพิ่มเติม: อะไรคือความแตกต่างระหว่าง 'เข้าสู่ระบบ' และเปลือกทุบตี 'แบบโต้ตอบ' (จากเว็บไซต์น้องสาว: serverfault.com ) 2.1: ประเภทของเชลล์: เชลล์แบบโต้ตอบและล็อกอิน (จากคู่มือผู้ใช้ไปยัง Z-Shell ) คำถามของฉันคือฉันจะทดสอบด้วยคำสั่ง / เงื่อนไขได้อย่างไรถ้าฉันใช้การโต้ตอบการล็อกอินหรือแบตช์เชลล์? ฉันกำลังมองหาคำสั่งหรือเงื่อนไข (ที่ส่งคืนtrueหรือfalse) และฉันสามารถวางคำสั่ง if ตัวอย่างเช่น: if [[ condition ]] echo "This is a login shell" fi
143 shell 

4
วิธีเพิ่มที่เก็บจากเชลล์ใน Debian?
ใน Ubuntu หนึ่งสามารถเพิ่มพื้นที่เก็บข้อมูลผ่านคำสั่งดังต่อไปนี้ - sudo add-apt-repository ppa:yannubuntu/boot-repair เนื่องจาก Ubuntu นั้นใช้รหัสเดเบียนฉันจึงคาดหวังว่าเดเบียนจะทำงานเช่นเดียวกัน แต่ก็ไม่เป็นเช่นนั้น อะไรคือสาเหตุของสิ่งนี้? มีคำสั่งเชลล์อื่น ๆ ที่ฉันสามารถใช้เพื่อให้บรรลุเหมือนกันหรือไม่ หมายเหตุ: ฉันรู้ว่าฉันสามารถแก้ไข/etc/apt/sources.listได้ แต่ฉันต้องการได้รับจากเชลล์ ฉันต้องการทราบว่าทำไมคำสั่งเดียวกันไม่ทำงานเมื่อรหัสฐานเหมือนกัน
141 shell  debian  apt  repository  ppa 

4
$ VAR เทียบกับ $ {VAR} และเพื่อพูดหรือไม่พูด
ฉันเขียนได้ VAR=$VAR1 VAR=${VAR1} VAR="$VAR1" VAR="${VAR1}" ผลลัพธ์ที่ได้สำหรับฉันทุกคนดูเหมือนจะเหมือนกัน ทำไมฉันต้องเขียนอย่างใดอย่างหนึ่ง? เหล่านี้ไม่ใช่พกพา / POSIX?

11
คุณจะย้ายไฟล์ทั้งหมด (รวมถึงที่ซ่อนอยู่) จากไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่งได้อย่างไร?
ฉันจะย้ายไฟล์ทั้งหมดในไดเรกทอรี (รวมถึงไฟล์ที่ซ่อนอยู่) ไปยังไดเรกทอรีอื่นได้อย่างไร ตัวอย่างเช่นหากฉันมีโฟลเดอร์ "Foo" ที่มีไฟล์ ".hidden" และ "notHidden" อยู่ภายในฉันจะย้ายไฟล์ทั้งสองไปยังไดเรกทอรีที่ชื่อ "Bar" ได้อย่างไร ข้อมูลต่อไปนี้ใช้ไม่ได้เนื่องจากไฟล์ ".hidden" ยังคงอยู่ใน "Foo" mv Foo/* Bar/ ลองด้วยตัวคุณเอง mkdir Foo mkdir Bar touch Foo/.hidden touch Foo/notHidden mv Foo/* Bar/
132 shell  wildcards  dot-files  mv 

1
คุณจะแตกโฟลเดอร์เดียวจากไฟล์เก็บถาวร tar.gz ขนาดใหญ่ได้อย่างไร
ฉันใช้คำสั่งนี้กับไฟล์เก็บถาวร5GB tar -zxvf archive.tar.gz /folder/in/archive นี่เป็นวิธีที่ถูกต้องในการทำสิ่งนี้หรือไม่? ดูเหมือนว่าจะใช้งานได้ตลอดไปโดยไม่มีเอาต์พุตบรรทัดคำสั่ง ...
132 shell  tar  gzip 

7
จะฆ่าแมวที่หนีไม่พ้นได้อย่างไร
หลายครั้งที่ฉันรันcatคำสั่งบนไฟล์ที่มีเนื้อหามากถึงสองสามพันบรรทัดโดยไม่ตั้งใจ ฉันพยายามฆ่าcatคำสั่งด้วยCtrl+ CหรือCtrl+ Zแต่ทั้งคู่จะมีผลเฉพาะหลังจากที่แสดงผลลัพธ์ทั้งหมดcatในเทอร์มินัลดังนั้นฉันต้องรอจนกว่าcatจะได้รับการดำเนินการอย่างสมบูรณ์ มีวิธีแก้ปัญหาที่ดีกว่าที่หลีกเลี่ยงการรอ? เพราะบางครั้งไฟล์มีขนาดไม่เกิน 100MB และทำให้เกิดความรำคาญที่จะรอ tcshฉันใช้
128 shell  terminal  kill  cat  tcsh 



10
สคริปต์ตรวจสอบโฟลเดอร์สำหรับไฟล์ใหม่หรือไม่
วิธีการตรวจหาไฟล์ใหม่ในโฟลเดอร์ที่มีbash script ฉันต้องการประมวลผลไฟล์ทันทีที่สร้างขึ้นในโฟลเดอร์ เป็นไปได้ที่จะทำเช่นนั้นหรือฉันต้องกำหนดสคริปต์ด้วยcronที่ตรวจสอบไฟล์ใหม่ทุกนาทีหรือไม่

8
แสดงรายการไฟล์ปกติเท่านั้น (แต่ไม่ใช่ไดเรกทอรี) ในไดเรกทอรีปัจจุบัน
ฉันสามารถใช้ls -ld */เพื่อแสดงรายการไดเรกทอรีทั้งหมดในไดเรกทอรีปัจจุบัน มีวิธีที่ง่ายเหมือนกันเพียงแค่แสดงรายการไฟล์ปกติทั้งหมดในไดเรกทอรีปัจจุบันหรือไม่? ฉันรู้ว่าฉันสามารถใช้การค้นหา find . -maxdepth 1 -type f หรือสถิติ stat -c "%F %n" * | grep "regular file" | cut -d' ' -f 3- แต่สิ่งเหล่านี้ไม่ได้ทำให้ฉันรู้สึกว่าสง่างามเกินไป มีวิธีสั้น ๆ ที่ดีในการแสดงเฉพาะไฟล์ปกติ (ฉันไม่สนใจเกี่ยวกับอุปกรณ์ท่อ ฯลฯ ) แต่ไม่ใช่ไดเรกทอรีย่อยของไดเรกทอรีปัจจุบันหรือไม่? รายชื่อลิงก์สัญลักษณ์เช่นกันจะเป็นข้อดี แต่ก็ไม่จำเป็น
126 shell  files  ls  wildcards 

3
การอ้างอิงภายใน $ (การทดแทนคำสั่ง) ใน Bash
ในสภาพแวดล้อม Bash ของฉันฉันใช้ตัวแปรที่มีช่องว่างและฉันใช้ตัวแปรเหล่านี้ภายในการทดแทนคำสั่ง น่าเสียดายที่ฉันไม่พบคำตอบใน SE วิธีที่ถูกต้องในการอ้างอิงตัวแปรของฉันคืออะไร? และฉันควรทำอย่างไรถ้าสิ่งเหล่านี้ซ้อนอยู่? DIRNAME=$(dirname "$FILE") หรือฉันจะพูดนอกทดแทน? DIRNAME="$(dirname $FILE)" หรือทั้งคู่? DIRNAME="$(dirname "$FILE")" หรือฉันจะใช้เห็บกลับ? DIRNAME=`dirname "$FILE"` วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร? และฉันจะตรวจสอบได้อย่างง่ายดายว่าราคาถูกต้องหรือไม่

4
ความสำคัญของตัวดำเนินการเชิงตรรกะของเชลล์ &&, ||
ฉันพยายามที่จะเข้าใจว่าการทำงานของตัวดำเนินการทางตรรกะในการทุบตี ตัวอย่างเช่นฉันคาดว่าคำสั่งต่อไปนี้ไม่ได้สะท้อนอะไรเลย true || echo aaa && echo bbb อย่างไรก็ตามตรงกันข้ามกับความคาดหวังของฉันbbbได้รับการพิมพ์ ใครช่วยอธิบายหน่อยได้ไหมฉันจะทำให้รู้สึกถึงการทบต้น&&และ||ผู้ปฏิบัติงานในการทุบตีได้อย่างไร?
126 bash  shell 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.