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

คำว่า 'เชลล์' หมายถึงคลาสทั่วไปของล่ามคำสั่งแบบโต้ตอบตามข้อความซึ่งส่วนใหญ่มักเกี่ยวข้องกับระบบปฏิบัติการ Unix & Linux สำหรับคำถามเกี่ยวกับการเขียนสคริปต์เชลล์โปรดใช้แท็กเฉพาะเพิ่มเติมเช่น 'bash', 'powershell' หรือ 'ksh' หากไม่มีแท็กเฉพาะควรใช้วิธีแก้ปัญหาแบบพกพา (POSIX-compliant) แม้ว่าจะใช้ 'posix' เพิ่มเติมหรือ 'sh' แทนก็ตาม

9
อ่านตัวแปรใน bash ด้วยค่าเริ่มต้น
ฉันต้องการอ่านค่าจากเทอร์มินัลในสคริปต์ทุบตี ฉันต้องการให้ค่าเริ่มต้นที่ผู้ใช้สามารถเปลี่ยนแปลงได้ # Please enter your name: Ricardo^ ในสคริปต์นี้พรอมต์คือ "โปรดป้อนชื่อของคุณ:" ค่าเริ่มต้นคือ "Ricardo" และเคอร์เซอร์จะอยู่หลังค่าเริ่มต้น มีวิธีการทำเช่นนี้ในสคริปต์ทุบตี?
191 bash  shell 

17
เข้าถึงฐานข้อมูลระยะไกล mysql จากบรรทัดคำสั่ง
ฉันมีเซิร์ฟเวอร์ที่มี Rackspace ฉันต้องการเข้าถึงฐานข้อมูลจากบรรทัดคำสั่งเครื่องท้องถิ่น ฉันพยายามเช่น: mysql -u username -h my.application.com -ppassword แต่มันทำให้เกิดข้อผิดพลาด: ข้อผิดพลาด 2003 (HY000): ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL บน 'my.application.com' (10061) สาเหตุของข้อผิดพลาดนี้คืออะไรและฉันจะเชื่อมต่อกับฐานข้อมูลระยะไกลได้อย่างไร



4
วิธีการแยกโฟลเดอร์นี้ / ปัจจุบัน / จุดจากค้นหา“ พิมพ์ d”
find . -type d สามารถใช้เพื่อค้นหาไดเรกทอรีทั้งหมดด้านล่างบางจุดเริ่มต้น แต่จะส่งคืนไดเรกทอรีปัจจุบัน ( .) ด้วยซึ่งอาจไม่พึงประสงค์ จะยกเว้นได้อย่างไร
186 shell  directory  find 

15
เอาต์พุตสดจากคำสั่ง subprocess
ฉันใช้สคริปต์หลามเป็นไดรเวอร์สำหรับรหัสไฮโดรไดนามิกส์ เมื่อถึงเวลาที่จะทำการจำลองผมใช้subprocess.Popenเพื่อเรียกใช้รหัสรวบรวมผลลัพธ์จาก stdout และ stderr ลงในsubprocess.PIPE--- จากนั้นฉันสามารถพิมพ์ (และบันทึกลงในแฟ้มบันทึก) ข้อมูลผลลัพธ์และตรวจสอบข้อผิดพลาดใด ๆ . ปัญหาคือฉันไม่รู้ว่าโค้ดกำลังดำเนินไปอย่างไร ถ้าฉันเรียกใช้โดยตรงจากบรรทัดคำสั่งมันให้ผลลัพธ์เกี่ยวกับการวนซ้ำของมันที่เวลากี่โมงครั้งต่อไปคืออะไรเป็นต้น มีวิธีที่จะเก็บเอาท์พุททั้งสอง (สำหรับการบันทึกและการตรวจสอบข้อผิดพลาด) และยังผลิตถ่ายทอดสดสตรีมมิ่ง? ส่วนที่เกี่ยวข้องของรหัสของฉัน: ret_val = subprocess.Popen( run_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) output, errors = ret_val.communicate() log_file.write(output) print output if( ret_val.returncode ): print "RUN failed\n\n%s\n\n" % (errors) success = False if( errors ): log_file.write("\n\n%s\n\n" % errors) เดิมทีฉันกำลังทำการส่งrun_commandผ่านteeเพื่อให้สำเนาไปที่ไฟล์บันทึกโดยตรงและกระแสข้อมูลยังคงส่งออกไปยังเทอร์มินัลโดยตรง …

14
ค้นหา -exec ฟังก์ชั่นเชลล์ใน Linux?
มีวิธีการfindดำเนินการฟังก์ชั่นฉันกำหนดในเปลือกหรือไม่ ตัวอย่างเช่น: dosomething () { echo "doing something with $1" } find . -exec dosomething {} \; ผลลัพธ์ที่ได้คือ: find: dosomething: No such file or directory มีวิธีที่จะได้รับfindของ-execที่จะเห็นdosomething?
185 linux  bash  shell  find  bsd 

5
วิธีฆ่าซอมบี้
ฉันเปิดตัวโปรแกรมของฉันในเบื้องหน้า (โปรแกรม daemon) จากนั้นฉันก็ฆ่ามันด้วยkill -9แต่ฉันได้รับซอมบี้ที่เหลือและฉันไม่สามารถฆ่ามันkill -9ได้ จะฆ่ากระบวนการซอมบี้ได้อย่างไร? หากซอมบี้เป็นกระบวนการที่ตายแล้ว (ฆ่าไปแล้ว) ฉันจะลบมันออกจากผลลัพธ์ได้ps auxอย่างไร root@OpenWrt:~# anyprogramd & root@OpenWrt:~# ps aux | grep anyprogram 1163 root 2552 S anyprogramd 1167 root 2552 S anyprogramd 1169 root 2552 S anyprogramd 1170 root 2552 S anyprogramd 10101 root 944 S grep anyprogram root@OpenWrt:~# pidof anyprogramd 1170 …

