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

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

3
bash_profile ทั่วโลก
ฉันรู้ว่ามี/etc/profileและ/etc/bashrcไฟล์สำหรับตั้งค่าตัวแปรสภาพแวดล้อมทั่วโลกและบางทีฉันแค่เข้าใจผิดวัตถุประสงค์ของพวกเขา แต่ ... มีbash_profileไฟล์ทั่วโลกหรือไม่ ฉันใช้ Mac OS X
20 bash  osx  profile  bashrc  etc 

3
เก็บคำสั่งที่ประสบความสำเร็จเท่านั้นในประวัติ BASH
บางครั้งฉันเข้าใจผิดไวยากรณ์ของคำสั่ง: # mysql -d test mysql: unknown option '-d' # echo $? 2 ฉันลองอีกครั้งและทำให้ถูกต้อง: # mysql --database test Welcome to the MySQL monitor. mysql > ... ฉันจะป้องกันคำสั่งแรกที่มีรหัสข้อผิดพลาดแตกต่างจาก 0 เพื่อป้อนประวัติได้อย่างไร

3
ฉันสามารถหาเอกสารเกี่ยวกับคำสั่ง“ sudo !!” ได้ที่ไหน
ฉันเพิ่งเรียนรู้ว่า Linux มีsudo !!คำสั่งที่ใช้sudoกับคำสั่งที่ป้อนล่าสุดอย่างแท้จริง ฉันไม่เคยได้ยินเรื่องนี้เลย นั่นคือการควบคุมร่วมกันหรือไม่? ฉันจะหาเอกสารเกี่ยวกับมันได้ที่ไหน
20 bash  sudo 


8
คำสั่งประวัติภายในสคริปต์ทุบตี
ประวัติเป็นคำสั่งในตัวเชลล์ฉันไม่สามารถใช้สิ่งนั้นได้ในสคริปต์ BASH ดังนั้นมีวิธีการนี้โดยใช้สคริปต์ทุบตี? ที่นี่เราไปสคริปต์ของฉันสำหรับคุณ: #!/bin/bash history | tail -100 > /tmp/history.log cd /tmp uuencode history.log history.txt | mail -s "History log of server" hello@hel.com

3
มีข้อเสียของการตั้งค่า 'noclobber' หรือไม่?
รับที่zshสามารถอุดตันไฟล์ทั้งหมดที่ได้รับคำสั่ง: >* ฉันคิดว่าการตั้งค่าตัวเลือกnoclobberจะเป็นความคิดที่ดี ฉันสามารถใช้งานได้ตลอดเวลา>| fileหากฉันต้องการใช้พฤติกรรมการปิดบังเริ่มต้นทั้งใน bash และ zsh (zsh ยังอนุญาตให้ใช้ไวยากรณ์ทางเลือก>!file) ฉันคาดว่าnoclobberจะไม่ได้รับการตั้งค่าเริ่มต้นเนื่องจากความเข้ากันได้ POSIX แต่เพื่อให้แน่ใจว่า: มีข้อเสียในการตั้งค่าnoclobberหรือไม่? อย่างไรก็ตามมีการตั้งค่าnoclobberสำหรับเชลล์แบบโต้ตอบเท่านั้นหรือไม่
20 bash  shell  zsh 

5
Bash - ลำดับของตัวเลขในบรรทัดเดียวกัน
ฉันรู้ว่าคำสั่งseqเพื่อสร้างลำดับของจำนวนเต็มหนึ่งต่อบรรทัด แต่ฉันต้องการถามคำถามสองข้อ: เป็นไปได้ที่จะเขียนตัวเลขของลำดับในบรรทัดเดียวกันหรือไม่? เป็นไปได้ไหมที่จะสร้างสตริงที่ทำตามลำดับตัวเลขโดยคั่นด้วยช่องว่าง
20 bash  seq 

