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

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

5
การใช้เส้นประ (-) แทนชื่อไฟล์
สำหรับคำสั่งหากใช้-เป็นอาร์กิวเมนต์แทนชื่อไฟล์จะหมายถึง STDIN หรือ STDOUT แต่ในตัวอย่างนี้มันจะสร้างไฟล์ที่มีชื่อ-: echo hello > - ฉันจะทำ-ในตัวอย่างนี้หมายถึง STDOUT ได้อย่างไร ในทางกลับกันฉันจะทำให้-ชื่อไฟล์เป็น-ตัวอย่างได้อย่างไร: cat -

4
อะไรคือความแตกต่างระหว่าง“ ไฟล์ cat | ./binary” และ“ ./binary <file”
ฉันมีไบนารี่ (ที่ฉันแก้ไขไม่ได้) และฉันสามารถทำได้: ./binary &lt; file ฉันยังสามารถทำได้: ./binary &lt;&lt; EOF &gt; "line 1 of file" &gt; "line 2 of file" ... &gt; "last line of file" &gt; EOF แต่ cat file | ./binary ทำให้ฉันมีข้อผิดพลาด ฉันไม่รู้ว่าทำไมมันไม่ทำงานกับไปป์ ในทั้ง 3 กรณีเนื้อหาของไฟล์ถูกกำหนดให้กับอินพุตมาตรฐานของไบนารี (ในวิธีที่ต่างกัน): bash อ่านไฟล์และมอบ stdin ของไบนารี่ bash อ่านบรรทัดจาก stdin (จนกระทั่ง EOF) และมอบให้ stdin …

10
มีวิธีดูรายละเอียดของเธรดทั้งหมดที่กระบวนการมีใน Linux หรือไม่?
สำหรับ Windows ฉันคิดว่าProcess Explorerจะแสดงเธรดทั้งหมดให้คุณทราบ มียูทิลิตีบรรทัดคำสั่งที่คล้ายกันสำหรับ Linux ที่สามารถแสดงรายละเอียดเกี่ยวกับเธรดทั้งหมดที่กระบวนการเฉพาะวางไข่หรือไม่ ฉันคิดว่าฉันควรทำให้ตัวเองชัดเจนยิ่งขึ้น ฉันไม่ต้องการที่จะเห็นลำดับชั้นของกระบวนการ แต่รายการของกระทู้ทั้งหมดที่เกิดจากกระบวนการเฉพาะ ดูภาพหน้าจอนี้ วิธีนี้สามารถทำได้ใน Linux? ขอบคุณ!

4
ฉันจะสื่อสารกับซ็อกเก็ตโดเมน Unix ผ่านเชลล์บน Debian Squeeze ได้อย่างไร
ฉันใช้งานเว็บเซิร์ฟเวอร์ Debian Squeeze ฉันได้ติดตั้ง memcached ในนั้นและกำหนดค่า memcached เพื่อฟังในซ็อกเก็ตโดเมน Unix (ที่/tmp/memcached.sock) เนื่องจากต้องการเพียงรับข้อความจากเว็บไซต์ซึ่งอยู่บนเซิร์ฟเวอร์เดียวกัน ดูเหมือนว่าจะทำงานได้ดี แต่ฉันต้องการสื่อสารกับ memcached ผ่านเชลล์เพื่อตรวจสอบว่ามันทำในสิ่งที่ฉันคิดว่าทำอยู่ memcached ยอมรับข้อความผ่านโปรโตคอล ASCII แบบง่าย (ถ้าฉันเข้าใจถูกต้อง) หากกำลังฟังบน TCP / IP ฉันสามารถส่งข้อความถึงมันผ่านเช่นnc: $ echo "stats settings" | nc localhost 11211 แต่ฉันไม่สามารถหาวิธีส่งข้อความนั้นไปยังซ็อกเก็ตโดเมนแทนได้ บนแล็ปท็อปของฉัน (ซึ่งใช้ OS X Lion) ทั้งคู่ncและtelnetมีตัวเลือก ( -Uและ-uตามลำดับ) เพื่อใช้ซ็อกเก็ตโดเมน อย่างไรก็ตามบนเว็บเซิร์ฟเวอร์ Debian Squeeze ของฉันตัวเลือกเหล่านี้จะไม่ปรากฏ
99 shell  debian  socket  telnet 

