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

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

6
แปลงเนื้อหาไฟล์เป็นตัวพิมพ์เล็ก
ฉันมีtempไฟล์ที่มีเนื้อหาตัวพิมพ์เล็กและตัวพิมพ์เล็ก อินพุต เนื้อหาของtempไฟล์ของฉัน: hi Jigar GANDHI jiga ฉันต้องการที่จะแปลงบนไปล่าง คำสั่ง ฉันลองคำสั่งต่อไปนี้: sed -e "s/[A-Z]/[a-z]/g" temp แต่มีเอาต์พุตผิด เอาท์พุต ฉันต้องการมันเป็น: hi jigar gandhi jiga สิ่งที่จะต้องมีในแทนส่วนของการโต้แย้งสำหรับsed?

11
สร้างตัวเลขสุ่มในช่วงที่กำหนด
หลังจาก googling ไปเล็กน้อยฉันไม่สามารถหาวิธีง่ายๆในการใช้คำสั่ง shell เพื่อสร้างตัวเลขจำนวนเต็มฐานสิบแบบสุ่มที่รวมอยู่ในช่วงเฉพาะซึ่งอยู่ระหว่างขั้นต่ำและสูงสุด ฉันอ่านเกี่ยวกับ/dev/random, /dev/urandomและ$RANDOMแต่ไม่มีของเหล่านี้สามารถทำสิ่งที่ฉันต้องการ มีคำสั่งที่มีประโยชน์หรือวิธีการใช้ข้อมูลก่อนหน้านี้หรือไม่?

4
เหตุใด `ในขณะที่ IFS = read` ใช้บ่อยๆแทนที่จะเป็น 'IFS =; ในขณะที่อ่าน ..
ดูเหมือนว่าการปฏิบัติตามปกติจะทำให้การตั้งค่าของ IFS อยู่นอกวงขณะที่เพื่อไม่ให้ซ้ำการตั้งค่าสำหรับการวนซ้ำแต่ละครั้ง ... นี่เป็นเพียงลักษณะ "ลิงดูลิงทำ" เป็นนิสัยเพราะมันเป็นลิงนี้จนกระทั่ง ฉันอ่านman readหรือว่าฉันขาดกับดักบางอย่าง (หรือโจ่งแจ้งชัดเจน) ที่นี่?

5
อะไรคือความแตกต่างระหว่าง eval และ exec?
evalและexecทั้งสองอยู่ในคำสั่งของ bash (1) ที่รันคำสั่ง ฉันเห็นด้วยexecมีตัวเลือกน้อย แต่นั่นคือความแตกต่างเท่านั้น? เกิดอะไรขึ้นกับบริบทของพวกเขา

3
วนซ้ำแบบซ้ำ
ฉันต้องการเขียนสิ่งนี้: $ ls **.py เพื่อให้ได้ชื่อไฟล์. py ทั้งหมดให้เดินลำดับชั้นไดเรกทอรีซ้ำ แม้ว่าจะมีไฟล์. py ที่ต้องการค้นหาเชลล์ (bash) จะให้เอาต์พุตนี้: ls: cannot access **.py: No such file or directory มีวิธีใดที่จะทำสิ่งที่ฉันต้องการ แก้ไข:ฉันต้องการระบุว่าฉันไม่สนใจเฉพาะกรณีlsแต่คำถามเกี่ยวกับไวยากรณ์ glob

12
การกำหนดพา ธ ไปยังเชลล์สคริปต์ที่มา
มีวิธีการที่เป็นแหล่งเชลล์สคริปต์เพื่อหาเส้นทางของตัวเองหรือไม่ ฉันกังวลเกี่ยวกับทุบตีเป็นหลักแม้ว่าฉันจะมีเพื่อนร่วมงานบางคนที่ใช้ tcsh ฉันเดาว่าฉันอาจไม่มีโชคที่นี่เนื่องจากการหาสาเหตุทำให้คำสั่งถูกเรียกใช้ในเชลล์ปัจจุบันดังนั้นจึง$0ยังคงเป็นการเรียกใช้เชลล์ปัจจุบันไม่ใช่สคริปต์ที่มา ความคิดที่ดีที่สุดของฉันคือการทำsource $script $scriptเพื่อให้พารามิเตอร์ตำแหน่งแรกมีข้อมูลที่จำเป็น ใครมีวิธีที่ดีกว่า เพื่อความชัดเจนฉันกำลังจัดหาสคริปต์ไม่ใช่เรียกใช้: source foo.bash
80 shell  source 

2
ฉันจะยกเลิกการตั้งค่าตัวแปรที่บรรทัดคำสั่งได้อย่างไร
ฉันได้ลองคำสั่งต่อไปนี้เพื่อตั้ง Proxy บนyaourt: export ALL_PROXY=http://proxy.example.com:8080 คำถามคือวิธีการยกเลิกการตั้งค่าพร็อกซี่yaourt? โดยทั่วไปแล้วฉันจะยกเลิกการตั้งค่าของตัวแปรในเชลล์ปัจจุบันได้อย่างไร?
80 shell  yaourt 



