คำถามติดแท็ก command-line

บรรทัดคำสั่งเป็นอินเทอร์เฟซแบบโต้ตอบกับเชลล์ของคุณ


11
วิธีสร้างวันที่ไตรมาสปีจากบรรทัดคำสั่ง?
ฉันสนใจที่จะแสดงผลลัพธ์ของไตรมาสปีปัจจุบันและไตรมาสปีสำหรับเดือนก่อนหน้า หากวันนี้คือวันที่ 1 มกราคม 2012 ฉันต้องการที่จะได้รับ 2012q1 และ 2011q4 เป็นผลลัพธ์ที่เกี่ยวข้อง

2
มีวิธีที่ถูกต้องในการแสดงรายการไดเรกทอรีย่อยของไดเรกทอรีปัจจุบันหรือไม่?
ฉันสามารถค้นหาไดเรกทอรีย่อยของไดเรกทอรีโดย ls -d -- */ หรือ ls -l | grep "^d" แต่ทั้งคู่ดูเหมือนจะเป็นทางอ้อมและฉันคิดว่าจะมีวิธีมาตรฐานในการค้นหาเฉพาะไดเรกทอรี มีวิธีที่ถูกต้องในการทำเช่นนี้? และถ้าไม่เช่นนั้นสิ่งเหล่านี้จะนำไปสู่พฤติกรรมที่ไม่พึงประสงค์ในคดีขอบหรือไม่? (ลิงก์สัญลักษณ์ไดเรกทอรีที่ซ่อนอยู่ ฯลฯ )

4
การส่งอาร์กิวเมนต์ไปยังหลายคำสั่งในบรรทัดเดียว
ฉันต้องการที่จะเรียกใช้หลายคำสั่งในไฟล์เดียวกันในบรรทัดเดียว วิธีที่ฉันทำในขณะนี้คือ: commandA file && commandB file && perl -ne '...' file สัญชาตญาณของฉันบอกฉันว่าควรมีวิธีที่จะให้อาร์กิวเมนต์ชื่อไฟล์เพียงครั้งเดียวและท่อไปยังคำสั่งทั้งสองพร้อมกันผ่านxargsหรือสิ่งที่คล้ายกัน: find file | xargs commandA && xargs commandB && xargs perl -ne '...' เมื่อฉันลองสิ่งนี้คำสั่งแรกเท่านั้นที่จะทำงาน ฉันจะบรรลุสิ่งที่ฉันต้องการจะทำอย่างไร

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

1
อธิบายว่าทำไมนาฬิกา 'งาน' ไม่ทำงาน แต่ดู 'ps' ทำงาน
jobsเป็นคำสั่งโปรดของฉันเพื่อดูรหัสของฉันที่ทำงานในพื้นหลัง เพื่อตรวจสอบพวกเขาแบบไดนามิกฉันมักจะพิมพ์ watch 'jobs' ซึ่งไม่แสดงอะไรเลย อย่างไรก็ตาม watch 'ps' ทำงานได้อย่างสมบูรณ์ ฉันทำผิดพลาดไปหลายเดือนแล้ว ฉันคิดว่าการเข้าใจว่าทำไมการทำงานครั้งแรกไม่ทำงานในขณะที่งานที่สองสามารถช่วยฉันหยุดทำข้อผิดพลาดเดียวกันได้ ใครช่วยได้บ้าง

1
การเปลี่ยนเส้นทาง stdout จากสองโปรแกรม
ฉันใช้เครื่องมือตรวจสอบหน่วยความจำ (prog1) ในรหัส C ++ (prog2) ซึ่งทั้งคู่ให้ผลลัพธ์ที่ยอดเยี่ยมและมีรายละเอียดมาก เพื่อที่จะไล่ล่าบั๊กบางตัวฉันต้องบันทึกผลลัพธ์นี้ไปยังไฟล์ ฉันพยายามเปลี่ยนเส้นทาง stdout เป็นไฟล์: prog1 prog2 > outfile.txt แต่นั่นให้ไฟล์ที่มีเอาต์พุตของ prog2 ในขณะที่เอาต์พุตของ prog1 ยังคงไปที่เทอร์มินัล ใครรู้วิธีระบุว่าฉันต้องการให้ทั้งสองผลลัพธ์ไปที่ไฟล์หรือไม่ ชอบ(prog1 prog2) > outfile.txtไหม


3
วิธีการตั้งค่า ssh เพื่อลองพอร์ตไม่เพียง 22 แต่พอร์ตรองทุกครั้ง?
เป็นส่วนหนึ่งของความพยายามของฉันเพื่อลดเสียงรบกวนในบันทึกและลดการค้นพบเล็กน้อย (และด้านบนของ fail2ban, อนุญาตเฉพาะการรับรองความถูกต้องของรหัสสาธารณะเป็นต้น) ฉันเปลี่ยน sshd-ports เป็นประจำบนเซิร์ฟเวอร์ที่ฉันตั้งค่าเป็นพอร์ตอื่น ฉันอาจผนวก -p 5492 คำสั่ง SSH ssh_configของฉันหรือเพิ่มพอร์ตสำหรับแต่ละเซิร์ฟเวอร์ที่เฉพาะเจาะจงลงไปของฉัน มีวิธีการกำหนดค่า ssh เพื่อลองเชื่อมต่อกับทั้งพอร์ต 22 และพอร์ต 5492 หรือไม่หากพอร์ต 22 ใช้งานไม่ได้

