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

เชลล์คือซอฟต์แวร์ที่ช่วยให้ผู้ใช้โต้ตอบกับระบบปฏิบัติการโดยปกติแล้วพิมพ์ที่บรรทัดคำสั่ง

3
วิธีที่ดีกว่าในการทำ“ echo $ x | sed …” และ“ echo $ x | grep …”
ฉันมักจะพบสิ่งนี้ในสคริปต์ (และฉันต้องยอมรับเขียนด้วยตัวเอง): a=$(echo "$x" | sed "s/foo/bar/") หรือ if echo "$x" | grep -q foo then ... fi พิจารณา "foo" เพื่อรวมบางสิ่งที่ regex ฉันรู้สึกว่าควรจะมี - และเป็นไปได้มากที่สุด- เป็นวิธีที่ดีกว่าในการพูดสิ่งนี้สิ่งหนึ่งที่ไม่เกี่ยวข้องกับคำสั่งสองคำสั่งและไปป์ แต่ห่อสิ่งต่างๆ ฉันหามันไม่เจอ ใคร?
14 shell  grep  sed 

1
ทีสำหรับ Windows?
Windows มีteeสิ่งอำนวยความสะดวกขั้นพื้นฐานสำหรับการคัดลอกอินพุตมาตรฐานไปยังชุดไฟล์โดยพลการหรือไม่แล้วกลับไปที่เอาต์พุตมาตรฐานหรือไม่? ฉันมักจะดาวน์โหลดteeโปรแกรมทั่วไปแต่อยากรู้ว่ามีอะไรแบบนี้ใน PowerShell หรืออะไรแบบนั้น?

3
วิธีรับชื่อจากคำสั่ง find ที่ไม่มีพา ธ
ฉันพยายามรับเฉพาะชื่อจากผลการค้นหาโดยใช้ find แต่จะรวมถึงไดเรกทอรีด้วยเสมอ ฉันจะพิมพ์เฉพาะชื่อ (หรือกำหนดให้กับตัวแปร) โดยใช้ find ได้อย่างไร find trunk/messages/ -name "*.po" -printf '%f\n' คำสั่งที่คล้ายกันเพื่อกำหนดให้ตัวแปรเช่น "ทรัพยากร" เพื่อใช้ในภายหลัง แก้ไข: และถ้าเป็นไปได้เฉพาะชื่อที่ไม่รวมส่วนขยาย
14 linux  shell 

11
ไฟล์บันทึกประวัติ bash / zsh ต่อไดเรกทอรี
ฉันพบว่าฉันทำงานหลายอย่างในโครงการในไดเรกทอรีชุด บางครั้งฉันก็ต้องทำซ้ำบางอย่างในโครงการนั้น แต่ฉันจำไม่ได้ว่าทำอะไร ฉันใช้ Mercurial หรือ Git เพื่อติดตามการเปลี่ยนแปลงของไฟล์แต่ฉันต้องการที่จะจำคำสั่งที่ฉันใช้ในไดเรกทอรีนั้น การค้นหาประวัติเชลล์ของฉันไม่ค่อยมีประโยชน์ ฉันบันทึกทุกอย่างไว้ในไฟล์ประวัติ * _ แล้ว แต่ฉันต้องการรายการสิ่งที่ฉันทำใน ~ / foo / bar และไม่ใช่สิ่งอื่น ๆ (ล้าน) ที่ฉันทำในสัปดาห์นั้น ฉันอาจจำไม่ได้ว่าเดือนใดที่ฉันทำงานในโปรเจ็กต์นั้น ใครบ้างมีความคิดใด ๆ วิธีล็อกไฟล์ไดเรกทอรีโครงการของคำสั่งเชลล์ทั้งหมดที่ฉันใช้? ฉันนึกภาพออกคำสั่งเช่น: ทำงานโครงการของฉัน ... ซึ่งจะตั้งค่าล็อกไฟล์เชลล์เป็น ~ / myproject / .history.log โหลดประวัติก่อนหน้าจากล็อกไฟล์นั้นและอาจอัปเดตพรอมต์ของฉันเพื่อบอกฉันว่าไดเรกทอรีใดที่ฉันใช้งานอยู่ (เช่น vcprompt เพื่อให้รุ่น ข้อมูลการควบคุม) มีอะไรแบบนี้มั้ย
14 linux  bash  shell  history  zsh 

2
การรันคำสั่งโดยไม่มีการสืบทอดสภาวะแวดล้อมของพาเรนต์
มีวิธีเรียกใช้คำสั่ง "ราวกับว่า" มันอยู่ในเซสชั่นการเข้าสู่ระบบใหม่หรือไม่? env -iผมได้พยายามแล้ว อย่างไรก็ตามฉันไม่ต้องการจัดการกับตัวแปร ENV ต่างๆที่ฉันต้องตั้งค่าหรือยกเลิกการตั้งค่า ฉันได้ลองbash -c "some command"แล้วbash -l -c "some commmand"เช่นกัน แต่พวกเขาทั้งหมดคัดลอกสภาพแวดล้อมปัจจุบัน สิ่งที่ฉันได้มาใกล้ที่สุดคือทางออกสลัม: ssh me@localhost "some command"
14 bash  shell  session 