5
ฉันจะแนบเทอร์มินัลเข้ากับกระบวนการที่แยกออกได้อย่างไร
ฉันได้แยกกระบวนการออกจากเทอร์มินัลของฉันเช่นนี้ $ process &amp; เทอร์มินัลนั้นปิดตัวไปนาน แต่processยังคงทำงานอยู่และฉันต้องการส่งคำสั่งบางอย่างไปยัง stdin ของกระบวนการนั้น เป็นไปได้ไหม

3
^ x ^ y unix หลอกลวงสำหรับอินสแตนซ์ทั้งหมดในคำสั่งสุดท้ายหรือไม่
หนึ่งในเทคนิค Unix ที่ฉันโปรดปรานคือการ^x^yใช้คำสั่งสุดท้ายและแทนที่อินสแตนซ์แรกของ "x" ด้วย "y" แต่ฉันสงสัยว่าถ้าเป็นเคล็ดลับที่คล้ายกันทำงานเพื่อแทนที่ทุกกรณีของ "x" กับ "Y" ในคำสั่งสุดท้าย?

5
ความแตกต่างระหว่าง“ function foo () {}” และ“ foo () {}”
ฉันสามารถกำหนดbashฟังก์ชั่นการใช้หรือละเว้นfunctionคำหลักได้ มีความแตกต่างหรือไม่? #!/bin/bash function foo() { echo "foo" } bar() { echo "bar" } foo bar ทั้งการเรียกใช้ฟังก์ชันfooและbarประสบความสำเร็จและฉันไม่เห็นความแตกต่างเลย ดังนั้นฉันสงสัยว่ามันเป็นเพียงเพื่อปรับปรุงการอ่านหรือมีบางสิ่งที่ฉันขาดหายไป ... BTW ในเชลล์อื่น ๆ เช่นdash(เชื่อม/bin/shโยงกับdashเดเบียน / Ubuntu) มันล้มเหลวเมื่อใช้functionคำหลัก
96 bash  shell  function  posix 

4
วิธีรวมเงื่อนไข 2-name เข้ากับ find
ฉันต้องการค้นหาไฟล์ที่ไม่ตรงกับ 2 -nameเงื่อนไข ฉันสามารถทำมันได้เช่น: find /media/d/ -type f -size +50M ! -name "*deb" ! -name "*vmdk" และสิ่งนี้จะให้ผลลัพธ์ที่เหมาะสม แต่ฉันสามารถเข้าร่วม 2 เงื่อนไขกับหรืออย่างใด?
94 bash  shell  find 

30
อะไรคือคุณสมบัติหรือลูกเล่นบรรทัดคำสั่งที่คุณชื่นชอบ?
แบ่งปันคุณสมบัติและลูกเล่นบรรทัดคำสั่งของคุณสำหรับ Unix / Linux พยายามเก็บเปลือกหอย / ผู้ไม่เชื่อเรื่องพระเจ้า distro ถ้าเป็นไปได้ สนใจเห็น aliases, one-liners, คีย์ลัด, เชลล์สคริปต์ขนาดเล็ก ฯลฯ