2
ทำไมบางครั้งคอนโซลจำเป็นต้องมีการรีเซ็ตหลังจาก CTRL + C
CTRL+Cบางเครื่องมือติดต่อบรรทัดคำสั่งกลับคอนโซลเสียเมื่อยกเลิกโดย resetบางครั้งข้อความที่มองไม่เห็นหรือมีปัญหากราฟิกจนกว่าฉันจะเรียกใช้คำสั่ง (ฉันใช้ bash แต่คาดว่าจะเป็นอิสระจากเชลล์) ผลกระทบนี้มีชื่อหรือไม่? อะไรทำให้เกิดสิ่งนี้และโปรแกรมเมอร์สามารถป้องกันสิ่งนี้ในเครื่องมือได้อย่างไร มีกลยุทธ์ที่จะแก้ปัญหานี้ในภาษาการเขียนโปรแกรมหลักหรือไม่?

2
มีทั้งหมดกี่วิธีในการป้อนคำสั่งด้วยอินพุต?
สิ่งแรกที่ฉันสังเกตเห็นเกี่ยวกับ Linux คือวิธีต่าง ๆ ในการป้อนข้อมูลลงในคำสั่งฉันรู้บางอย่าง แต่ฉันไม่รู้ว่ามีจำนวนเท่าใด วิธีที่ฉันรู้: ท่อ: echo -e "zorro\nwurst\nlahmacun\nsozialhilfe" | sort จากแป้นพิมพ์ด้วยสัญญาณสิ้นสุดไฟล์: sort >gurken >zucker >braunkohle จากไฟล์: sort foo สตริงที่นี่ (เรียกว่าเอกสาร HERE): sort << HERE >wasserkopf >elternzeit >schuldeingeständnis >währungsreform >alabasterhaut HERE ทั้งหมดนี้หรือมีวิธีทำมากกว่านี้ทำไมถึงมีวิธีที่แตกต่างกันทำไมบางวิธีจึงซ้ำซ้อน?

2
เมื่อใดที่ใช้สตรีมข้อผิดพลาดมาตรฐานในแอปพลิเคชันบรรทัดคำสั่ง
มีแนวทางที่จะใช้ข้อผิดพลาดเมื่อเขียนแอปพลิเคชันบรรทัดคำสั่งหรือไม่ ด้วยความประหลาดใจของฉันฉันไม่พบอะไรเลยเมื่อ googling โดยเฉพาะอย่างยิ่งคำถามที่ฉันกังวลตอนนี้คือว่าจะใช้stdoutหรือstderrเมื่อผู้ใช้เรียกโปรแกรมด้วยข้อโต้แย้งที่ผิดกฎหมาย อย่างไรก็ตามคำตอบที่ครอบคลุมมากขึ้นได้รับการชื่นชมอย่างมากเพราะนี่จะไม่เป็นกรณีเดียวที่จำเป็นต้องมีกฎที่ชัดเจนในการเขียนโปรแกรมที่ทำงานในลักษณะที่ผู้ใช้คาดหวัง

5
คำสั่งสำหรับการวางคำสั่งของฉันและเอาท์พุทของมัน
บ่อยครั้งที่ฉันต้องการโพสต์สิ่งที่เป็นข้อบกพร่อง GitHub เช่น $ ping google.com PING google.com (216.58.195.238): 56 data bytes Request timeout for icmp_seq 0 64 bytes from 216.58.195.238: icmp_seq=0 ttl=53 time=1064.747 ms ตอนนี้ผมใช้คำสั่งการใช้งานscreen's C-a C-[เพื่อเน้นพื้นที่enterเพื่อคัดลอกไปบัฟเฟอร์ที่วางลงvim, เขียนไปยังแฟ้มแล้วที่เป็นcat pbcopyจะต้องมีวิธีที่ดีกว่า มีคำสั่งที่ฉันสามารถเรียกใช้ซึ่งteeคำสั่งที่ฉันพิมพ์จะนำหน้าด้วย a $และเอาต์พุตทั้งหมดpbcopyหรือไม่ หรืออะไรที่ใกล้เคียง? ฉันจินตนาการ $ demo ping google.com PING google.com (216.58.195.238): 56 data bytes Request timeout for icmp_seq 0 …

3
วิธีการส่งไฟล์ที่พบโดยหาเป็นข้อโต้แย้ง?
ก่อนอื่นให้ตัดคำตอบที่ไม่สำคัญ แต่ไม่เหมาะสม: ฉันสามารถใช้เคล็ดลับfind+ xargsหรือชุดรูปแบบ (เช่นเดียวfindกับ-exec) เพราะฉันต้องใช้การแสดงออกเช่นนี้ต่อการโทรเล็กน้อย ฉันจะกลับมาที่นี่ในตอนท้าย ตอนนี้เป็นตัวอย่างที่ดีกว่าลองพิจารณา: $ find -L some/dir -name \*.abc | sort some/dir/1.abc some/dir/2.abc some/dir/a space.abc ฉันจะส่งต่อสิ่งเหล่านี้เป็นอาร์กิวเมนต์ไปยังได้programอย่างไร เพียงทำมันไม่ได้ทำเคล็ดลับ $ ./program $(find -L some/dir -name \*.abc | sort) ล้มเหลวเนื่องจากprogramได้รับอาร์กิวเมนต์ดังนี้ [0]: ./program [1]: some/dir/1.abc [2]: some/dir/2.abc [3]: some/dir/a [4]: space.abc ดังที่เห็นได้เส้นทางที่มีช่องว่างถูกแยกออกและprogramพิจารณาว่าเป็นอาร์กิวเมนต์ที่ต่างกันสองรายการ อ้างถึงมันใช้งานได้ ดูเหมือนว่าผู้ใช้มือใหม่เช่นตัวฉันเองเมื่อเผชิญกับปัญหาดังกล่าวมักจะเพิ่มคำพูดแบบสุ่มจนกว่าจะได้ผลในที่สุด - เฉพาะที่นี่ดูเหมือนจะไม่ช่วย ... "$(…)" $ …


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