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

คำถามเฉพาะของ Bourne อีกครั้งของเชลล์ใน GNU เมื่อเทียบกับเชลล์ Bourne / POSIX อื่น ๆ สำหรับคำถามเกี่ยวกับเชลล์ Unix โดยทั่วไปให้ใช้ / เชลล์แท็กแทน

3
สัญลักษณ์และตัวอักษรที่ยอดเยี่ยมในรูปแบบการทุบตี
ฉันวิ่งข้ามภาพหน้าจอของเทอร์มินัลของใครบางคน: มีรายการของตัวละครทั้งหมดที่สามารถใช้ได้ใน Bash prompt หรือใครบางคนสามารถรับตัวละครสำหรับดาวและลูกศรขวาได้ไหม?
81 bash  prompt  unicode 

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

8
ฉันสามารถ "ส่งออก" ฟังก์ชั่นในทุบตี?
source some_file some_file: doit () { echo doit $1 } export TEST=true ถ้าฉันแหล่งsome_fileฟังก์ชั่น "doit" และตัวแปรทดสอบมีอยู่ในบรรทัดคำสั่ง แต่ใช้สคริปต์นี้: script.sh: #/bin/sh echo $TEST doit test2 จะส่งคืนค่า TEST แต่จะสร้างข้อผิดพลาดเกี่ยวกับฟังก์ชันที่ไม่รู้จัก "doit" ฉันสามารถ "ส่งออก" ฟังก์ชั่นด้วยหรือฉันต้องมีแหล่ง some_file ใน script.sh เพื่อใช้ฟังก์ชั่นที่นั่นหรือไม่?
81 bash  function 

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

3
จะส่งออกตัวแปรจากไฟล์ได้อย่างไร?
ฉันมีtmp.txtไฟล์ที่มีตัวแปรที่จะส่งออกตัวอย่างเช่น: a=123 b="hello world" c="one more variable" ฉันจะส่งออกตัวแปรทั้งหมดเหล่านี้โดยใช้exportคำสั่งเพื่อที่พวกเขาจะสามารถนำมาใช้ในภายหลังโดยกระบวนการลูกได้อย่างไร
80 bash 


5
ตารางสี tput setaf? วิธีการกำหนดรหัสสี?
PS1ฉันอยู่ในกระบวนการของการระบายสีขั้วของฉัน ฉันกำลังการตั้งค่าตัวแปรสีใช้tput; ตัวอย่างเช่นนี่คือสีม่วง: PURPLE=$(tput setaf 125) คำถาม: ฉันจะค้นหารหัสสี (เช่น125) ของสีอื่น ๆ ได้อย่างไร มีคู่มือตารางสี / แผ่นโกงอยู่ที่ไหนสักแห่ง? ฉันแค่ไม่แน่ใจว่า125คืออะไร... มีวิธีใดที่จะใช้สีฐานสิบหกและแปลงเป็นตัวเลขที่setafสามารถใช้ได้หรือไม่?
79 bash  colors  tput 


1
จุดประสงค์ของคำหลัก "ทำ" ใน Bash สำหรับลูปคืออะไร
วัตถุประสงค์ของdoคำหลักในforไวยากรณ์วนซ้ำคืออะไร สำหรับฉันมันรู้สึกซ้ำซ้อน for i in `seq 1 2`; do echo "hi"; done ทำไมไวยากรณ์ไม่เป็นแบบนี้ for i in `seq 1 2`; echo "hi"; done ฉันแน่ใจว่ามันไม่กรอกวัตถุประสงค์ ฉันแค่ต้องการเรียนรู้
76 bash  shell  for 

