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

Bash (Bourne-Again SHell) เป็นเชลล์ที่ใช้ในอินเตอร์เฟสบรรทัดคำสั่งของ Ubuntu ตามค่าเริ่มต้น

15
วิธีรับ bash หรือ ssh ลงใน container ที่กำลังรันในโหมดเบื้องหลัง
ฉันต้องการ ssh หรือทุบตีลงในคอนเทนเนอร์นักเทียบท่าที่กำลังวิ่งอยู่ โปรดดูตัวอย่าง: $ sudo docker run -d webserver webserver is clean image from ubuntu:14.04 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 665b4a1e17b6 webserver:latest /bin/bash ... ... 22/tcp, 80/tcp loving_heisenberg ตอนนี้ฉันต้องการได้รับบางสิ่งเช่นนี้ (เข้าไปในคอนเทนเนอร์ที่ทำงาน): $ sudo docker run -t -i webserver (or maybe 665b4a1e17b6 instead) $ …
933 bash  ssh  docker  container 

8
วิธีการเพิ่มตัวแปรในทุบตี?
ผมได้พยายามที่จะเพิ่มตัวแปรที่เป็นตัวเลขที่ใช้ทั้งvar=$var+1และvar=($var+1)ไม่ประสบความสำเร็จ ตัวแปรคือตัวเลขแม้ว่า bash จะอ่านว่าเป็นสตริง เวอร์ชั่น Bash 4.2.45 (1) -release (x86_64-pc-linux-gnu) บน Ubuntu 13.10
609 bash 

5
อันไหนดีกว่า: ใช้; หรือ && เพื่อรันหลายคำสั่งในหนึ่งบรรทัด?
ในบทเรียนและวิธีการฉันมักจะเห็นคำสั่งรวมกัน ตัวอย่างเช่น sudo apt-get update && sudo apt-get install pyrenamer ดูเหมือนจะมีสี่การเชื่อมต่อเป็นไปได้: &, &&, และ|| ;แม้ว่า& ตัวเชื่อมต่อนั้นจะชัดเจนสำหรับฉัน (มันส่งกระบวนการไปยังพื้นหลังและทำให้เทอร์มินัลว่าง) แต่ก็ไม่ชัดเจนว่าความแตกต่างระหว่าง&&และ;คืออะไร และฉันไม่รู้||จนกระทั่งถึงความคิดเห็นของ Kaya คำถามต่อไปนี้จะจัดการกับความแตกต่างระหว่างตัวเชื่อมต่อทั้งสอง แต่ส่วนใหญ่ทำในความคิดเห็น: จะเริ่มต้นสองแอพพลิเคชั่น Ubuntu ในครั้งเดียวได้อย่างไร? วิธีการรวมหลายคำสั่งใน terminal? ดังนั้นนี่คือคำถามที่เกี่ยวข้องจำนวนหนึ่ง: ความแตกต่างระหว่าง;และ&&คืออะไร? เมื่อใดที่คุณควรใช้ตามลำดับ มันจะเป็นการดีถ้าได้เห็นการใช้งานบางกรณี: ถ้าฉันต้องการเรียกใช้คำสั่งแล้วหลังจากปิดคอมพิวเตอร์ฉันควรเลือกขั้วต่อไหน? ข้อดีและอันตรายของพวกเขาคืออะไร Robie Basakกล่าวถึงความคิดเห็นในคำตอบนี้ว่าคำสั่งเช่นcd /somewhere_else; rm -Rf *นั้นอาจมีผลที่ตามมาทำลายหากองค์ประกอบแรกในห่วงโซ่คำสั่งล้มเหลวตัวอย่างเช่น หากเกี่ยวข้องพวกเขามาจากไหน
427 command-line  bash 

