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

Bash เป็นเชลล์ฟรีสำหรับระบบปฏิบัติการยูนิกซ์จากโครงการ GNU

5
สคริปต์ PHP ไม่สามารถรันสคริปต์ทุบตีได้ sh: ปฏิเสธการอนุญาต
ฉันพยายามเรียกใช้สคริปต์. sh จาก PHP แต่ไม่ได้ดำเนินการ ฉันตรวจสอบบันทึกข้อผิดพลาดและฉันได้รับข้อผิดพลาด 'sh: การอนุญาตที่ถูกปฏิเสธ' ฉันตรวจสอบภายใต้ php ผู้ใช้ที่กำลังทำงานและจะทำภายใต้ผู้ใช้ apache ฉันพยายามเปลี่ยนความเป็นเจ้าของ. sh เป็นผู้ใช้ apache แต่ไม่มีผลลัพธ์ ฉันคิดว่าตอนแรกเป็นเพราะสคริปต์อยู่นอก www / dir อย่างไรก็ตามแม้ว่าฉันจะวางสคริปต์ในไดเรกทอรีเดียวกันข้อผิดพลาดก็ยังคงได้รับ มีวิธีแก้ไขปัญหาอื่นนอกเหนือจากการเพิ่มผู้ใช้ apache ในรายการ SUDOers หรือไม่? สคริปต์ sh ทำงานได้ดีถ้าฉันเรียกใช้จาก putty โดยใช้คำสั่ง 'php filename.php'
14 bash  permissions  script  php 

