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

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

8
ฉันจะส่ง stdout ไปยังหลายคำสั่งได้อย่างไร
มีคำสั่งบางตัวที่กรองหรือดำเนินการกับอินพุตจากนั้นส่งผ่านไปตามเอาต์พุตฉันคิดว่าปกติแล้วstdout- แต่คำสั่งบางอย่างจะใช้stdinและทำสิ่งที่พวกเขาทำกับมัน ฉันคุ้นเคยกับ OS X มากที่สุดและมีอยู่สองอย่างที่นึกขึ้นมาทันทีpbcopyและpbpaste- ซึ่งหมายถึงการเข้าถึงคลิปบอร์ดของระบบ อย่างไรก็ตามฉันรู้ว่าถ้าฉันต้องการ stdout และคายเอาท์พุทเพื่อไปที่ทั้งสองstdoutและไฟล์จากนั้นฉันสามารถใช้teeคำสั่ง และฉันรู้เรื่องเล็กน้อยxargsแต่ฉันไม่คิดว่านั่นคือสิ่งที่ฉันกำลังมองหา ฉันต้องการทราบว่าฉันสามารถแยกstdoutคำสั่งระหว่างสองคำสั่ง (หรือมากกว่า) ได้อย่างไร ตัวอย่างเช่น: cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors อาจมีตัวอย่างที่ดีกว่าตัวอย่างนั้น แต่ฉันสนใจที่จะรู้ว่าฉันสามารถส่ง stdout ไปยังคำสั่งที่ไม่ส่งสัญญาณได้อย่างไรและในขณะที่ไม่stdoutถูก "ปิดเสียง" - ฉันไม่ได้ถามเกี่ยวกับcatไฟล์และgrepส่วนหนึ่งของมันและคัดลอกไปยังคลิปบอร์ด - คำสั่งเฉพาะนั้นไม่สำคัญ นอกจากนี้ - ฉันไม่ได้ถามว่าจะส่งไฟล์นี้ไปยังไฟล์ได้อย่างไรstdout- อาจเป็นคำถามที่ "ซ้ำกัน" (ขออภัย) แต่ฉันได้ลองดูแล้วจะพบคนที่คล้ายกันที่ถามถึงวิธีการแยกระหว่าง stdout และไฟล์ - และคำตอบสำหรับคำถามเหล่านั้นดูเหมือนจะเป็นteeซึ่งฉันไม่คิดว่าจะทำงานให้ฉันได้ สุดท้ายคุณอาจถามว่า "ทำไมไม่ทำให้ pbcopy เป็นสิ่งสุดท้ายในห่วงโซ่ท่อ" และการตอบสนองของฉันคือ …

8
อนุญาตให้ setuid บนเชลล์สคริปต์
setuidบิตได้รับอนุญาตบอกลินุกซ์ที่จะเรียกใช้โปรแกรมที่มีรหัสผู้ใช้ที่มีประสิทธิภาพของการใช้แทนการปฏิบัติการที่: > cat setuid-test.c #include <stdio.h> #include <unistd.h> int main(int argc, char** argv) { printf("%d", geteuid()); return 0; } > gcc -o setuid-test setuid-test.c > ./setuid-test 1000 > sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test > ./setuid-test 65534 อย่างไรก็ตามสิ่งนี้ใช้กับไฟล์ที่เรียกทำงานได้เท่านั้น เชลล์สคริปต์ละเว้นบิต setuid: > cat setuid-test2 #!/bin/bash id -u > ./setuid-test2 …

11
ฉันจะแปลงเวลาประทับของยุคเป็นรูปแบบที่มนุษย์อ่านได้บน cli ได้อย่างไร
ฉันจะแปลงเวลาประทับของยุคเป็นรูปแบบที่มนุษย์อ่านได้บน cli ได้อย่างไร ฉันคิดว่ามีวิธีที่จะทำกับวันที่ แต่ไวยากรณ์ฉันพ้น (วิธีอื่น ๆ ยินดีต้อนรับ)
183 command-line  shell  date 

