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

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

2
ดำเนินการคอมไพล์การคอมมิตก่อนการคอมเม้นท์หากไฟล์ในไดเรกทอรีบางตัวถูกแก้ไข
ฉันกำลังพยายามสร้างสคริปต์ทุบตีสำหรับขอคอมมิตการคอมไพล์ เมื่อใดก็ตามที่มีการคอมมิชชันฉันต้องการตรวจสอบว่าไฟล์ในไดเรกทอรีหนึ่งเป็นส่วนหนึ่งของไฟล์ staged หรือไม่และหากเป็นเช่นนั้นให้เรียกใช้คำสั่ง (งาน Grunt) จนถึงตอนนี้ฉันมีทุกอย่างทำงานยกเว้นการทำงานเฉพาะในกรณีที่มีการแก้ไขไฟล์บางอย่าง ฉันกำลังพยายามทำให้สิ่งนี้ทำงาน: SRC_PATTERN="site/assets/js/" if [ grep --quiet $SRC_PATTERN `git diff --cached --name-only` ] then echo "none" exit 0 fi นี่เป็นข้อผิดพลาดที่ทำให้ฉันมีข้อผิดพลาด
11 bash  git 

7
วิธี echo คำสั่งในสคริปต์เปลือก bash แต่ไม่รันพวกเขา?
มีวิธีการรันเชลล์สคริปต์ด้วยการสะท้อนคำสั่งแต่ไม่มีการรันคำสั่งเหล่านั้นหรือไม่? สมมติว่าฉันมีสคริปต์ลบไฟล์ที่มีชื่อถูกเก็บไว้ในตัวแปร: #!/bin/bash set -v FN="filename" rm -f ${FN} การเพิ่มset -vจะสะท้อนคำสั่งต่อไปนี้ก่อนที่จะดำเนินการ: $ ./scr.sh FN="filename" rm -f ${FN} ตอนนี้ฉันต้องการที่จะเห็นการไหลของสคริปต์นี้โดยไม่ต้องลบไฟล์จริง IOW ฉันต้องการป้องกันผลกระทบใด ๆ ต่อสภาพแวดล้อมภายนอกและระบบไฟล์ เป็นไปได้ไหม ฉันสามารถห่อคำสั่งทั้งหมดด้วยechoคำสั่ง แต่มันเหนื่อยสำหรับสคริปต์ยาว

1
& หมายถึงอะไรเมื่อใช้ในตอนท้ายของสคริปต์ทุบตี?
ฉันใช้สคริปต์ทุบตีสำหรับการเปิดตัวและเพิ่ม&ไปยังจุดสิ้นสุดเช่นนี้ ./bin/Startup.sh par1 & อะไร&สัญลักษณ์ในที่สุดหมายความว่าอย่างไร ขอบคุณ
11 bash  script 


