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

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

22
วิธีการหลีกเลี่ยงอัญประกาศเดี่ยวภายในสตริงที่ยกมาเดี่ยว
สมมติว่าคุณมี Bash aliasเช่น: alias rxvt='urxvt' ซึ่งใช้งานได้ดี อย่างไรก็ตาม: alias rxvt='urxvt -fg '#111111' -bg '#111111'' จะไม่ทำงานและจะไม่: alias rxvt='urxvt -fg \'#111111\' -bg \'#111111\'' ดังนั้นคุณจะจบลงด้วยการจับคู่คำพูดเปิดและปิดคำพูดในสตริงเมื่อคุณได้หนีคำพูดได้อย่างไร alias rxvt='urxvt -fg'\''#111111'\'' -bg '\''#111111'\'' ดูเหมือนไม่จริงแม้ว่ามันจะเป็นตัวแทนของสตริงเดียวกันหากคุณได้รับอนุญาตให้เชื่อมต่อพวกเขาเช่นนั้น
1016 bash  syntax  quoting 

14
วิธีการโหลด. bash_profile จากบรรทัดคำสั่งได้อย่างไร
ฉันจะโหลดซ้ำ.bash_profileจากบรรทัดคำสั่งได้อย่างไร ฉันสามารถรับเชลล์เพื่อรับรู้การเปลี่ยนแปลง.bash_profileโดยออกและเข้าสู่ระบบกลับ แต่ฉันต้องการที่จะสามารถทำมันได้ตามต้องการ
995 bash  shell  command-line 

10
วิธีเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์และ stdout
Наэтотвопросестьответына กองมากเกินнарусском : Каксохранитьвыводлюбойкомандывфайли сразужеувидетьеговтерминале ? ใน bash การโทรfooจะแสดงเอาต์พุตใด ๆ จากคำสั่งนั้นบน stdout การโทรfoo > outputจะเปลี่ยนเส้นทางเอาต์พุตใด ๆ จากคำสั่งนั้นไปยังไฟล์ที่ระบุ (ในกรณีนี้คือ 'เอาต์พุต') มีวิธีการเปลี่ยนเส้นทางการส่งออกไปยังไฟล์และมันจะแสดงบน stdout หรือไม่?
988 linux  bash  file-io  io  stdout 

11
ฉันจะไปป์ stderr ได้อย่างไรและไม่ใช่ stdout?
ผมมีโปรแกรมที่เขียนข้อมูลไปยังstdoutและstderrและฉันต้องgrepผ่านอะไรมาเพื่อstderrขณะที่ไม่คำนึงถึงstdout แน่นอนฉันสามารถทำได้ใน 2 ขั้นตอน: command > /dev/null 2> temp.file grep 'something' temp.file แต่ฉันต้องการที่จะสามารถทำได้โดยไม่ต้องไฟล์ temp มีเทคนิคการวางท่อแบบอัจฉริยะหรือไม่?
981 bash  grep  stdout  pipe  stderr 

7
การส่งพารามิเตอร์ไปยังฟังก์ชัน Bash
ฉันพยายามค้นหาวิธีการส่งผ่านพารามิเตอร์ในฟังก์ชัน Bash แต่สิ่งที่เกิดขึ้นคือวิธีการส่งผ่านพารามิเตอร์จากบรรทัดคำสั่งเสมอ ฉันต้องการส่งพารามิเตอร์ภายในสคริปต์ของฉัน ฉันเหนื่อย: myBackupFunction("..", "...", "xx") function myBackupFunction($directory, $options, $rootPassword) { ... } แต่ไวยากรณ์ไม่ถูกต้องจะส่งพารามิเตอร์ไปยังฟังก์ชันของฉันได้อย่างไร

21
ฉันจะประกาศและใช้ตัวแปรบูลีนในเชลล์สคริปต์ได้อย่างไร
ฉันพยายามประกาศตัวแปรบูลีนในเชลล์สคริปต์โดยใช้ไวยากรณ์ต่อไปนี้: variable=$false variable=$true ถูกต้องหรือไม่ นอกจากนี้หากฉันต้องการอัปเดตตัวแปรนั้นฉันจะใช้ไวยากรณ์เดียวกันหรือไม่ ในที่สุดเป็นไวยากรณ์ต่อไปนี้สำหรับการใช้ตัวแปรบูลีนเป็นนิพจน์ที่ถูกต้อง? if [ $variable ] if [ !$variable ]
978 bash  shell  scripting  boolean  sh 



27
รายการไดเรกทอรีเฉพาะการใช้ ls ใน Bash?
คำสั่งนี้จะแสดงรายการไดเรกทอรีในเส้นทางปัจจุบัน: ls -d */ รูปแบบที่แน่นอน*/ทำอะไร? และเราจะให้เส้นทางแบบสัมบูรณ์ในคำสั่งด้านบน (เช่นls -d /home/alice/Documents) เพื่อแสดงรายการเฉพาะไดเรกทอรีในเส้นทางนั้นได้อย่างไร
954 bash  directory  ls 