7
การเตรียมการประทับเวลาให้กับแต่ละบรรทัดของเอาต์พุตจากคำสั่ง
ฉันต้องการเพิ่มการประทับเวลาลงในแต่ละบรรทัดของเอาต์พุตจากคำสั่ง ตัวอย่างเช่น: foo bar baz จะกลายเป็น [2011-12-13 12:20:38] foo [2011-12-13 12:21:32] bar [2011-12-13 12:22:20] baz ... โดยที่เวลานำหน้าคือเวลาที่บรรทัดถูกพิมพ์ ฉันจะบรรลุสิ่งนี้ได้อย่างไร
182 shell  timestamps 

7
คำสั่ง "eval" ใน bash คืออะไร?
คุณสามารถทำอะไรกับevalคำสั่ง? ทำไมถึงมีประโยชน์ มันมีฟังก์ชั่นในตัวในการทุบตี? ไม่มีmanหน้าสำหรับมัน ..
176 bash  shell  eval 

10
วิธีการตรวจสอบการใช้งาน CPU / หน่วยความจำของกระบวนการเดียว?
ฉันต้องการตรวจสอบการใช้งานหน่วยความจำ / cpu ของกระบวนการแบบเรียลไทม์ คล้ายกับtopแต่กำหนดเป้าหมายเพียงหนึ่งกระบวนการโดยเฉพาะอย่างยิ่งกับกราฟประวัติของบางประเภท
170 shell  process  monitoring  top 

8
ความแตกต่างระหว่าง / sbin / nologin และ / bin / false คืออะไร
ในทางเทคนิคหากไม่มีการpamตั้งค่าให้ตรวจสอบเชลล์ของคุณด้วยpam_shellsสิ่งเหล่านี้จะไม่สามารถป้องกันการเข้าสู่ระบบของคุณได้หากคุณไม่ได้ใช้เชลล์ ในระบบของฉันมีขนาดต่างกันดังนั้นฉันสงสัยว่าพวกเขาทำอะไรบางอย่างจริงๆ ดังนั้นความแตกต่างคืออะไร? ทำไมพวกเขาทั้งสองอยู่? ทำไมฉันถึงต้องใช้อันเดียวกัน -rwxr-xr-x 1 root root 21K Feb 4 17:01 /bin/false -rwxr-xr-x 1 root root 4.7K Mar 2 14:59 /sbin/nologin
169 shell  security  login 

4
ค้นหาไดเรกทอรีทำงานปัจจุบันของกระบวนการทำงานหรือไม่
คำสั่งใดที่สามารถใช้เพื่อค้นหาไดเรกทอรีการทำงานปัจจุบัน (CWD) ของกระบวนการที่กำลังทำงานอยู่ เหล่านี้จะเป็นคำสั่งที่คุณสามารถใช้จากภายนอกได้

5
วิธีหยุดชั่วคราวและนำกระบวนการพื้นหลังมาทำงานเบื้องหน้า
ฉันมีกระบวนการที่ทำงานอยู่เบื้องหน้า ฉันหยุดทำงานโดยCtrl+ Zจากนั้นให้ทำงานในพื้นหลังbg <jobid>ต่อ ฉันสงสัยว่าจะระงับกระบวนการที่ทำงานในพื้นหลังได้อย่างไร ฉันจะนำกระบวนการพื้นหลังมาสู่เบื้องหน้าได้อย่างไร แก้ไข: กระบวนการส่งออกไปยัง stderr ดังนั้นฉันจะออกคำสั่งfg <jobid>ในขณะที่กระบวนการส่งออกไปยังเทอร์มินัลได้อย่างไร

6
เรียกใช้คำสั่งที่มีเงาโดยนามแฝง
สมมติว่าฉันมีนามแฝงต่อไปนี้ในทุบตี - alias ls='ls --color=auto'- และฉันต้องการโทรธรรมดาlsโดยไม่มีตัวเลือก เป็นวิธีเดียวที่จะทำเช่นนั้นคือ unalias ทำคำสั่งแล้วนามแฝงอีกครั้ง? หรือมีเคล็ดลับหรือวิธีแก้ปัญหาที่ดี?
163 bash  shell  alias 

