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

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

9
คุณค้นหาไฟล์ที่มีจุดสิ้นสุดบรรทัด dos (CRLF) ด้วย grep บน Linux ได้อย่างไร
ฉันต้องการค้นหาไฟล์ที่มีการลงท้ายบรรทัด dos ด้วย grep บน Linux สิ่งนี้: grep -IUr --color '\r\n' . ข้างต้นดูเหมือนจะตรงกับตัวอักษรrnซึ่งไม่ใช่สิ่งที่ต้องการ ผลลัพธ์ของสิ่งนี้จะถูกส่งผ่าน xargs เป็น todos เพื่อแปลง crlf เป็น lf เช่นนี้ grep -IUrl --color '^M' . | xargs -ifile fromdos 'file'
126 linux  bash  grep  newline 

6
ความหมายที่แท้จริงของ IFS = $ '\ n' คืออะไร?
หากตัวอย่างต่อไปนี้ซึ่งตั้งค่าIFSตัวแปรสภาพแวดล้อมเป็นอักขระฟีดบรรทัด ... IFS=$'\n' อะไรเครื่องหมายดอลลาร์หมายความ ว่า ? มันทำอะไรในกรณีเฉพาะนี้? ฉันจะอ่านเพิ่มเติมเกี่ยวกับการใช้งานเฉพาะนี้ได้ที่ไหน (Google ไม่อนุญาตให้ใช้อักขระพิเศษในการค้นหาและฉันไม่รู้ว่าจะค้นหาอะไรเป็นอย่างอื่น) ฉันรู้ว่าIFSตัวแปรสภาพแวดล้อมคืออะไรและ\nตัวละครคืออะไร (ฟีดบรรทัด) แต่ทำไมไม่ใช้แบบฟอร์มต่อไปนี้: IFS="\n"(ซึ่งใช้ไม่ได้) ตัวอย่างเช่นหากฉันต้องการวนซ้ำทุกบรรทัดของไฟล์และต้องการใช้ for loop ฉันสามารถทำได้: for line in (< /path/to/file); do echo "Line: $line" done อย่างไรก็ตามการดำเนินการนี้จะใช้ไม่ได้จนกว่าIFSจะตั้งค่าเป็นอักขระป้อนบรรทัด เพื่อให้ใช้งานได้ฉันต้องทำสิ่งนี้: OLDIFS=$IFS IFS=$'\n' for line in (< /path/to/file); do echo "Line: $line" done IFS=$OLDIFS หมายเหตุ:ฉันไม่ต้องการวิธีอื่นในการทำสิ่งเดียวกันฉันรู้หลายอย่างแล้ว ... ฉันแค่อยากรู้เรื่องนั้น$'\n'และสงสัยว่าจะมีใครให้คำอธิบายกับฉันได้บ้าง


11
ลบเส้นทางที่ซ้ำซ้อนออกจากตัวแปร $ PATH
ฉันได้กำหนดเส้นทางเดียวกันในตัวแปร $ PATH 6 ครั้ง ฉันไม่ได้ออกจากระบบเพื่อตรวจสอบว่าใช้งานได้หรือไม่ ฉันจะลบรายการที่ซ้ำกันได้อย่างไร ตัวแปร $ PATH มีลักษณะดังนี้: echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin:/home/flacs/Programmes/USFOS/bin ฉันจะรีเซ็ตเป็นเพียงแค่ /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

13
การเพิ่มตัวนับใน Bash loop ไม่ทำงาน
ฉันมีสคริปต์ง่ายๆต่อไปนี้ที่ฉันใช้งานลูปและต้องการรักษาไฟล์COUNTER. ฉันไม่สามารถเข้าใจได้ว่าเหตุใดตัวนับจึงไม่อัปเดต เป็นเพราะการสร้าง subshell หรือไม่? ฉันจะแก้ไขปัญหานี้ได้อย่างไร #!/bin/bash WFY_PATH=/var/log/nginx WFY_FILE=error.log COUNTER=0 grep 'GET /log_' $WFY_PATH/$WFY_FILE | grep 'upstream timed out' | awk -F ', ' '{print $2,$4,$0}' | awk '{print "http://domain.com"$5"&ip="$2"&date="$7"&time="$8"&end=1"}' | awk -F '&end=1' '{print $1"&end=1"}' | ( while read WFY_URL do echo $WFY_URL #Some more action COUNTER=$((COUNTER+1)) done ) …
125 linux  bash  shell  scripting  counter 

4
CURL เพื่อเข้าถึงเพจที่ต้องเข้าสู่ระบบจากเพจอื่น
ฉันมี 2 หน้า: xyz.com/aและxyz.com/b. ฉันสามารถเข้าถึงได้xyz.com/bเฉพาะในกรณีที่ฉันลงชื่อเข้าใช้xyz.com/aก่อนเท่านั้น หากเข้าถึงxyz.com/bโดยไม่ผ่านทางอื่นฉันก็ถูกปฏิเสธการเข้าถึง (ไม่มีการเปลี่ยนเส้นทางไปยังการเข้าสู่ระบบ) ผ่านเบราว์เซอร์ เมื่อฉันเข้าสู่ระบบที่xyz.com/aฉันสามารถเข้าถึงอื่น ๆ ปัญหาของฉันคือทำสิ่งนี้โดยใช้คำสั่ง curl ฉันสามารถเข้าสู่ระบบxyz.com/aโดยใช้ curl ได้สำเร็จแต่ลองแล้วxyx.com/bฉันถูกปฏิเสธการเข้าถึง ฉันใช้สิ่งต่อไปนี้: curl --user user:pass https://xyz.com/a #works ok curl https://xyz.com/b #doesn't work ฉันได้ลองใช้บรรทัดที่สองโดยไม่มีส่วนผู้ใช้ / รหัสผ่านแล้ว แต่ก็ยังไม่ได้ผล ทั้งสองเพจใช้ CA เดียวกันจึงไม่เป็นปัญหา ข้อเสนอแนะใด ๆ ? ขอบคุณ