5
เมื่อใดจึงควรใส่เครื่องหมายคำพูดล้อมรอบตัวแปรเชลล์
มีใครบางคนบอกฉันว่าฉันควรจะใส่เครื่องหมายคำพูดล้อมรอบตัวแปรในเชลล์สคริปต์หรือไม่ ตัวอย่างเช่นแก้ไขต่อไปนี้: xdg-open $URL [ $? -eq 2 ] หรือ xdg-open "$URL" [ "$?" -eq "2" ] และถ้าเป็นเช่นนั้นทำไม
184 linux  bash  shell  unix  quotes 

7
เชลล์สคริปต์เพื่อลบไฟล์หากมีอยู่แล้ว
ฉันกำลังทำงานกับบางสิ่งที่ฉันจัดเก็บข้อมูลไว้ในไฟล์ แต่ทุกครั้งที่ฉันเรียกใช้สคริปต์มันจะถูกผนวกเข้ากับไฟล์ก่อนหน้า ฉันต้องการความช่วยเหลือเกี่ยวกับวิธีลบไฟล์ถ้ามีอยู่แล้ว
183 shell 


2
บันทึกไฟล์ไปยังโฟลเดอร์เฉพาะด้วยคำสั่ง curl
ในเชลล์สคริปต์ฉันต้องการดาวน์โหลดไฟล์จากบาง URL และบันทึกลงในโฟลเดอร์เฉพาะ อะไรคือการตั้งค่าสถานะ CLI เฉพาะที่ฉันควรใช้เพื่อดาวน์โหลดไฟล์ไปยังโฟลเดอร์เฉพาะด้วยcurlคำสั่งหรือฉันจะได้รับผลลัพธ์นั้นได้อย่างไร?
182 bash  shell  curl  directory 

6
ทดสอบสตริงที่มีความยาวไม่เป็นศูนย์ใน Bash: [-n“ $ var”] หรือ [“ $ var”]
ฉันเคยเห็นสคริปต์ Bash ทดสอบสตริงที่มีความยาวไม่เป็นศูนย์ในสองวิธีที่แตกต่างกัน สคริปต์ส่วนใหญ่ใช้-nตัวเลือก: #!/bin/bash # With the -n option if [ -n "$var" ]; then # Do something when var is non-zero length fi แต่ตัวเลือก -n ไม่จำเป็นต้องใช้: # Without the -n option if [ "$var" ]; then # Do something when var is non-zero length fi วิธีไหนดีกว่ากัน? ในทำนองเดียวกันซึ่งเป็นวิธีที่ดีกว่าสำหรับการทดสอบความยาวเป็นศูนย์: if …

18
วิธีเก็บข้อผิดพลาดมาตรฐานในตัวแปร
สมมติว่าฉันมีสคริปต์ดังต่อไปนี้: useless.sh echo "This Is Error" 1>&2 echo "This Is Output" และฉันมีเชลล์สคริปต์อีกอันหนึ่ง: alsoUseless.sh ./useless.sh | sed 's/Output/Useless/' ฉันต้องการจับภาพ "นี่คือข้อผิดพลาด" หรือ stderr อื่น ๆ จาก useless.sh ไปเป็นตัวแปร ลองเรียกมันว่า ERROR สังเกตว่าฉันกำลังใช้ stdout สำหรับบางสิ่ง ฉันต้องการใช้ stdout ต่อไปดังนั้นการเปลี่ยนเส้นทาง stderr ไปยัง stdout จะไม่เป็นประโยชน์ในกรณีนี้ โดยพื้นฐานแล้วฉันต้องการจะทำ ./useless.sh 2> $ERROR | ... แต่เห็นได้ชัดว่าใช้งานไม่ได้ ฉันก็รู้ว่าฉันสามารถทำได้ ./useless.sh 2> /tmp/Error ERROR=`cat …

16
วิธีการเริ่มต้นไดเรกทอรีอื่นแทนไดเรกทอรีบ้าน
Наэтотвопросестьответына Stack Overflow нарусском : Git Bash изменитьдомашнийкаталог ฉันกำลังพัฒนาบนเครื่องที่ใช้ windows ที่เดียวที่ฉันต้องการสำหรับบรรทัดคำสั่ง linux คือ Git Bash ปัญหาคือ: เมื่อฉันเปิดมันฉันอยู่ในไดเรกทอรีบ้าน ฉันต้องเปลี่ยนไดเรกทอรีเป็นพื้นที่ทำงานของฉันเช่น: cd ../../../d/work_space_for_my_company/project/code_source ฉันสามารถรวมไฟล์นี้เป็นไฟล์. sh ดังนั้นฉันไม่ต้องพิมพ์ด้วยมืออีกต่อไปหรือไม่ ควรจะง่าย แต่ฉันไม่มีความรู้เกี่ยวกับบรรทัดคำสั่ง Linux ฉันชื่นชมจริงๆถ้าคุณสามารถแนะนำวิธีการสร้างไฟล์. sh
180 bash  shell  git-bash 

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