28
ไปป์จาก / ไปยังคลิปบอร์ดใน Bash script
เป็นไปได้ที่จะไปป์จาก / ไปที่คลิปบอร์ดใน Bash? ไม่ว่าจะเป็นท่อไปยัง / จากที่จับอุปกรณ์หรือใช้แอพพลิเคชั่นเสริมฉันไม่พบอะไรเลย ตัวอย่างเช่นหาก/dev/clipเป็นอุปกรณ์ที่เชื่อมโยงไปยังคลิปบอร์ดเราสามารถทำได้: cat /dev/clip # Dump the contents of the clipboard cat foo > /dev/clip # Dump the contents of "foo" into the clipboard
946 linux  bash  macos  clipboard 

30
วิธีการตัดช่องว่างจากตัวแปร Bash?
ฉันมีเชลล์สคริปต์ด้วยรหัสนี้: var=`hg st -R "$path"` if [ -n "$var" ]; then echo $var fi แต่รหัสเงื่อนไขจะดำเนินการhg stเสมอเพราะพิมพ์อักขระบรรทัดใหม่อย่างน้อยหนึ่งตัว มีวิธีง่ายๆในการตัดช่องว่างจาก$var(เช่นtrim()ในPHP )? หรือ มีวิธีมาตรฐานในการจัดการกับปัญหานี้หรือไม่? ฉันสามารถใช้sedหรือAWKได้ แต่ฉันคิดว่ามันมีทางออกที่ดีกว่าสำหรับปัญหานี้
920 string  bash  variables  trim 

13
วิธีการสะท้อนคำสั่งของเชลล์ในขณะที่ดำเนินการ
ในเชลล์สคริปต์ฉันจะสะท้อนคำสั่งเชลล์ทั้งหมดที่เรียกและขยายชื่อตัวแปรได้อย่างไร? ตัวอย่างเช่นกำหนดบรรทัดต่อไปนี้: ls $DIRNAME ฉันต้องการให้สคริปต์รันคำสั่งและแสดงต่อไปนี้ ls /full/path/to/some/dir วัตถุประสงค์คือเพื่อบันทึกล็อกของคำสั่งเชลล์ทั้งหมดที่เรียกว่าและอาร์กิวเมนต์ อาจมีวิธีที่ดีกว่าในการสร้างบันทึกดังกล่าวหรือไม่?
911 bash  shell  sh  posix  trace 

8
วิธีการวนซ้ำอาร์กิวเมนต์ในสคริปต์ Bash
ฉันมีคำสั่งที่ซับซ้อนที่ฉันต้องการสร้างเชลล์ / bash script ของ ฉันสามารถเขียน$1ได้อย่างง่ายดาย: foo $1 args -o $1.ext ฉันต้องการส่งชื่ออินพุตหลาย ๆ ตัวให้สคริปต์ วิธีที่ถูกต้องในการทำคืออะไร? และแน่นอนฉันต้องการจัดการชื่อไฟล์ด้วยช่องว่างในนั้น
900 bash  command-line 

24
วิธีการตั้งค่า $ PATH อย่างถาวรบน Linux / Unix
ฉันกำลังพยายามเพิ่มไดเรกทอรีไปยังเส้นทางของฉันดังนั้นมันจะอยู่ในเส้นทาง Linux ของฉันเสมอ ฉันได้พยายาม: export PATH=$PATH:/path/to/dir ทำงานได้อย่างไรก็ตามทุกครั้งที่ฉันออกจากเทอร์มินัลและเริ่มต้นอินสแตนซ์ของเทอร์มินัลใหม่เส้นทางนี้จะหายไปและฉันต้องเรียกใช้คำสั่งส่งออกอีกครั้ง ฉันจะทำเช่นนั้นได้อย่างไรเพื่อให้การตั้งค่านี้เป็นแบบถาวร
879 linux  bash  unix  path  zsh 

30
การแยก JSON ด้วยเครื่องมือ Unix
Наэтотвопросестьответына กองมากเกินнарусском : Парсинг JSON вเปลือก ฉันพยายามที่จะแยก JSON กลับมาจากการขอขดเช่น: curl 'http://twitter.com/users/username.json' | sed -e 's/[{}]/''/g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' ด้านบนจะแยก JSON ออกเป็นฟิลด์เช่น: % ... "geo_enabled":false "friends_count":245 "profile_text_color":"000000" "status":"in_reply_to_screen_name":null "source":"web" "truncated":false "text":"My status" "favorited":false % ... ฉันจะพิมพ์ฟิลด์เฉพาะ (แสดงโดย-v k=text) ได้อย่างไร
879 json  bash  parsing 

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