3
rsync บ่นเกี่ยวกับ `trailing ที่หายไป - '' ในสคริปต์ Bash
กำลังพยายาม rsync ไฟล์จากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่นในเซสชันหน้าจอ แทนที่จะเขียนคำสั่งแบบยาวทุกครั้งฉันตัดสินใจใส่ Bash script อย่างไรก็ตามเมื่อฉันเรียกใช้ฉันได้รับ Missing trailing-" in remote-shell command. ความผิดพลาด สงสัยว่าเกิดอะไรขึ้นในสคริปต์ root@127.0.0.1:~# /raid/data/module/bin/rbk.sh Movies /raid/data/Movies rsync_target/ /raid/data/module/bin/screen -S Movies /opt/bin/rsync --rsh="ssh -p 10022 -c des"\ --rsync-path="/opt/bin/rsync" --inplace --progress -a -vv \ /raid/data/Movies sys@192.168.1.15:/raid/data/rsync_target/ Missing trailing-" in remote-shell command. rsync error: syntax or usage error (code 1) at …
10 bash  ssh  rsync 


4
เปิดไฟล์กำหนดค่าที่ซ่อนอยู่โดยไม่ใช้ Terminal
ฉันทำการเปลี่ยนแปลงบางอย่างกับ.profileแอพ Terminal ที่เสียหาย ฉันสามารถเปิดเทอร์มินัลได้ แต่ไม่ได้รับพรอมต์อีกต่อไป ฉันไม่สามารถแสดงไฟล์ที่ซ่อนอยู่เพื่อลบ.profileหรือ.bashrcไฟล์ ฉันจะแสดงไฟล์ที่ซ่อนโดยไม่ใช้เทอร์มินัลได้อย่างไร

4
ดูไฟล์ทั้งหมดในไดเรกทอรีของเว็บไซต์หรือไม่
เป็นไปได้หรือไม่ที่จะแสดงรายการไฟล์และไดเรกทอรีทั้งหมดในไดเรกทอรีเว็บไซต์ที่ระบุจากเชลล์ Linux สิ่งที่คล้ายกับ: ls -l some_directory แต่แทนที่จะ some_directory ls -l http://www.some_site.com/some_directory/ก็จะ เห็นได้ชัดว่าภายหลังจะไม่ทำงาน
10 linux  bash  shell 

1
Alt + Shift + {คืออะไร
ทดสอบสิ่งนี้บน CentOS และ Ubuntu หากคุณอยู่ในไดเรกทอรีที่มีไฟล์มากมาย $ ls day1.tar.gz day2.tar.gz day3.tar.gz day4.tar.gz day5.tar.gz day6.tar.gz day7.tar.gz day8.tar.gz day9.tar.gz day10.tar.gz และคุณกดAlt+Shift+{มันจะทำให้ชื่อไฟล์ทุกชื่อเสร็จสมบูรณ์ <Alt+Shift+{> สำเร็จเป็น: day{1{0.tar.gz,.tar.gz},2.tar.gz,3.tar.gz,4.tar.gz,5.tar.gz,6.tar.gz,7.tar.gz,8.tar.gz,9.tar.gz} และ day1<Alt+Shift+{> สำเร็จเป็น: day1{0.tar.gz,.tar.gz} คำถาม : นี่คืออะไร? สิ่งนี้เรียกว่าอะไร? มันมีประโยชน์ที่ไหน? ฉันจะกำหนดค่าได้อย่างไร ฉันสามารถทำสิ่งนี้กับไฟล์ที่ลงท้ายด้วยซับสตริงที่ไม่ได้ขึ้นต้นด้วยอันเดียวได้หรือไม่?

4
ทดแทนแบ็กสแลชสำหรับฟอร์เวิร์ดสแลชในคำสั่งสุดท้าย
ฉันได้คัดลอกคำสั่งcd C:\foo\bar\จาก PowerShell ไปยัง Cygwin และคาดหวังอย่างเต็มที่ว่ามันจะทำงาน ตอนนี้ฉันพยายามเรียกใช้การทดแทนเพื่อแทนที่ทั้งหมด\ด้วย/: $ !!:gs/\\/\/ bash: :gs/\\/\/: substitution failed ไม่แน่ใจว่าทำไมฉันถึงได้รับการทดแทนล้มเหลว ฉันก็ลอง: $ !!:gs/\\/q เพียงเพื่อดูว่าแทนที่เป็นปัญหา มันไม่ใช่. ตอนนี้ฉันอยากรู้อยากเห็น! ทำไมฉันถึงได้รับ "การทดแทนล้มเหลว"?
10 bash  cygwin  regex 

3
อะไรทำให้เกิดการใช้ CPU ที่ผิดปกติของ htop ใน Bash บน Windows
เมื่อฉันทำงานhtopใน Bash บน Windows ฉันจะได้ผลลัพธ์ต่อไปนี้เกี่ยวกับการใช้งาน CPU: ในขณะที่ตัวจัดการงานของ Windows แสดงการใช้งานประมาณ 1% จากที่นี่เป็นที่ชัดเจนว่าพื้นที่สีแดงของ htop ควรจะหมายถึงการใช้ CPU โดยเคอร์เนลเธรดและสีเขียวสำหรับเธรดลำดับความสำคัญปกติ ในกรณีของ Bash บน Windows ปัจจุบันดูเหมือนว่าสีเขียวคือการใช้ CPU จริง แต่สีแดงหมายถึงอะไร อาจเป็นเพราะขีด จำกัด สูงสุดของสิ่งที่ระบบย่อย Windows-Linux สามารถใช้ได้หรือเป็นเพียงข้อผิดพลาดในการแสดงผลซึ่งในกรณีนี้ทำไมมันถึงแสดงการใช้งาน 50% สำหรับแต่ละ CPU / hyperthread โดยเฉพาะ?

2
ไม่สามารถซิงค์กับไดรฟ์ข้อมูลอื่นด้วย Git Bash
ผมใช้ทุบตีคอมไพล์บนเครื่อง Windows: รุ่น 2.7.2 (รุ่น 32 บิต) ของ Git สำหรับ Windows ที่สร้างขึ้นบน 2016/02/23 ใช้ได้จากhttps://git-scm.com ภายในทุบตีฉันสามารถคัดลอกไดเรกทอรีจาก/c/ไปยัง/e/(ไดรฟ์หัวแม่มือ USB) rsyncแต่ผมได้รับข้อผิดพลาดเมื่อฉันพยายามที่จะใช้ ฉันพยายามเพิ่มcygdriveชื่อไดเรกทอรี แต่มันไม่ได้ผล ลองเพิ่ม-e(เพื่อดูว่าจะเกิดอะไรขึ้น) ที่ไม่ทำงานเช่นกัน ฉันพูดถึงว่าคำสั่ง copy ใช้งานได้เพราะมันแปลกที่ฉันเห็นไดรฟ์ทางเดียว แต่ไม่เห็นวิธีอื่น สำเนาที่ประสบความสำเร็จ: ไม่สำเร็จrsync: ขอบคุณและโปรดแสดงความคิดเห็นถ้าคุณ downvote เพื่อช่วยฉันทำคำถามให้ดีขึ้น พื้นหลังและการวิจัยเพิ่มเติม: ข้อผิดพลาด 255 ในบางจุดฉันเชื่อว่าฉันได้รับข้อผิดพลาดเดียวกันที่แน่นอน (255) ซึ่งทำให้ฉันไปที่โพสต์นี้ อย่างไรก็ตามการแก้ปัญหาที่นี่มีความเกี่ยวข้องกับcygwinไม่คอมไพล์ทุบตี /programming/16969119/dotcloud-push-on-cygwin-fails-with-rsync-error-unexplained-error-code-255 คนจรจัดและ rsync มีจำนวนมากของ disucssion ที่ดีเกี่ยวกับกลไกของการเป็นโดยเฉพาะอย่างยิ่งจากrsync mitchellhอย่างไรก็ตามฉันไม่แน่ใจว่ามีส่วนประกอบใดบ้างที่อ้างอิงอยู่ในการติดตั้งของฉันหรือวิธีการบอก ฉันถามคำถามแยกต่างหากในไซต์นี้เกี่ยวกับปัญหานั้น แหล่งที่มา: https://github.com/mitchellh/vagrant/issues/3236 รายการไดรฟ์ในสภาพแวดล้อม Linux จำลอง …
10 windows  bash  rsync  mingw 

2
ทำไมสคริปต์ของฉันไม่นำหน้าช่องว่างในคอนโซลเอาต์พุต
ฉันมีสคริปต์ต่อไปนี้: #!/bin/bash function consoleWriteLine() { echo $* >&2 } consoleWriteLine " indented by 4 spaces" เมื่อฉันรันมันฉันจะได้ผลลัพธ์ต่อไปนี้: $ ./test.sh indented by 4 spaces ช่องว่าง 4 ช่องของฉันไปไหน และฉันจะนำพวกเขากลับมาได้อย่างไร
10 bash 

2
xargs - แทนที่ / -I สำหรับอาร์กิวเมนต์เดียว
ฉันพยายามใช้ xargs เพื่อรันคำสั่งสำหรับแต่ละอาร์กิวเมนต์ที่ให้ แต่น่าเสียดายที่แฟล็ก --replace / -I ดูเหมือนจะไม่ทำงานอย่างถูกต้องเมื่อเชื่อมต่อกับ -n ดูเหมือนว่า {} จะขยายไปสู่รายการอาร์กิวเมนต์ทั้งหมดที่อ่านจาก stdin โดยไม่คำนึงถึงตัวเลือก -n น่าเสียดายที่ตัวอย่างทั้งหมดบนเว็บดูเหมือนจะเป็นคำสั่ง (mv, cp, rm) ซึ่งจะใช้อาร์กิวเมนต์หลายตัวที่ {} ถูกขยาย ตัวอย่างเช่นเมื่อทำงาน: echo a b c d | xargs -n 1 -I {} echo derp {} ผลลัพธ์คือ: derp a b c d แต่ฉันคาดว่า: derp a derp b derp c …

1
วิธีการปิดการใช้งานบัฟเฟอร์สำรองในหน้าจอ GNU ตัวเอง แต่ไม่เป็นกลุ่มสำหรับน้อยกว่าภายใน?
สิ่งที่ฉันต้องการทำให้สำเร็จคือพฤติกรรมการเลื่อนล้อเลื่อนของเมาส์ที่ฉันคุ้นเคยในเซสชันปกติ ในล้อเมาส์พร้อมท์ bash ควรเลื่อนเอาต์พุตเทอร์มินัลของฉันและภายใน / vim น้อยลง - บัฟเฟอร์สำรองที่ใช้เพื่อไม่ให้มีสิ่งใดเหลืออยู่จากข้อความที่แสดงภายใน ถ้าฉันปิดการใช้งานความสามารถบัฟเฟอร์สำรองใน. screenrc เช่นนี้ termcapinfo xterm ti@:te@ จากนั้นจะถูกปิดใช้งานสำหรับกลุ่ม / น้อยและการเลื่อนล้อเลื่อนของเมาส์จะไม่ได้รับการจัดการโดยพวกเขา การเปิดใช้งานการจำลองบัฟเฟอร์สำรองภายในของหน้าจอเช่นนี้: altscreen on ช่วยในการกู้คืน bash output หลังจากออกน้อย / เป็นกลุ่ม ไม่ได้อยู่ในล้อเลื่อนของเมาส์เลื่อนข้างใน ดังนั้นมีตัวเลือกหน้าจอใด ๆ บางทีในตัวแยกหน้าจอ / ตัวเลือกที่ปิดใช้งานการใช้บัฟเฟอร์สำรองโดยหน้าจอตัวเอง?
10 bash  vim  gnu-screen  xterm 

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