1
ข้อผิดพลาดของไวยากรณ์: จุดสิ้นสุดไฟล์ที่ไม่คาดคิด - สคริปต์ทุบตี [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันกำลังพยายามสร้างแอป spritz ทุกอย่างทำงานได้ดี แต่ตั้งแต่เมื่อวานฉันได้รับข้อผิดพลาดนี้: ./spritz: บรรทัด 176: ข้อผิดพลาดทางไวยากรณ์: จุดสิ้นสุดไฟล์ที่ไม่คาดคิด ฉันตรวจสอบไฟล์สคริปต์แล้วและดูเหมือนว่าทุกอย่างจะสมบูรณ์แบบ ฉันสับสนฉันมีคำสั่ง if ในที่สุดและมันก็ดูถูกต้อง! นี่คือส่วนสุดท้าย: #checks if speed is 150 157 if [[ $2 -eq 150 ]]; 158 then 159 starttime=$SECONDS 160 FS=$'\n' 161 for j in `grep --color=always -iP '\b[^aeiou\s]*[aeiou][^aeiou\s]*\K[aeiou]' $1`; 162 do …

3
ทำไม 'echo --help' ไม่ให้หน้าช่วยเหลือของ echo?
ฉันลอง 'man echo' ใน Bash และบอกฉันว่า 'echo --help' จะแสดงความช่วยเหลือจากนั้นก็ออกและในทำนองเดียวกัน 'echo --version' จะออกเวอร์ชั่นและออก แต่ทำไมมันไม่ทำงาน 'echo --help' เพียงพิมพ์ '--help' อย่างแท้จริง
20 bash  shell  echo 

2
การตั้งค่าตัวแปรเชลล์ในแบบรวมศูนย์เป็นโมฆะ
ฉันชอบ "null coalescing" จริง ๆ ซึ่งคุณสามารถตั้งค่าตัวแปรเป็นค่า "ไม่ใช่ null" ครั้งแรกในรายการของสิ่งต่าง ๆ หลายภาษารองรับสิ่งนี้เช่น: ค#: String myStr = string1 ?? string2 ?? "default"; JavaScript: var myStr = string1 || string2 || "default"; ... ฯลฯ ฉันแค่อยากรู้ว่าสิ่งนี้สามารถทำได้ใน Bash เพื่อตั้งค่าตัวแปรหรือไม่? หลอก: MY_STR=$ENV{VAR_NAME}??$ANOTHER_VAR??"default";
20 bash  shell  variable 

3
ฉันสามารถค้นหาทุบตีประวัติผู้ใช้ทั้งหมดบนเซิร์ฟเวอร์ได้หรือไม่?
ฉันต้องการเห็นคำสั่ง bash ทั้งหมดที่รันบนเซิร์ฟเวอร์ Linux ในหลายบัญชีผู้ใช้ การกระจายเฉพาะที่ฉันใช้คือ CentOS 5.7 มีวิธีในการค้นหาไฟล์. bash_history ทั่วโลกบนเซิร์ฟเวอร์หรือเป็นกระบวนการที่ใช้ในบ้านมากขึ้นlocate | cat | grepหรือไม่ (ฉันสั่นเพียงแค่พิมพ์ออกมา)

3
จดชวเลขเพื่อป้อนเนื้อหาของไฟล์หลาย ๆ ไฟล์ไปยัง stdin ของสคริปต์
สมมติว่าฉันมีสคริปต์ที่เรียกscriptว่าอ่านstdinและแยกผลลัพธ์ไปที่หน้าจอ ถ้าฉันต้องการที่จะเลี้ยงเนื้อหาของไฟล์เดียวฉันจะพิมพ์: $ ./script < file1.txt แต่ถ้าฉันต้องการป้อนเนื้อหาของไฟล์หลาย ๆ ไฟล์ลงในสคริปต์ด้วยวิธีเดียวกันมันจะเป็นไปได้หรือไม่? สิ่งที่ดีที่สุดที่ฉันเคยได้รับคือ: cat file1.txt file2.txt > combined.txt && ./script < combined.txt ซึ่งใช้สองคำสั่งและสร้างไฟล์ชั่วคราว มีวิธีการทำสิ่งเดียวกัน แต่ข้ามการสร้างไฟล์รวม?

6
เชลล์สคริปต์เพื่อสร้างไฟล์หากไม่มีอยู่?
ฉันจำเป็นต้องสร้างเชลล์สคริปต์ที่ตรวจสอบการมีอยู่ของไฟล์และหากไม่มีอยู่ให้สร้างและย้ายไปยังคำสั่งถัดไปหรือเพียงแค่ย้ายไปยังคำสั่งถัดไป สิ่งที่ฉันไม่ได้ทำ #!/bin/bash # Check for the file that gets created when the script successfully finishes. if [! -f /Scripts/file.txt] then : # Do nothing. Go to the next step? else mkdir /Scripts # file.txt will come at the end of the script fi # Next command (macOS preference setting) …
20 bash  shell-script  osx 

4
หยุดสคริปต์ bash ชั่วคราวจนกว่าคำสั่งก่อนหน้าจะเสร็จสิ้น
ฉันมีสคริปต์ทุบตีที่มีลักษณะดังนี้: ##script #!/bin/bash rm data* rm logfile* for i in {1..30} do ## append a & if you want to run it parallel; nohup Rscript --vanilla main.R 10 100 $i &> logfile"$i" & done ฉันต้องการสร้างห่วงสำหรับลูปหลังจากอันแรกเพื่อดำเนินการต่อไปอีก 30 ตัวอย่างเช่น ##script #!/bin/bash rm data* rm logfile* for i in {1..30} do ## append …
20 bash 

3
การเปรียบเทียบจำนวนเต็ม: การแสดงออกทางคณิตศาสตร์หรือการแสดงออกตามเงื่อนไข
ใน Bash คุณสามารถเปรียบเทียบจำนวนเต็มสองจำนวนได้โดยใช้นิพจน์เงื่อนไข arg1 OP arg2 OP เป็นหนึ่ง-eq, -ne, -lt, -le, หรือ-gt -geตัวดำเนินการเลขคณิตเหล่านี้จะคืนค่าจริงถ้าarg1เท่ากับ, ไม่เท่ากับ, น้อยกว่า, น้อยกว่าหรือเท่ากับ, มากกว่าหรือมากกว่าหรือเท่ากับarg2ตามลำดับ Arg1และarg2อาจเป็นจำนวนเต็มบวกหรือลบ หรือการแสดงออกทางคณิตศาสตร์: <= >= < > การเปรียบเทียบ == != ความเสมอภาคและความไม่เท่าเทียม ทำไมเรามีสองวิธีที่แตกต่างกันในการเปรียบเทียบจำนวนเต็มสองตัว? จะใช้เมื่อใด ตัวอย่างเช่น[[ 3 -lt 2 ]]ใช้นิพจน์เงื่อนไขและ(( 3 < 2 ))ใช้นิพจน์ทางคณิตศาสตร์ ทั้งคู่คืนค่า 0 เมื่อการเปรียบเทียบเป็นจริง เมื่อเปรียบเทียบจำนวนเต็มสองจำนวนทั้งสองวิธีสามารถใช้แทนกันได้หรือไม่ ถ้าใช่ทำไม Bash มีสองวิธีมากกว่าหนึ่ง?

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