7
ฉันจะถอดรหัสสตริงเบส 64 จากบรรทัดคำสั่งได้อย่างไร
ฉันต้องการเขียนสคริปต์ทุบตีเพื่อถอดรหัสสตริงเบส 64 ตัวอย่างเช่นฉันพิมพ์decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==และมันพิมพ์Aladdin:open sesameและกลับไปที่พรอมต์ จนถึงตอนนี้ฉันได้ลองใช้ไฟล์ bash แบบง่าย ๆ ที่มีpython -m base64 -d $1คำสั่งนี้แล้ว แต่คาดว่าชื่อไฟล์ไม่ใช่สตริง มีอีกคำสั่งที่ไม่โต้ตอบ (ไม่จำเป็นในโมดูล Python) ที่ฉันสามารถเรียกใช้จากบรรทัดคำสั่งเพื่อให้บรรลุนี้โดยไม่ต้องติดตั้งแพคเกจพิเศษใด ๆ ? (หรือถ้าฉันทำบางสิ่งบางอย่างน้อยมาก)
426 command-line  bash 

9
ฉันจะสร้างนามแฝงถาวรของ Bash ได้อย่างไร
ฉันต้องการสร้างนามแฝงต่อrmคำสั่งเพื่อให้มีข้อความยืนยันหลังจากดำเนินการคำสั่งนี้ alias rm='rm -i'ดังนั้นฉันสร้างนามแฝงเช่นนี้ แต่เท่าที่ฉันรู้ว่านี่เป็นนามแฝงชั่วคราวและมันยังมีชีวิตอยู่จนกว่าคุณจะปิดสถานี ตามที่อธิบายไว้ที่นี่เพื่อบันทึกนามแฝงอย่างถาวรฉันต้องดำเนินการ~/.bash_aliasesหรือ~/.bashrcคำสั่งในเทอร์มินัลและเพิ่มนามแฝงของฉันที่นั่น แต่เมื่อฉันรัน~/.bashrcฉันได้รับข้อความแสดงข้อผิดพลาด: bash: /home/bakhtiyor/.bashrc: Permission denied เมื่อฉันเรียกใช้~/.bash_aliasesฉันได้รับข้อความแสดงข้อผิดพลาดเช่นนี้: bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist. ปัญหาที่แท้จริงคืออะไรและฉันจะแก้ไขได้อย่างไร
381 bash  alias 

6
ฉันจะเพิ่มตัวแปรสภาพแวดล้อมได้อย่างไร
ฉันใช้ Ubuntu 11.04 ฉันใช้เทอร์มินัลเพื่อเริ่มเซสชัน bash และฉันต้องการเพิ่มตัวแปรสภาพแวดล้อม: $r@hajt:~$ env THEVAR=/example แต่มันไม่ทำงาน มันแสดงให้เห็นตัวแปรทั้งหมดที่มี Thevar เป็นคนสุดท้าย แต่อีกสายหนึ่งที่จะenvไม่แสดงTHEVARanymore- env | grep THEVARผลตอบแทนอะไร สคริปต์ที่มีการส่งออก ( export THEVAR=/example) หรือการกำหนดตัวแปรอื่น ๆ ( THEVAR=/example) ไม่ได้เพิ่มตัวแปรสภาพแวดล้อม ฉันรู้ว่าฉันกำลังทำสิ่งผิดปกติฉันรู้ว่ามันควรจะเป็นสิ่งที่ง่าย แต่ฉันไม่สามารถหาอะไรได้ อัปเดต: ความหมายที่แท้จริงของคำถามของฉันคือ: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell (อย่างไรก็ตามฉันจะเลือกคำตอบที่ได้รับการโหวตมากที่สุดและปล่อยให้ชื่อที่แก้ไข - นั่นไม่ใช่สิ่งที่ฉันขอ) env เรียกใช้โปรแกรมในสภาพแวดล้อมที่มีการปรับเปลี่ยนจากนั้นยกเลิกการเปลี่ยนแปลงทั้งหมด
364 bash 


16
ฉันจะรันสคริปต์. sh ได้อย่างไร
เมื่อใดก็ตามที่ฉันเปิดไฟล์. sh มันจะเปิดเป็น gedit แทนที่จะเป็นเทอร์มินัล ฉันไม่สามารถหาตัวเลือกใด ๆ ที่คล้ายกับการคลิกขวา → เปิดด้วย → แอพลิเคชันอื่น ๆ ... → ร์มินัล ฉันจะเปิดไฟล์นี้ในเทอร์มินัลได้อย่างไร