8
เปลี่ยนเชลล์เริ่มต้นบน MSYS2
ฉันต้องการที่จะเปลี่ยนเปลือกเริ่มต้น MSYS2 จากไปbashzsh ฉันได้ลองchsh- ไม่มีใน MSYS2 การแก้ไข/etc/passwdไม่ทำอะไรเลย ดูเหมือนว่าจะถูกละเว้น ฉันดูที่สคริปต์แบทช์ในไดเรกทอรีรากของ MSYS2 และbashฮาร์ดโค้ดในฉันเปลี่ยนทุกอย่างเป็น/usr/bin/bashไป/usr/bin/zshได้ซึ่งทำงานได้ดีจนกระทั่งฉันลองใช้ MinGW ฉันจะเปลี่ยนกระสุนของ MSYS2 ได้อย่างถูกต้องหากเป็นไปได้?
14 windows  shell  msys 

1
หนึ่ง sudo สำหรับหลายขั้ว
สิทธิ์รูทของ Sudo จะได้รับในเวลาที่กำหนด แต่สำหรับเทอร์มินัลเดียวเท่านั้น ถ้าฉันต้องการใช้ sudo ในเทอร์มินัลอื่นในช่วงเวลานั้นฉันต้องพิมพ์รหัสผ่านอีกครั้ง วิธีการบังคับให้ sudo ทำงานข้ามขั้วได้อย่างไร
14 bash  shell  sudo 

3
มีเชลล์ที่รองรับการเสร็จฟัซซี่ใน Sublime Text ไหม
ฉันกำลังใช้ bash และฉันสงสัยว่ามีปลั๊กอินใด ๆ ใน bash หรือ shell อื่น ๆ ซึ่งทำให้ฉันสามารถทำสิ่งนี้ cat tfnislong.txt+ [tab]เสร็จcat ThisFileNameIsSoLong.txtเหมือนกับแท็บใน Sublime Text


3
ฉันจะโฮสต์ mintty shell ได้อย่างไรภายใน Console2
ฉันชอบที่จะใช้Console2สำหรับการทำงานเชลล์ Windows ของฉันซึ่งฉันมักจะทำให้มันเปิดพร้อมท์ของ cygwin ฉันต้องการทดลองใช้ MinTTY (2) และต้องการโฮสต์ภายใน Console2 ด้วย หากเป็นไปได้ฉันจะทำอย่างไร ฉันได้ตั้งค่า Console2 ให้มีแท็บที่เริ่มทำงาน C:\cygwin\bin\mintty.exe - แต่สิ่งนี้จะลบหน้าต่าง Console2 และสร้าง MinTTY อันที่มองไม่เห็น

2
มีวิธีการใช้ ctrl-r หลังจากพิมพ์ส่วนหนึ่งของคำสั่งในทุบตี?
ในทุบตีCtrl+ rคำสั่งจะเป็นประโยชน์มากผมพิมพ์Ctrl+ r whateverและมัน searchs whateverประวัติของฉันสำหรับคำสั่งที่มีคำว่า แต่ถ้าฉันพิมพ์whateverและรู้ว่าฉันต้องการค้นหาคำนั้นและกดCtrl+ rไม่มีอะไรเกิดขึ้น มีวิธีการกดปุ่มและมันทำงานอย่างไรถ้าฉันพิมพ์Ctrl+ r whateverแทนที่จะเป็นwhatever Ctrl+ r? ฉันมีดังต่อไปนี้ในของฉัน.inputrc: "\C-p": history-search-backward แต่จะใช้งานได้ก็ต่อเมื่อจุดเริ่มต้นของบรรทัดเหมือนกัน

5
ไดเร็กทอรีใดที่ path `// 'แสดงใน Linux
เมื่อฉันต้องการที่จะกลับไปไดเรกทอรีระดับบนในลินุกซ์โดยการพิมพ์cd ..ผม cd //typo-ED สำหรับความประหลาดใจที่ยิ่งใหญ่ของฉันไม่มีการรายงานข้อผิดพลาด username@hostname://$มีอะไรมากกว่าที่พรอมต์จะกลายเป็น lsระบุว่าตอนนี้ฉันอยู่ที่ไดเรกทอรีรูท นี่เป็นข้อบกพร่องหรือคุณสมบัติของเชลล์หรือไม่? หากคุณสมบัติเป็น//นามแฝง/คืออะไร? เปลือกของฉันคือ GNU ทุบตีรุ่น 4.1.5 (1) - ปล่อย (i686-linux-gnu) ขอขอบคุณและขอแสดงความนับถือ.



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