6
การใช้ && และ || สับสน ผู้ประกอบการ
ฉันอ่านผ่าน/etc/rc.d/init.d/sendmailไฟล์ (ฉันรู้ว่านี่ไม่ค่อยใช้ แต่ฉันกำลังเรียนเพื่อสอบ) และฉันสับสนเล็กน้อยเกี่ยวกับตัวดำเนินการ&amp;&amp;และตัว||ดำเนินการ ฉันอ่านที่พวกเขาสามารถใช้ในงบเช่น: if [ test1 ] &amp;&amp; [ test2 ]; then echo "both tests are true" elif [ test1 ] || [ test2 ]; then echo "one test is true" fi อย่างไรก็ตามสคริปต์นี้แสดงคำสั่งบรรทัดเดียวเช่น: [ -z "$SMQUEUE" ] &amp;&amp; SMQUEUE="QUEUE" [ -f /usr/sbin/sendmail ] || exit 0 สิ่งเหล่านี้ดูเหมือนจะใช้&amp;&amp;และ||โอเปอเรเตอร์เพื่อล้วงเอาการตอบสนองจากการทดสอบ แต่ฉันไม่สามารถขุดเอกสารเกี่ยวกับการใช้งานของผู้ให้บริการเหล่านี้ได้ …

13
จะเปรียบเทียบสองวันในเชลล์ได้อย่างไร?
จะเปรียบเทียบสองวันในเชลล์ได้อย่างไร นี่คือตัวอย่างของวิธีที่ฉันต้องการใช้ถึงแม้ว่ามันจะไม่ทำงานตามที่เป็นอยู่: todate=2013-07-18 cond=2013-07-15 if [ $todate -ge $cond ]; then break fi ฉันจะบรรลุผลลัพธ์ที่ต้องการได้อย่างไร


4
ฉันสามารถเพิ่ม“ && prog2” ลงใน prog1 ที่รันอยู่แล้วได้หรือไม่?
เชลล์ส่วนใหญ่มีฟังก์ชั่นเช่น&amp;&amp;และ;เชื่อมโยงการดำเนินการของคำสั่งด้วยวิธีการบางอย่าง แต่จะเกิดอะไรขึ้นถ้าคำสั่งกำลังทำงานอยู่ฉันยังคงสามารถเพิ่มคำสั่งอื่นที่จะดำเนินการได้หรือไม่ขึ้นอยู่กับผลลัพธ์ของคำสั่งแรก พูดว่าฉันวิ่ง $ /bin/myprog some output... /bin/myprog &amp;&amp; /usr/bin/mycleanupแต่ผมอยาก ฉันไม่สามารถฆ่าmyprogและรีสตาร์ททุกสิ่งได้เพราะเวลามากเกินไปจะหายไป ฉันสามารถCtrl+ Zมันและfg/ bgถ้าจำเป็น สิ่งนี้ทำให้ฉันสามารถโยงในคำสั่งอื่นได้หรือไม่ ฉันสนใจทุบตีเป็นส่วนใหญ่ แต่ยินดีต้อนรับคำตอบสำหรับกระสุนทั่วไปทุกตัว!
87 bash  shell  process  exit 

4
ส่งต่อ SIGTERM ให้กับเด็กใน Bash
ฉันมี Bash script ซึ่งมีลักษณะคล้ายกับนี้: #!/bin/bash echo "Doing some initial work...."; /bin/start/main/server --nodaemon ตอนนี้ถ้า bash shell ที่เรียกใช้สคริปต์ได้รับสัญญาณ SIGTERM ก็ควรส่ง SIGTERM ไปยังเซิร์ฟเวอร์ที่กำลังรันอยู่ เป็นไปได้ไหม
86 bash  shell  signals  docker 

5
กระบวนการทดแทนและท่อ
ฉันสงสัยว่าจะเข้าใจสิ่งต่อไปนี้อย่างไร: การวาง stdout ของคำสั่งลงใน stdin ของอีกอันเป็นเทคนิคที่ทรงพลัง แต่ถ้าคุณต้องการไพพ์ stdout ของหลายคำสั่งล่ะ? นี่คือที่มาทดแทนกระบวนการ กล่าวอีกนัยหนึ่งกระบวนการทดแทนสามารถทำสิ่งที่ท่อสามารถทำได้หรือไม่ กระบวนการทดแทนสามารถทำอะไรได้บ้าง แต่ไปป์ไม่ได้

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