4
อะไรคือความแตกต่างระหว่าง #! / bin / sh และ #! / bin / bash?
ถ้าฉันเขียน #!/bin/bash echo "foo" หรือ #!/bin/sh echo "foo" ทั้งสองให้ผลเหมือนกัน ผมเคยเห็นบางสคริปต์ที่เริ่มต้นด้วยหรือ#!/bin/sh #!/bin/bashมีความแตกต่างระหว่างพวกเขาหรือไม่?
280 bash  scripts  sh  shebang 

2
ฉันจะใช้ตัวแปรในคำสั่ง sed ได้อย่างไร
ฉันลองใช้รหัสต่อไปนี้เพื่อแทนที่QQด้วยZZแต่ไม่ได้ทำสิ่งที่ฉันต้องการ: var1=QQ sed -i 's/$var1/ZZ/g' $file อย่างไรก็ตามรหัสนี้ทำในสิ่งที่ฉันต้องการ: sed -i 's/QQ/ZZ/g' $file ฉันจะใช้ตัวแปรได้sedอย่างไร
266 command-line  bash  sed 

6
จะดูการประทับเวลาในประวัติทุบตีได้อย่างไร
มีวิธีใดบ้างที่ฉันสามารถดูว่าเวลาใดที่คำสั่งถูกเรียกใช้จากประวัติทุบตี เราสามารถดูคำสั่งได้ แต่มีวิธีใดบ้างที่ฉันจะได้รับเวลาด้วย? Bottom-Line: เวลาดำเนินการในประวัติ Bash

8
วิธีการล้างประวัติทุบตีอย่างสมบูรณ์?
ฉันต้องการล้างคำสั่งก่อนหน้าทั้งหมดจากประวัติของเซิร์ฟเวอร์ของฉัน ฉันใช้history -cและดูเหมือนว่าทุกสิ่งจะถูกล้าง แต่เมื่อฉันไปที่เซิร์ฟเวอร์คำสั่งทั้งหมดยังคงอยู่ที่นั่น ฉันจะล้างพวกมันอย่างถาวรได้อย่างไร
254 bash  history 

2
'sudo su -' vs 'sudo -i' vs 'sudo / bin / bash' - เมื่อไหร่ที่มันจะใช้งานได้หรือมันจะสำคัญหรือไม่?
เมื่อฉันทำบางสิ่งที่ต้องพิมพ์รูทในหลายสิบครั้งติดต่อกันฉันชอบที่จะเปลี่ยนเซสชั่นของฉันเป็นเซสชันรูท ในบทเรียนต่างๆและคำแนะนำฉันได้ใช้บนอินเทอร์เน็ตที่ฉันเห็นsudo su, sudo su -, sudo -iและsudo /bin/bashถูกนำมาใช้เพื่อเปิดเซสชั่นราก แต่ฉันไม่ชัดเจนเกี่ยวกับความแตกต่างระหว่างเหล่านี้และเมื่อไหร่หรือว่าเรื่องที่แตกต่าง มีคนช่วยเคลียร์สิ่งนี้ให้ฉันได้ไหม
254 command-line  bash  sudo  su 

4
รันเชลล์สคริปต์ในฐานะผู้ใช้อื่นที่ไม่มีรหัสผ่าน
ฉันต้องการเรียกใช้สคริปต์จากเชลล์ ubuntu หลักในฐานะผู้ใช้อื่นที่ไม่มีรหัสผ่าน ฉันมีสิทธิ์แบบเต็ม sudo ดังนั้นฉันจึงลองทำสิ่งนี้: sudo su -c "Your command right here" -s /bin/sh otheruser จากนั้นฉันต้องป้อนรหัสผ่านของฉัน แต่ฉันไม่แน่ใจว่าสคริปต์นั้นทำงานภายใต้ผู้ใช้รายนั้นหรือไม่ ฉันจะยืนยันได้อย่างไรว่าสคริปต์กำลังทำงานภายใต้ผู้ใช้รายนั้นในตอนนี้?
245 command-line  bash  sudo 

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