1
วิธีการ 'source' เชลล์สคริปต์โดยใช้ bash จาก zsh
ฉันใช้ zsh และชอบมันมาก แต่ทำงานได้มากกับแหล่ง Android ที่มีสคริปต์การคอมไพล์ที่ต้องการประเมินค่า bash อย่างถูกต้อง สคริปต์เหล่านี้จำเป็นต้องมีแหล่งที่มาก่อนการรวบรวมและกำหนดตัวแปรสภาพแวดล้อมและฟังก์ชั่นเชลล์ที่ใช้ในระหว่างการรวบรวม Zsh ไม่สามารถหาแหล่งไฟล์เหล่านี้ได้และหากฉันพยายามที่จะออกemulate bashเชลล์ของฉันกลายเป็นฟังก์ชั่นที่ไม่ทำงานพร้อมข้อผิดพลาดมากมายทุกครั้งที่ฉันกด Space (ฉันใช้ oh-my-zsh อาจเป็นสาเหตุได้หรือไม่): url-quote-magic:24: bad pattern: ( ):/(|/localhost)/* มีวิธีใดที่ฉันจะไม่เปลี่ยนเป็น bash เพื่อประเมินไฟล์เหล่านี้หรือเรียกใช้งาน bash instance และนำเข้าตัวแปร / ฟังก์ชั่นสภาพแวดล้อมใหม่ที่กำหนดไว้ในระหว่างการจัดหาเข้าสู่เซสชัน zsh ของฉัน หรือฉันถูกกำหนดให้เปลี่ยนเป็น bash ทุกครั้งที่ฉันต้องทำงานกับ Android? แก้ไข : พบคำตอบสำหรับคำถามของฉันเอง ดูเหมือนว่าการจัดหาไฟล์โดยใช้เชลล์ตัวอื่นจะไม่สามารถทำได้ แต่ในกรณีที่ไฟล์มาโคร Android ล้มเหลวหน้านี้จะนำการแก้ไข: http://nilvec.com/building-cyanogen-from-source/ โดยพื้นฐานแล้วการตั้งค่าอย่างง่ายunsetopt nomatchจะขอให้ zsh หยุดการบ่นเกี่ยวกับ wildcard ที่ไม่ตรงกันซึ่งเพียงพอที่จะทำให้สคริปต์ดำเนินการให้เสร็จสิ้น ยังคงมีข้อผิดพลาดอีกข้อหนึ่งเกี่ยวกับการใช้completeคำสั่ง …
14 bash  zsh  oh-my-zsh 

2
Escape slash ไปข้างหน้าอย่างถูกต้องใน bash script เพื่อใช้กับ sed
ฉันกำลังพยายามกำหนดขนาดของไฟล์ที่จะถูกคัดลอกใหม่เมื่อทำการซิงค์สองโฟลเดอร์โดยการเรียกใช้ rsync ในโหมดแห้งแล้วรวมขนาดของไฟล์ที่แสดงในเอาต์พุตของ rsync ขณะนี้ฉันติดอยู่ที่คำนำหน้าไฟล์โดยโฟลเดอร์แม่ของพวกเขา ฉันค้นพบวิธีนำหน้าบรรทัดโดยใช้ sed และวิธีหลบเลี่ยงการใช้ sed แต่ฉันมีปัญหาในการรวมสองรายการนี้ นี่เป็นวิธีที่ฉันได้รับ: source="/my/source/folder/" target="/my/target/folder/" escaped=`echo "$source" | sed -e 's/[\/&]/\\//g'` du `rsync -ahnv $source $target | tail -n +2 | head -n -3 | sed "s/^/$escaped/"` | awk '{i+=$1} END {print i}' นี่คือผลลัพธ์ที่ฉันได้รับจาก bash -x myscript.sh + source=/my/source/folder/ + target=/my/target/folder ++ …

3
เมื่อทำการโคลนนิ่งโดยใช้ git bash บน Windows จะได้รับ Fatal: UriFormatException
ฉันใช้ทุบตีคอมไพล์ $ git --version git version 2.9.3.windows.1 บน Windows 7 เมื่อฉันลอกแบบ repo ฉันเห็น: $ git clone https://UserName@bitbucket.mycompany.org:5555/scm/repofolder/repo.git Cloning into 'repo'... Fatal: UriFormatException encountered. Fatal: UriFormatException encountered. Fatal: UriFormatException encountered. Fatal: UriFormatException encountered. remote: Counting objects: 2666, done. remote: Compressing objects: 100% (1426/1426), done. remote: Total 2666 (delta 1378), reused 2112 …
14 windows-7  bash  git  clone 


2
Bash: แทนที่คำทั้งหมดที่เกิดขึ้นในคำสั่งสุดท้าย
เกือบจะเข้าใจผิดฉันคิดว่าคุณสามารถทำสิ่งที่ชอบ: $ cp foo.data bar1.data $ ^bar1^bar2 และที่ทำงานคำสั่งเดียวกันกับการแทนbar2.data bar1.dataทีนี้ถ้าฉันมีคำเป้าหมายหลายครั้งล่ะ ตัวอย่างเช่น: $ cp foo.data bar.data $ ^data^index มันจะแทนที่dataส่วนขยายแรกเท่านั้น ฉันจะรับมันเพื่อแทนที่ทั้งสองได้อย่างไร

5
ฉันจะคัดลอกไดเรกทอรี (ใหญ่) ไปยังอีกการเปลี่ยนแปลงเฉพาะไฟล์ที่แตกต่างได้อย่างไร
ฉันมีไดเรกทอรี a และไดเรกทอรี b พวกมันใหญ่ b เกือบจะเหมือนกันกับ "เกือบ" หมายความว่า 4-5 ไฟล์ต่างกันและฉันไม่รู้ว่ามันคืออะไร ฉันต้องการคัดลอก b ผ่าน a แต่เฉพาะไฟล์ที่แตกต่าง ฉันกำลังทุบตี (ไม่ฉันไม่สามารถลบ a และแทนที่ด้วย b ได้เนื่องจาก 1) a เป็นเวอร์ชันที่ควบคุม 2) สำเนาแบบเต็ม (หรือ mv) จะใช้เวลามากเกินไป ฉันต้องการคัดลอกเฉพาะไฟล์ที่แตกต่างกัน)
14 linux  bash  cp  file-transfer 

4
Double root folder เทียบกับ single root folder
บนกล่อง Linux ของฉันในทุบตีฉันมีสิทธิ์เข้าถึงโฟลเดอร์ "double root" ที่แสดงโดยเครื่องหมายทับสองตัว: tomas:~ $ cd / tomas:/ $ ls bin/ cdrom@ ... tomas:/ $ cd // tomas:// $ ls bin/ cdrom@ ... เนื้อหาของโฟลเดอร์และโฟลเดอร์ย่อยนั้นเหมือนกับ root "ปกติ" ของสแลช เครื่องหมายทับสองครั้งไม่หายไปเมื่อฉันเข้าถึงโฟลเดอร์ย่อย Annomaly ไม่ได้ทำซ้ำตัวเองด้วยสามทับหรือมากกว่า นี่เป็นคำพ้องความหมายง่ายๆสำหรับรูท: tomas:// $ cd home/tomas tomas://home/tomas $ cd /// tomas:/ $ cd //// tomas:/ $ มันคือสถานที่แบบไหน? มันเป็นข้อบกพร่องหรือไม่? …
14 linux  bash 

9
คัดลอกไฟล์และโฟลเดอร์ทั้งหมดยกเว้นไฟล์และโฟลเดอร์การโค่นล้มใน OS X
ฉันกำลังพยายามคัดลอกไฟล์และโฟลเดอร์ทั้งหมดจากไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่ง แต่ไม่รวมไฟล์บางไฟล์ โดยเฉพาะฉันต้องการยกเว้นไฟล์และโฟลเดอร์การโค่นล้ม อย่างไรก็ตามฉันต้องการคำตอบทั่วไปที่กระชับ ฉันคิดว่าฉันจะพบว่าจำเป็นต้องยกเว้นไฟล์หลายประเภทในอนาคตอันใกล้ ตัวอย่างเช่นฉันอาจต้องการยกเว้น. svn, * .bak และ * .prj นี่คือสิ่งที่ฉันรวบรวมไว้ด้วย แต่ก็ไม่ได้ผลสำหรับฉัน ส่วนแรกพบกับผลงาน แต่ฉันทำอะไรผิดพลาดกับxargsและซีพี ฉันพยายามCP-Rที่มีและไม่มี นอกจากนี้ฉันใช้ OS X และดูเหมือนจะมีxargsรุ่นที่มีคุณลักษณะน้อยกว่าระบบ linux find ./sourcedirectory -not \( -name .svn -a -prune \) | xargs -IFILES cp -R FILES ./destinationdirectory

5
แผนที่“ untar” เพื่อ tar xvfz?
ฉันจะแมป 'untar' เป็นคำสั่งกับ 'tar -xvfz' ได้อย่างไร ขออภัยฉันมักจะลืมข้อโต้แย้งที่จำเป็นในการ 'tar' สำหรับการดำเนินการนี้
14 linux  unix  bash  archiving  tar 

3
ฉันจะเปิดใช้งาน bash script จาก Finder ใน OS X ได้อย่างไร
ฉันจะเปิดใช้งาน bash script จาก Finder ใน OS X ได้อย่างไร ฉันทำงานที่ CLI แต่สคริปต์เล็ก ๆ ของฉันไม่ได้เป็นที่รักของเพื่อนร่วมงานที่ผูกกับ GUI ของฉัน

3
ปล่อยให้สคริปต์ทุบตีทำงานใน terminal ระยะไกลในขณะที่ไม่ได้เข้าสู่ระบบ?
ฉันมีสคริปต์ทุบตีที่ใช้เวลาหลายชั่วโมงในการทำงาน ในขณะที่ทำงานฉันต้องการทำสิ่งอื่นซึ่งอาจเกี่ยวข้องกับการออกจากระบบหรือตัดการเชื่อมต่อจากอินเทอร์เน็ต (สคริปต์ของฉันรันการทดสอบเครือข่ายในคอมพิวเตอร์หลายเครื่อง) ฉันเข้าใจว่ามีคำสั่งที่อนุญาตให้ฉันรันการทดสอบจากรีโมตเทอร์มินัลและล็อกเอาต์ของเทอร์มินัลขณะที่รัน ไม่มีใครรู้ว่าคำสั่งนี้คืออะไร?

1
ทำไม 'ผูก' และ `อินพุท 'จึงทำงานต่างกัน?
~/.inputrcฉันพยายามที่จะทำสิ่งที่ถูกต้องและนำไปผูกที่สำคัญของฉันเป็น อย่างไรก็ตามปรากฎว่าฉันต้องเปลี่ยน bind '"\e\C-j":"\e[1~quiet \e[4~\n"' เข้าไป "\e\C-j": "\eOHquiet \eOF\n" ตอนนี้\eOH(nav-block-pos1 ถูกผูกไว้กับbeginning-of-line) และ\eOF(nav-block-end ถูกผูกไว้กับend-of-line) กำลังผูกตัวเองในการกำหนดค่าของฉันซึ่งฉันอาจไม่สามารถพึ่งพาได้เสมอ ดังนั้นคำถามหลักคือเหตุผลที่ไม่ผูกพันกับ Num-บล็อก pos1 ( \e[1~) และจำนวนบล็อกสิ้น ( \e[4~) ทำงานด้วยbindแต่ไม่ได้อยู่ในของฉัน~/.inputrc? แก้ไข: สิ่งทั้งหมดนั้นซับซ้อนมากขึ้นตอนนี้ฉันรู้แล้วว่ามัน\e\C-jใช้ได้กับ Gnome Terminial เท่านั้น (หรืออาจจะเป็น xterm ก็ได้เช่นกันใครจะรู้ ... ) สำหรับ TTY ของฉันมันจะต้องมี "\e\C-m": "\e[1~_quiet \e[4~\n" ดังนั้น VT ต่าง ๆ มีการใช้งานที่แตกต่างกันของวิธีตีความคีย์หรืออะไร

1
การแทนที่ฟังก์ชันที่ผู้ใช้กำหนดด้วยชื่อเดียวกันกับคำสั่งระบบ
ฟังก์ชันนี้มีอยู่ในหนึ่งในผู้ใช้ของฉัน ~ / .bashrc: function rm() { ls $* echo "rm?" read ans if [ "$ans" == 'y' ]; then /bin/rm $* fi } ในสคริปต์ ksh ของฉันที่ผู้ใช้จำเป็นต้องเรียกใช้ฉันมีบรรทัดดังนี้: [[ "$KEEP" = "" ]] && \rm $FILE ในขณะที่แบ็กสแลชจะหนีนามแฝงที่ผู้ใช้กำหนดเองมันจะไม่หยุดสคริปต์จากการเรียกใช้ฟังก์ชันที่ผู้ใช้กำหนดด้วยชื่อเดียวกัน ด้วยเหตุนี้ฟังก์ชั่น rm () ของผู้ใช้ของฉันจึงถูกเรียกใช้แทนฟังก์ชั่นระบบ ฉันพบคำถาม & การตอบคำถาม superuser นี้แต่การแก้ปัญหาจะใช้กับฟังก์ชั่นบิวอินเท่านั้นไม่ใช่คำสั่งระบบ อะไรที่ดีที่สุดในการบังคับใช้คำสั่ง rm จากการถูกเรียกไม่ใช่นามแฝงหรือฟังก์ชัน ฉันต้องระบุพา ธ …
14 bash  alias  bashrc  ksh 

7
ล้าง stdin ก่อนอ่าน
ฉันมีสคริปต์ทุบตีต่อไปนี้: # do some time consuming task here read -p "Give me some input: " input ในขณะที่คุณอาจเดาได้ว่าหากผู้ใช้กดปุ่มสุ่มบางอย่างระหว่าง "งานที่ต้องใช้เวลามาก" ข้อมูลที่ไม่ต้องการจะถูกนำมาพิจารณาด้วยเช่นกัน ฉันจะล้างstdin(หรืออย่างน้อยไม่สนใจมัน) ก่อนที่ฉันจะออกคำสั่งอ่านได้อย่างไร
14 linux  bash  shell  stdin 

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