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

สำหรับคำถามเกี่ยวกับสคริปต์ที่เขียนขึ้นสำหรับเชลล์คำสั่ง Bash สำหรับเชลล์สคริปต์ที่มีข้อผิดพลาด / ข้อผิดพลาดทางไวยากรณ์โปรดตรวจสอบด้วยโปรแกรม shellcheck (หรือในเซิร์ฟเวอร์ shellcheck เว็บที่ https://shellcheck.net) ก่อนโพสต์ที่นี่ คำถามเกี่ยวกับการใช้งานอินเทอร์แอคทีฟของ Bash นั้นมีแนวโน้มที่จะอยู่ในหัวข้อของผู้ใช้ขั้นสูงมากกว่าในสแต็คโอเวอร์โฟลว์

17
ตรวจสอบว่ามีผู้ใช้อยู่หรือไม่
ฉันต้องการสร้างสคริปต์เพื่อตรวจสอบว่ามีผู้ใช้อยู่หรือไม่ ฉันใช้ตรรกะด้านล่าง: # getent passwd test > /dev/null 2&>1 # echo $? 0 # getent passwd test1 > /dev/null 2&>1 # echo $? 2 ดังนั้นหากผู้ใช้มีอยู่แล้วเราจะประสบความสำเร็จมิฉะนั้นผู้ใช้จะไม่อยู่ ฉันได้ใส่คำสั่งข้างต้นในสคริปต์ทุบตีดังต่อไปนี้: #!/bin/bash getent passwd $1 > /dev/null 2&>1 if [ $? -eq 0 ]; then echo "yes the user exists" else echo "No, the user …
165 bash 

3
ฉันจะส่งต่อพารามิเตอร์ไปยังคำสั่งอื่นในสคริปต์ทุบตีได้อย่างไร
ภายในสคริปต์ทุบตีของฉันฉันต้องการแยกพารามิเตอร์หนึ่งหรือสองพารามิเตอร์ (สคริปต์สามารถจดจำได้) จากนั้นส่งต่อพารามิเตอร์ที่เหลือไปยังคำสั่งที่เรียกใช้ในสคริปต์ ฉันจะทำสิ่งนั้นได้อย่างไร
165 bash  command-line 

6
การเปรียบเทียบสตริงใน bash [[: ไม่พบ
ฉันพยายามเปรียบเทียบสตริงในทุบตี ฉันได้พบคำตอบเกี่ยวกับวิธีการที่จะทำมันในStackOverflow ในสคริปต์ที่ฉันพยายามฉันใช้รหัสที่ส่งโดย Adam ในคำถามที่กล่าวถึง: #!/bin/bash string='My string'; if [[ "$string" == *My* ]] then echo "It's there!"; fi needle='y s' if [[ "$string" == *"$needle"* ]]; then echo "haystack '$string' contains needle '$needle'" fi ฉันได้ลองวิธีการจากubuntuforumsที่คุณสามารถหาได้ในโพสต์ที่ 2 if [[ $var =~ regexp ]]; then #do something fi ในทั้งสองกรณีฉันได้รับข้อผิดพลาด: [[: not …

12
ดูผลลัพธ์เต็มรูปแบบของคำสั่ง PS
เมื่อฉันรันps -auxคำสั่งบนเซิร์ฟเวอร์ linux ของฉันซึ่งฉันเชื่อมต่อโดยใช้ putty กระบวนการจำนวนน้อยเกินไปที่จะพอดีกับความกว้างหน้าต่างปัจจุบันของฉัน มีทางเลือกอื่นหรือไม่? - อัปเดต - ฉันขอโทษสำหรับการลดระดับฉันคิดว่าคนอื่นจะไม่พบคำตอบที่เป็นประโยชน์เช่นกันดังนั้นฉันจึงลดระดับ นี่คือข้อมูลที่คุณขอ hadoop-user@hadoop-desk:~$ echo $TERM xterm hadoop-user@hadoop-desk:~$ stty -a speed 38400 baud; rows 47; columns 158; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; …
163 linux  bash  shell  process 

6
จุดตัดของสองรายการใน Bash
ฉันพยายามเขียนสคริปต์ง่ายๆที่จะแสดงเนื้อหาที่พบในสองรายการ เพื่อให้ง่ายขึ้นลองใช้ ls เป็นตัวอย่าง ลองนึกภาพ "หนึ่ง" และ "สอง" เป็นไดเรกทอรี one = `ls one` two = `ls two` สี่แยก $ หนึ่ง $ สอง ฉันยังค่อนข้างเขียวอยู่ในทุบตีดังนั้นอย่าลังเลที่จะแก้ไขวิธีที่ฉันทำเช่นนี้ ฉันแค่ต้องการคำสั่งที่จะพิมพ์ไฟล์ทั้งหมดใน "หนึ่ง" และ "สอง" พวกเขาจะต้องมีอยู่ทั้งคู่ คุณอาจเรียกสิ่งนี้ว่า "ทางแยก" ระหว่าง "หนึ่ง" และ "สอง"
163 bash 

17
วิธีแทนที่ $ {} ตัวยึดตำแหน่งในไฟล์ข้อความได้อย่างไร
ฉันต้องการไพพ์เอาท์พุทของไฟล์ "เทมเพลต" ลงใน MySQL ไฟล์ที่มีตัวแปรเช่น${dbName}กระจาย อรรถประโยชน์บรรทัดคำสั่งเพื่อแทนที่อินสแตนซ์เหล่านี้คืออะไรและดัมพ์เอาต์พุตไปยังเอาต์พุตมาตรฐาน?

5
วิธีการกำหนดชื่อฟังก์ชั่นจากภายในฟังก์ชั่น
หากฉันมีสคริปต์ Bash เช่น: #!/bin/bash f() { # echo function name, "f" in this case } มีวิธีการทำเช่นนี้? สามารถใช้ในข้อความช่วยเหลือเช่น printf "Usage: %s: blah blah blah \n" $(basename $0) >&2; เฉพาะในกรณีนี้สิ่งที่ฉันต้องการไม่ใช่$0ซึ่งเป็นชื่อไฟล์ของสคริปต์
163 bash  function 


7
แปลงอาร์กิวเมนต์บรรทัดคำสั่งเป็นอาร์เรย์ใน Bash
ฉันจะแปลงอาร์กิวเมนต์บรรทัดคำสั่งเป็นอาร์เรย์สคริปต์ทุบตีได้อย่างไร ฉันต้องการสิ่งนี้: ./something.sh arg1 arg2 arg3 และแปลงเป็น myArray=( arg1 arg2 arg3 ) เพื่อให้ฉันสามารถใช้ myArray เพื่อใช้ในสคริปต์ต่อไป โพสต์ SO ก่อนหน้านี้ใกล้เข้ามา แต่ไม่ได้เข้าไปในวิธีการสร้างอาร์เรย์: ฉันจะแยกอาร์กิวเมนต์บรรทัดคำสั่งใน Bash ได้อย่างไร ฉันต้องการแปลงอาร์กิวเมนต์เป็นอาร์เรย์สคริปต์ทุบตีปกติ ฉันรู้ว่าฉันสามารถใช้ภาษาอื่น (Python เป็นต้น) แต่ต้องทำอย่างนี้ในการทุบตี ฉันเดาว่าฉันกำลังมองหาฟังก์ชั่น "ผนวก" หรืออะไรที่คล้ายกัน? อัปเดต: ฉันต้องการถามวิธีตรวจสอบข้อโต้แย้งที่เป็นศูนย์และกำหนดค่าอาร์เรย์เริ่มต้นและด้วยคำตอบด้านล่างทำให้สามารถใช้งานได้: if [ "$#" -eq 0 ]; then myArray=( defaultarg1 defaultarg2 ) else myArray=( "$@" ) fi
162 arrays  bash  shell 

5
ปฏิเสธว่าเงื่อนไขในสคริปต์ทุบตี
ฉันใหม่เพื่อทุบตีและฉันพยายามที่จะปฏิเสธคำสั่งต่อไปนี้: wget -q --tries=10 --timeout=20 --spider http://google.com if [[ $? -eq 0 ]]; then echo "Sorry you are Offline" exit 1 ถ้าเงื่อนไขนี้คืนจริงถ้าฉันเชื่อมต่อกับอินเทอร์เน็ต ฉันต้องการให้มันเกิดขึ้นในแบบอื่น ๆ แต่การวาง!ที่ใดก็ได้ดูเหมือนจะไม่ทำงาน

13
การเพิ่มสาขา git ในพรอมต์คำสั่ง Bash
ฉันพยายามเพิ่มสาขา git ที่ฉันกำลังทำงานอยู่ (เช็กเอาต์) บน bash prompt โดยไม่สำเร็จ .. ( ในขณะที่รักษาพา ธ ปัจจุบันของฉันซึ่งแสดงไดเรกทอรี / ไฟล์ที่แอ็คทีฟอยู่) ฉันมีไฟล์. bashrc อยู่ที่บ้าน แต่ฉันก็เห็นหลายคนพูดถึงไฟล์. profile
161 git  bash  ubuntu 


9
คุณรันคำสั่งสำหรับแต่ละบรรทัดของไฟล์ได้อย่างไร
ตัวอย่างเช่นตอนนี้ฉันใช้สิ่งต่อไปนี้เพื่อเปลี่ยนไฟล์ที่มีพา ธ Unix ที่ฉันเขียนไปเป็นไฟล์: cat file.txt | while read in; do chmod 755 "$in"; done มีวิธีที่สง่างามและปลอดภัยกว่านี้ไหม?
161 bash  loops  line 

6
ความแตกต่างระหว่างวงเล็บเหลี่ยมเดี่ยวและคู่ใน Bash
ฉันกำลังอ่านตัวอย่างทุบตีเกี่ยวกับifแต่บางตัวอย่างเขียนด้วยวงเล็บเหลี่ยมเดียว: if [ -f $param ] then #... fi อื่น ๆ ด้วยวงเล็บเหลี่ยมสองชั้น: if [[ $? -ne 0 ]] then start looking for errors in yourlog fi อะไรคือความแตกต่าง?
161 bash  if-statement 

5
ค้นหาและแทนที่ด้วย bash โดยใช้นิพจน์ทั่วไป
ฉันเคยเห็นตัวอย่างนี้: hello=ho02123ware38384you443d34o3434ingtod38384day echo ${hello//[0-9]/} ซึ่งตามไวยากรณ์นี้: ${variable//pattern/replacement} น่าเสียดายที่patternเขตข้อมูลนั้นดูเหมือนจะไม่สนับสนุนไวยากรณ์แบบเต็มของ regex (ถ้าฉันใช้.หรือ\sตัวอย่างเช่นมันพยายามจับคู่อักขระตามตัวอักษร) ฉันจะค้นหา / แทนที่สตริงโดยใช้ไวยากรณ์ regex แบบเต็มได้อย่างไร
161 regex  bash 

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