10
ดำเนินการคำสั่งหนึ่งครั้งต่อหนึ่งบรรทัดอินพุตที่ไพพ์หรือไม่?
ls | grep pattern -ฉันต้องการที่จะเรียกใช้คำสั่งภาษาจาวาละครั้งสำหรับการแข่งขันของทุก ในกรณีนี้ฉันคิดว่าฉันสามารถทำได้find pattern -exec java MyProg '{}' \;แต่ฉันอยากรู้เกี่ยวกับกรณีทั่วไป - มีวิธีที่ง่ายที่จะพูดว่า "เรียกใช้คำสั่งหนึ่งครั้งสำหรับอินพุตมาตรฐานทุกบรรทัด" หรือไม่ (ในปลาหรือทุบตี)
162 bash  shell  fish 

6
`(backquote / backtick) หมายถึงอะไรในคำสั่ง?
ฉันเจอคำสั่งต่อไปนี้: sudo chown `id -u` /somedir และฉันสงสัยว่า: ความหมายของ`สัญลักษณ์คืออะไร ฉันสังเกตเห็นว่าขณะที่คำสั่งข้างต้นทำงานได้ดีคำสั่งด้านล่างไม่ทำงาน: sudo chown 'id -u' /somedir
159 shell  quoting 

2
มีงานที่หยุด (เมื่อ bash exit)
ฉันได้รับข้อความThere are stopped jobs.เมื่อพยายามออกจาก bash shell บางครั้ง นี่เป็นสถานการณ์จำลองที่ทำซ้ำได้ใน python 2.x: ctrl+ cได้รับการจัดการโดยล่ามเป็นข้อยกเว้น ctrl+ z'หยุด' กระบวนการ ctrl+ dออกจาก python สำหรับ reals นี่คือเอาต์พุตเทอร์มินัลในโลกแห่งความจริง: example_user@example_server:~$ python Python 2.7.3 (default, Sep 26 2013, 20:03:06) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> ctrl+z [1]+ Stopped python example_user@example_server:~$ exit …
157 bash  shell  process 

7
จะเขียนทับไฟล์เป้าหมายด้วย mv ได้อย่างไร?
ฉันมีไฟล์และ dirs มากมายในไดเรกทอรีย่อยฉันต้องการย้ายไปยังไดเรกทอรีหลัก มีไฟล์และไดเร็กตอรี่บางส่วนอยู่ในไดเรกทอรีเป้าหมายซึ่งจำเป็นต้องเขียนทับ ไฟล์ที่มีอยู่ในเป้าหมายเท่านั้นควรไม่ถูกแตะต้อง ฉันสามารถบังคับmvให้ทำเช่นนั้นได้หรือไม่? มัน ( mv * ..) บ่น mv: cannot move `xyz' to `../xyz': Directory not empty ฉันพลาดอะไรไป

9
จะทราบได้อย่างไรว่าตัวแปรสภาพแวดล้อมมาจากที่ใด
ฉันมีอินสแตนซ์ลินุกซ์ที่ฉันตั้งค่าบางเวลามา เมื่อฉันเปิดใช้งานและลงชื่อเข้าใช้เนื่องจากrootมีตัวแปรสภาพแวดล้อมบางอย่างที่ฉันตั้งค่า แต่ฉันจำไม่ได้หรือไม่ทราบว่ามาจากไหน ฉันได้ตรวจสอบ~/.bash_profileแล้ว/etc/.bash_rcและสคริปต์เริ่มต้นทั้งหมด ฉันวิ่งfindและgrepไม่มีประโยชน์ ฉันรู้สึกเหมือนฉันต้องลืมที่จะมองในบางสถานที่ที่ชัดเจน มีเคล็ดลับในการหาสิ่งนี้หรือไม่?

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