2
มีเหตุผลที่ดีในการใช้งาน sudo su หรือไม่?
ในการเปิดรูทเชลล์บนเครื่องที่ปิดใช้งานบัญชีรูทคุณสามารถเรียกใช้หนึ่งใน: sudo -i: เรียกใช้เปลือกเข้าสู่ระบบแบบโต้ตอบ (อ่าน/root/.bashrcและ/root/.profile) sudo -s: เรียกใช้เปลือกโต้ตอบที่ไม่ใช่การเข้าสู่ระบบ (อ่าน/root/.bashrc) ในโลกอูบุนตูฉันมักจะเห็นsudo suคำแนะนำว่าเป็นวิธีที่จะได้รูทเชลล์ ทำไมต้องรันสองคำสั่งแยกกันเมื่อจะทำ? เท่าที่ผมสามารถบอกได้sudo -iเทียบเท่ากับsudo su -และเป็นเช่นเดียวกับsudo -ssudo su ความแตกต่างเพียงอย่างเดียวดูเหมือนจะ (เปรียบเทียบsudo -iด้านซ้ายและsudo su -ด้านขวา): และเปรียบเทียบsudo -s(ซ้าย) และsudo su(ขวา): ความแตกต่างหลัก (ละเว้นSUDO_fooตัวแปรและLS_COLORS) ดูเหมือนจะเป็นXDG_fooตัวแปรระบบในsudo suรุ่น มีกรณีใดบ้างที่ทำให้ใบสำคัญแสดงสิทธิที่แตกต่างกันใช้ค่อนข้างไม่เหมาะสมsudo su? ฉันสามารถบอกผู้คนได้อย่างปลอดภัย (อย่างที่ฉันมักมี) ว่าไม่มีจุดใดในการวิ่งsudo suหรือไม่มีอะไรเลย?


14
วิธีที่ดีที่สุดในการค้นหาประวัติของเชลล์
มีวิธีที่ดีกว่าในการค้นหาไฟล์ประวัติสำหรับคำสั่งมากกว่า grep หรือไม่? ฉันมีความคิดบางอย่างว่าคำสั่งเริ่มต้นอย่างไร แต่ฉันไม่รู้ว่ามันจะย้อนกลับไปนานแค่ไหนในประวัติศาสตร์ อัปเดต:ก่อนหน้านี้มีเฉพาะ zsh แต่เนื่องจากคำตอบที่ทับซ้อนกันคุณสามารถตอบเชลล์ (หรือโหมด (vi / emacs)) ใด ๆ ได้ที่นี่โปรดทราบว่ามันเฉพาะเจาะจงหรือไม่

4
เรียงลำดับผลลัพธ์ของ“ ค้นหา” หรือไม่
ฉันต้องสามารถเรียงลำดับเอาต์พุตตามตัวอักษรfindก่อนที่จะไพพ์ไปยังคำสั่ง การเข้า| sort |ระหว่างไม่ทำงานฉันควรทำอย่างไร find folder1 folder2 -name "*.txt" -print0 | xargs -0 myCommand
77 shell  find  sort  xargs 

4
วิธีเลิกทำ `set -x`
ฉันพิมพ์set -xใน terminal ตอนนี้เทอร์มินัลยังคงพิมพ์คำสั่งล่าสุดที่ทำงานอยู่ด้านบนของผลลัพธ์ของฉันดังนั้นคำสั่ง ~]$echo "this is what I see" ผลตอบแทน + echo 'this is what I see' this is what I see ไม่มี man page สำหรับsetฉันจะset -xปิดได้อย่างไร
77 shell 

8
/ usr / sbin / nologin เป็นเชลล์ล็อกอินให้บริการเพื่อความปลอดภัยหรือไม่
ใน/etc/passwdไฟล์ของฉันฉันจะเห็นว่าwww-dataผู้ใช้ที่ Apache ใช้รวมถึงผู้ใช้ระบบทุกประเภทมีเปลือกล็อกอิน/usr/sbin/nologinหรืออย่างใดอย่างหนึ่ง /bin/falseตัวอย่างเช่นนี่คือการเลือกบรรทัด: daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash ดังนั้นหากฉันพยายามที่จะสลับไปยังผู้ใช้เหล่านี้ (ซึ่งบางครั้งฉันต้องการที่จะทำเพื่อตรวจสอบความเข้าใจของฉันเกี่ยวกับการอนุญาตของพวกเขาและสิ่งที่อาจมีเหตุผลอื่นที่มีเหตุผลอย่างน้อยครึ่งทาง) ฉันล้มเหลว: mark@lunchbox:~$ sudo su www-data This account is currently not available. mark@lunchbox:~$ sudo su syslog mark@lunchbox:~$ แน่นอนว่ามันไม่สะดวกนักเพราะฉันยังสามารถเปิดตัวเชลล์สำหรับพวกเขาผ่านวิธีการเช่นนี้: mark@lunchbox:~$ sudo -u www-data /bin/bash www-data@lunchbox:~$ แต่นั่นทำให้ฉันสงสัยว่าจุดประสงค์อะไรที่จะให้บริการโดยการปฏิเสธผู้ใช้เหล่านี้เข้าสู่ระบบเชลล์ เมื่อมองไปรอบ ๆ อินเทอร์เน็ตเพื่อดูคำอธิบายหลาย ๆ คนอ้างว่าสิ่งนี้เกี่ยวข้องกับความปลอดภัยและทุกคนก็เห็นด้วยว่าเป็นความคิดที่ดีที่จะเปลี่ยนเชลล์ล็อกอินของผู้ใช้เหล่านี้ นี่คือชุดของคำพูด: การตั้งค่าเชลล์ของผู้ใช้ Apache ให้เป็นสิ่งที่ไม่ใช่แบบอินเทอร์แอคทีฟโดยทั่วไปแล้วเป็นวิธีปฏิบัติด้านความปลอดภัยที่ดี (จริงๆแล้วผู้ใช้บริการทุกคนที่ไม่จำเป็นต้องเข้าสู่ระบบแบบโต้ตอบควรตั้งค่าเชลล์ของพวกเขา - https://serverfault.com/a/559315/147556 …
77 shell  security  users  login 

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