1
จัดทำ cd ตามลิงก์สัญลักษณ์
ฉันติดตั้งรหัสของฉันเป็น sshfs ในโฮมไดเร็กตอรี่ของฉัน, แต่ลำดับชั้นนั้นยากต่อการจดจำ, ดังนั้นฉันจึงสร้าง symlink ในโฮมไดเร็กตอรี่ของฉันซึ่งนำไปสู่ไดเรกทอรีนั้น. มีวิธีที่เมื่อฉัน cd ไปที่ลิงค์สัญลักษณ์แทนที่จะ cding ไปที่ลิงก์สัญลักษณ์จริงจะ cd ไปที่ไดเรกทอรีนั้นหรือไม่ หากคำถามไม่ชัดเจนนี่คือตัวอย่างของสิ่งที่ฉันกำลังมองหา: foo@foo:~$ ls -l lrwxrwxrwx 1 foo foo 5 2012-11-14 08:20 foo -> bar/bar foo@foo:~$ cd foo foo@foo:~/bar/bar/$

3
ช็อตคัต bash คืออะไรที่จะเปลี่ยนเป็นไดเรกทอรีก่อนหน้า?
น่าเศร้าที่ฉันเพิ่งเรียนรู้เกี่ยวกับปีที่แล้วด้วยการสะดุดบนอินเทอร์เน็ตแบบสุ่ม ฉันใช้มันนาน ๆ ครั้งจนฉันลืมเสมอว่ามันคืออะไรตามเวลาที่ฉันต้องการอีกครั้ง คุณจะเปลี่ยนเป็นไดเรกทอรีก่อนหน้าได้อย่างไร
76 bash  shell  cd-command 

15
วิธีการ grep บรรทัดที่ระบุ _and_ บรรทัดแรกของไฟล์?
สมมติว่าเป็น grep อย่างง่ายเช่น: $ psa aux | grep someApp 1000 11634 51.2 0.1 32824 9112 pts/1 SN+ 13:24 7:49 someApp สิ่งนี้จัดเตรียมข้อมูลจำนวนมาก แต่เนื่องจากบรรทัดแรกของคำสั่ง ps หายไปจึงไม่มีบริบทสำหรับข้อมูล ฉันต้องการให้แสดงบรรทัดแรกของ ps ด้วยเช่นกัน: $ psa aux | someMagic someApp USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 1000 11634 51.2 0.1 32824 9112 …

4
อะไรคือความแตกต่างระหว่างการจัดหา ('.' หรือ 'แหล่งที่มา') และการเรียกใช้ไฟล์ใน bash?
ความแตกต่างระหว่างการเรียกใช้งานสคริปต์เช่นนี้: ./test.sh และดำเนินการสคริปต์เช่นนี้: . test.sh? ฉันลองสคริปต์สองบรรทัดแบบง่าย ๆ เพื่อดูว่าฉันสามารถค้นหาได้หรือไม่ว่ามีความแตกต่าง: #!/bin/bash ls แต่ทั้งสอง. test.shและ./test.shส่งคืนข้อมูลเดียวกัน
76 bash  shell 

2
ฉันจะกำหนดเอาต์พุตของคำสั่งให้กับตัวแปร shell ได้อย่างไร?
ฉันต้องการกำหนดผลลัพธ์ของนิพจน์ให้กับตัวแปรและเชื่อมโยงกับสตริงแล้วสะท้อนกลับ นี่คือสิ่งที่ฉันได้รับ: #!/bin/bash cd ~/Desktop; thefile= ls -t -U | grep -m 1 "Screen Shot"; echo "Most recent screenshot is: "$thefile; แต่ผลลัพธ์นั้น: Screen Shot 2011-07-03 at 1.55.43 PM.png Most recent screenshot is: ดังนั้นดูเหมือนว่าจะไม่ได้รับมอบหมาย$thefileและกำลังถูกพิมพ์ขณะดำเนินการ

2
ตัวเลือก su - ใช้คำสั่งเป็นผู้ใช้อื่น
ฉันสงสัยว่าจะเรียกใช้คำสั่งในฐานะผู้ใช้อื่นจากสคริปต์ได้อย่างไร ฉันมีเจ้าของสคริปต์ตั้งค่าเป็นรูท ฉันยังมีคำสั่งต่อไปนี้ถูกเรียกใช้ภายในสคริปต์เพื่อเรียกใช้คำสั่งเป็นผู้ใช้ฮัดสัน: su -c command hudson นี่เป็นไวยากรณ์ที่ถูกต้องหรือไม่
75 bash  scripting  su  sudo 

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