8
วิธีเปิด emacs ภายใน bash
ฉันใช้ Ubuntu 11.10 เมื่อฉันพิมพ์คำสั่ง "emacs" ในเทอร์มินัลมันจะเปิด emacs เป็นหน้าต่างแยกต่างหาก ฉันจะเปิดภายในเทอร์มินัลเช่นโปรแกรมแก้ไขนาโนได้อย่างไร
124 bash  emacs 

7
นับจำนวนอักขระที่เกิดขึ้นในสตริงโดยใช้ Bash
ฉันต้องการนับจำนวนครั้งที่เกิดขึ้นของอักขระในสตริงโดยใช้ Bash ในตัวอย่างต่อไปเมื่อถ่านคือ (ตัวอย่าง) tมันechosหมายเลขที่ถูกต้องของการเกิดขึ้นของtในvarแต่เมื่อตัวอักษรเป็นเครื่องหมายจุลภาคหรืออัฒภาคก็พิมพ์ออกศูนย์: var = "text,text,text,text" num = `expr match $var [,]` echo "$num"
124 bash  shell  sh 

6
วิธีสร้างโปรไฟล์ bash shell script การเริ่มต้นช้า?
bash shell ของฉันใช้เวลาถึง 3-4 วินาทีในการเริ่มต้นในขณะที่ถ้าฉันเริ่มด้วย--norcมันจะทำงานทันที ฉันเริ่ม "การทำโปรไฟล์" /etc/bash.bashrcและ~/.bashrcด้วยการใส่returnข้อความและค้นหาการปรับปรุงความเร็วด้วยตนเองแต่มันไม่ใช่กระบวนการเชิงปริมาณและไม่มีประสิทธิภาพ ฉันจะสร้างโปรไฟล์สคริปต์ทุบตีของฉันได้อย่างไรและดูว่าคำสั่งใดใช้เวลาในการเริ่มต้นมากที่สุด
124 bash  profiling 

11
กรณีการใช้งานของ noop [:] ใน bash คืออะไร?
ฉันค้นหา noop ใน bash (:) แต่ไม่พบข้อมูลที่ดี วัตถุประสงค์ที่แน่นอนหรือกรณีการใช้งานของตัวดำเนินการนี้คืออะไร? ฉันลองทำตามแล้วและมันก็ใช้ได้สำหรับฉัน: [mandy@root]$ a=11 [mandy@root]$ b=20 [mandy@root]$ c=30 [mandy@root]$ echo $a; : echo $b ; echo $c 10 30 โปรดแจ้งให้เราทราบกรณีการใช้งานใด ๆ ของตัวดำเนินการนี้แบบเรียลไทม์หรือสถานที่ใด ๆ ที่จำเป็นต้องใช้
124 bash  shell  noop 


7
วิธีเปลี่ยนชื่อไฟล์เป็นชุดใน macOS Terminal
ฉันมีโฟลเดอร์ที่มีชุดไฟล์ชื่อ: prefix_1234_567.png prefix_abcd_efg.png ฉันต้องการแบทช์ลบขีดล่างและเนื้อหาตรงกลางออกหนึ่งรายการดังนั้นผลลัพธ์จะเป็น: prefix_567.png prefix_efg.png เกี่ยวข้อง แต่ไม่สามารถอธิบายได้อย่างสมบูรณ์: ฉันจะเปลี่ยนชื่อไฟล์โดยใช้ Terminal ได้อย่างไร? Regex เพื่อเปลี่ยนชื่อไฟล์ใน OS X Terminal

5
วิธีระบุตัวแปรเชลล์หลายบรรทัด
ฉันได้เขียนคำถาม: function print_ui_hosts { local sql = "select ........." print_sql "$ sql" } sql ท้องถิ่น - สตริงที่ยาวมาก ไม่มีการจัดรูปแบบข้อความค้นหา ฉันจะแยกสตริงออกเป็นหลายบรรทัดได้อย่างไร
123 bash  shell 

5
แยกไดเร็กทอรีจากพา ธ
ในสคริปต์ของฉันฉันต้องการไดเร็กทอรีของไฟล์ที่ฉันใช้งานอยู่ ยกตัวอย่างเช่นไฟล์ = "สิ่งที่ / สำรอง / file.zip" ฉันต้องมีวิธีที่จะได้รับสตริง " สิ่ง / สำรอง / " $fileจากตัวแปร
123 string  bash  path 

3
ฉันจะเปลี่ยนชื่อไฟล์ทั้งหมดเป็นตัวพิมพ์เล็กได้อย่างไร
ฉันมีตัวอย่างเช่น TREE.wav, ONE.WAV ฉันต้องการเปลี่ยนชื่อเป็น tree.wav, one.wav ฉันจะเปลี่ยนชื่อไฟล์ทั้งหมดเป็นตัวพิมพ์เล็กได้อย่างไร
123 macos  file  bash 

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