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

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

5
วิธีคัดลอกไฟล์ (เริ่มต้นด้วยจุด) ที่ซ่อนอยู่และไดเรกทอรีย่อยใน linux?
วิธีคัดลอกไฟล์ที่ซ่อนอยู่และไดเรกทอรีย่อยที่ซ่อนอยู่ (ไฟล์ที่ขึ้นต้นด้วยจุด) ในโฟลเดอร์ A ไปยังโฟลเดอร์ B เช่นถ้าฉันมีโครงสร้างนี้: A/a A/b A/.a A/.b/ A/.b/somefile A/.b/.c ฉันต้องการคัดลอกไปที่ B เพียงไฟล์ที่ซ่อนและไดเรกทอรีย่อยที่ซ่อนอยู่ใน A: B/.a B/.b/ B/.b/somefile B/.b/.c ผมได้พยายามแล้วคำสั่งนี้: cp A/.* Bจากคำถาม superuser อื่น ๆ อย่างไรก็ตามมันไม่ได้คัดลอกไดเรกทอรีย่อย ลองcp -r A/.* Bแล้ว แต่มันก็อปปี้.ดังนั้นฉันจึงลงท้ายด้วยสำเนาที่แน่นอนของ A (รวมถึงไฟล์ปกติ) ความช่วยเหลือใด ๆ ที่ชื่นชม

4
ฉันจะทดสอบได้อย่างไรว่าตัวแปรมีหลายบรรทัดที่ไม่ใช่ช่องว่างในทุบตี?
ว่าฉันมีสองตัวแปรในทุบตี: MULTILINE="I have more than one line" SINGLE_LINE="I only have one line " ฉันต้องการตรวจสอบเมื่อตัวแปรมีมากกว่าหนึ่งบรรทัดของข้อความจริงโดยไม่คำนึงถึงอักขระบรรทัดใหม่ที่ต่อท้ายเพิ่มเติม ดังนั้นนี่คือ: if [ some test on "$MULTILINE" ]; then echo 'yes'; else echo 'no'; fi จะพิมพ์yesและสิ่งนี้: if [ some test on "$SINGLE_LINE" ]; then echo 'yes'; else echo 'no'; fi noจะพิมพ์ สำหรับกรณีเฉพาะของฉันฉันไม่คิดว่าฉันต้องกังวลเกี่ยวกับการนำบรรทัดว่างเปล่า แต่จะไม่เจ็บที่จะรู้วิธีการทำเช่นนั้น ฉันจะทำสิ่งนี้ได้อย่างไร
10 bash 


1
วิธีการแปลงอักขระ ASCII เป็นจำนวนเต็มในทุบตี?
ฉันแยกวิเคราะห์เอาต์พุต ntpq เพื่อส่งเนื้อหาไปยังฐานข้อมูลของเราผ่านทางยูทิลิตี้คอนโซล องค์ประกอบแรกคือสตริงย่อยหนึ่งตัวที่มีสถานะของรีโมต มันอาจเป็น "*", "+", "o", "#" ฯลฯ ฉันควรใส่ตัวเลขลงในฐานข้อมูลเพื่อให้สามารถจัดเก็บได้ง่ายโดยวิธีการจัดเก็บ แต่ฉันไม่มีความคิด เพื่อแปลงตัวละครให้เป็นตัวแทน ASCII ในทุบตี
10 bash 

3
ffmpeg / avconv บังคับให้สเกลเอาต์พุตถูกหารด้วย 2
ฉันบันทึกเดสก์ท็อปของฉันด้วย avconv (aka ffmpeg) แล้วปรับขนาดเป็น 720p ฉันเพิ่งเพิ่มสคริปต์ของฉันเพื่อให้พวกเขาสามารถเลือกหน้าต่างที่มี xwininfo และมันจะบันทึกหน้าต่างนั้นโดยเฉพาะ อย่างไรก็ตามหากรูปแบบผลลัพธ์ไม่สามารถหารด้วย 2 ตัวเข้ารหัสจะแยกออกและฉันไม่ได้รับวิดีโอ มีวิธีแก้ไขปัญหานี้ภายใน ffmpeg หรือไม่ดังนั้นฉันไม่ต้องทำคณิตศาสตร์ด้วยตนเองใน bash เพื่อตั้งค่ามาตราส่วน เป็นไปได้ไหมที่จะมีการลบตัวกรองมาตราส่วน / เพิ่มความกว้าง / ความสูงถ้ามันไม่เท่ากัน? (รอบ?) เป็นไปได้หรือไม่ที่จะใช้ตัวกรองอื่นหลังจากสเกลดั้งเดิมที่สามารถทำสิ่งนี้ได้ (สิ่งนี้จะวนวิดีโอที่มีขนาดอินพุตไม่สม่ำเสมอและไม่มีการปรับสเกล) #!/bin/bash avconv \ -f x11grab -r $fps -s $capturesize -i :0.0$offset \ -vcodec libx264 \ -vf scale=-1:720 \ -pre:v lossless_ultrafast \ -threads 4 \ -y …
10 bash  ffmpeg 

4
หากต้องการทราบว่า IP ใดดำเนินการคำสั่งบางอย่างใน linux โดยใช้ ssh
มีเซิร์ฟเวอร์ที่เข้าถึงได้โดยผู้ใช้หลายคนโดยใช้ ssh ฉันพยายามที่จะคิดออกว่าผู้ใช้ดำเนินการคำสั่งบางอย่าง ฉันจะรู้ว่ารายการของผู้ใช้ในปัจจุบันเข้าถึงเซิร์ฟเวอร์โดยใช้นอกจากนี้ผมจะรู้ว่ารายการของคำสั่งดำเนินการโดยใช้who history แต่จะรู้ได้อย่างไรว่าผู้ใช้คนใดที่ดำเนินการคำสั่งเหมือนcp file1.sh file2.shในเซิร์ฟเวอร์? ผู้ใช้ได้ดำเนินการคำสั่งและออกจากระบบแล้ว

1
ช่องว่างถูกยุบด้วยเสียงสะท้อน >>
ฉันกำลังสร้างสคริปต์ที่อ่านเนื้อหาของไฟล์จัดการเนื้อหาและผนวกเข้ากับไฟล์อื่น (โดยเฉพาะไฟล์โฮสต์เสมือน) การจัดรูปแบบและช่องว่างในไฟล์เอาต์พุตนั้นสำคัญ แต่เมื่อฉันเขียนเนื้อหาช่องว่างนั้นจะถูกตัดออก VHOST_PATH="/etc/apache2/extra/httpd-vhosts.conf" TEMPLATE_PATH="./template.conf" TEMPLATE=$(<TEMPLATE_PATH) # manipulating $TEMPLATE echo $TEMPLATE #outputs correct whitespace echo $TEMPLATE >> $VHOST_PATH #does not output correct whitespace เสียงก้องแรกสร้างบางอย่างเช่น <VirtualHost *:80> ServerAdmin webmaster@domain DocumentRoot "root/web" ServerName domain ErrorLog "root/logs/error_log" </VirtualHost> แต่สตริงที่เข้าสู่ไฟล์คือ <VirtualHost *:80> ServerAdmin webmaster@domain DocumentRoot "root/web" ServerName domain ErrorLog "root/logs/error_log" </VirtualHost> ฉันจะรักษาช่องว่างในขณะที่ต่อท้ายไฟล์เป้าหมายได้อย่างไร ฉันค้นหาสิ่งนี้ …
10 bash 

1
ทำไมคำสั่งบางคำสั่ง (ยาวบ่อย) อ่านไม่ออกใน bash & zsh
หลายครั้งที่ฉันป้อนคำสั่งแบบยาวใน bash หรือ zsh (นี่เป็นเพียงกระสุนสองตัวที่ฉันคิดว่าฉันเห็นนี่) เคอร์เซอร์วาร์ปไปที่ไหนสักแห่งที่อยู่กลางสตริงที่ฉันป้อนทุกคนสามารถอธิบายได้ว่าทำไมถึงเป็นเช่นนี้ และถ้าบางสิ่งสามารถทำได้เกี่ยวกับเรื่องนี้? ฉันสังเกตเห็นว่าสิ่งนี้มักจะเกิดขึ้นเมื่อฉันเรียกดูประวัติของเชลล์ของฉัน (โดยใช้ปุ่มลูกศร) เมื่อฉันพบรายการที่ยาวรายการใหม่ที่ยาวจะผสมกับรายการก่อนหน้าโดยแสดงข้อความที่อ่านไม่ออก ฉันมีตัวอย่างที่มีสตริงสั้น ๆ ซึ่งฉันเพิ่งสังเกตเห็น: ประวัติประกอบด้วย: mkdir sune1 mkdir sune2 ถ้าฉันนำทางไปmkdir sune1และหลังจากนั้นจะmkdir sune2ผมจะคาดหวังบรรทัดคำสั่งของฉันจะmkdir sune2(ตั้งแต่นี้เป็นสิ่งที่ฉันได้ในขณะนี้เพื่อสำรวจ) - mkdir1sune2แต่ฉันได้รับ ฉันสังเกตเห็นสิ่งนี้บ่อย ๆ เป็นเวลาหลายปี แต่อย่าให้มันรบกวนฉันมากเกินไป แต่ฉันคิดว่ามันถึงเวลาสำหรับการเปลี่ยนแปลงแล้ว! ดังนั้นความคิดใด ๆ
10 bash  shell  zsh 

2
ตรวจสอบ Folder OSX สำหรับการเปลี่ยนแปลงไฟล์จากนั้นเรียกใช้สคริปต์ทุบตี [ซ้ำ]
คำถามนี้มีคำตอบอยู่ที่นี่แล้ว : ปิดให้บริการใน7 ปีที่ผ่านมา เป็นไปได้ซ้ำ: ดูระบบไฟล์ในเวลาจริงบน OS X และ Ubuntu ฉันกำลังมองหาวิธีที่มีประสิทธิภาพในการตรวจสอบไดเรกทอรีท้องถิ่นใน OSX และหากมีการเปลี่ยนแปลงไฟล์ใด ๆ ในไดเรกทอรีนั้นให้ใช้สคริปต์ทุบตีเพื่อยืนยันไฟล์เป็น github เครื่องมือแนะนำใด ๆ สำหรับการตรวจสอบไดเรกทอรีสำหรับการเปลี่ยนแปลงไฟล์จากนั้นเรียกการกระทำเช่นสคริปต์ทุบตี?
10 macos  bash  github 

3
ฉันจะรันโปรแกรมไพ ธ อนโดยตรงจากเชลล์ได้อย่างไร?
ฉันเขียนสคริปต์ เมื่อมันเริ่มมันจะไม่หยุดและมันจะรับข้อมูลจากอินเทอร์เน็ต ฉันสามารถเรียกมันด้วยวิธีนี้: cd /User/Desktop/project/internetScanner/ python3 main.py start แต่ฉันต้องการเรียกมันโดยตรงจาก terminal เช่นนี้ภายในปลายทาง: internetScanner start ฉันจะทำเช่นนั้นได้อย่างไร

1
เอาท์พุทที่แตกต่างกันเมื่อเปลี่ยนเส้นทาง
$ mysql -e 'select a,b from tablefoo' databasename อัตราผลตอบแทน +---+---+ | a | b | +---+---+ | 1 | 0 | | 2 | 1 | +---+---+ แต่ทว่า $ mysql -e 'select a,b from tablefoo' databasename > file ให้ไฟล์fileที่มี a b 1 0 2 1 (โดยที่แท็บอยู่ระหว่างอักขระตัวอักษรและตัวเลขในแต่ละบรรทัด) ฉันคิดว่าการเปลี่ยนเส้นทางไม่ควรเปลี่ยนผลลัพธ์ ทำไมฉันถึงได้ผลลัพธ์ที่แตกต่างกันสองอย่าง แก้ไข: คำตอบของWilliam …

2
ฉันจะทำให้ "bash -x" (โหมดแก้ไขข้อบกพร่อง) recurse ในสคริปต์ที่มาได้อย่างไร
ฉันพยายามที่จะดีบักสิ่งที่ทุบตีในการเริ่มต้นเข้าสู่ระบบสำหรับ Linux ฉันได้อ่านแล้วว่า "bash -x" จะทำให้ bash พิมพ์สิ่งที่มันกำลังทำอยู่ แต่ไม่ได้พิมพ์คำสั่งในไฟล์ที่มาเช่น "set -x" ฉันไม่สามารถใช้ "set -x" เพราะการเริ่มต้นทำงานก่อนที่ฉันจะเรียกมันว่า "bash -x" ดูเหมือนว่าจะสามารถใช้งานได้ดีกับ OS X แต่อาจเป็นเพราะรุ่นทุบตี Linux: 3.2.25 OS X: 3.2.48 นี่คือข้อความที่ตัดตอนมาจากพฤติกรรมที่ไม่เกิดขึ้นซ้ำบน Linux: bash -l -x -c 'echo 1' # ... snip ... + for i in '/etc/profile.d/*.sh' + '[' -r /etc/profile.d/vim.sh ']' + '[' …
10 linux  macos  bash 

3
วิธีการเปลี่ยนเปลือกเริ่มต้นสำหรับ Linux susbsystem สำหรับ Windows
ฉันติดตั้งระบบย่อย Linux สำหรับ Windows 10 ทำงานได้ดี แต่ฉันต้องการเปลี่ยนสภาพแวดล้อมเชลล์เริ่มต้นสำหรับระบบย่อย ฉันได้แล้วsudo apt-get install fish chsh -s /usr/bin/fishแต่เมื่อฉันเริ่มต้นbash.exeใน Windows มันจะเริ่มทุบตี (ฉันคิดว่ามันคาดเดาได้) ไม่มีใครรู้ว่าข้อโต้แย้งที่จะเปลี่ยนพฤติกรรมนี้?

2
ย้อนกลับการค้นหาประวัติในทุบตีตามด้วยปุ่มลูกศรทำให้เคอร์เซอร์ปรากฏในตำแหน่งที่ไม่ถูกต้อง
ฉันสังเกตว่าหลายครั้งเมื่อฉันย้อนกลับการค้นหาประวัติจากบรรทัดคำสั่งผ่านCTRL+ rหากฉันต้องการแก้ไขคำสั่งบางครั้งเคอร์เซอร์จะกระโดดไปยังตำแหน่งที่ไม่ถูกต้องเมื่อฉันกดแป้นลูกศรหรือป้อนCTRL+ aหรือCTRL+ e. PS1ตำแหน่งที่เฉพาะเจาะจงมันกระโดดไปดูเหมือนว่าจะมีการชดเชยเท่ากับขนาดของบรรทัดคำสั่งของฉันพรอมต์เป็นชุดใน สิ่งนี้ทำให้เกิดความยากลำบากเนื่องจากตำแหน่งที่แท้จริงของเคอร์เซอร์แตกต่างจากตำแหน่งที่แสดงบนหน้าจอ การแก้ไขคำสั่งในอนาคตจะถูกสร้างการแสดงผลราวกับว่าเคอร์เซอร์อยู่ในตำแหน่งที่ถูกข้ามไป แต่คำสั่งจริงจะรักษาตำแหน่งที่ถูกต้องโดยไม่มีการข้ามใด ๆ ไม่มีใครรู้ว่าสิ่งที่ทำให้เกิดปัญหานี้หรือวิธีการแก้ไขหรือไม่ แก้ไข: ถ้าฉันเพิ่มบรรทัดใหม่ในตอนท้ายของPS1ปัญหาดูเหมือนว่าจะหายไป อย่างไรก็ตามฉันต้องการป้อนคำสั่งในบรรทัดเดียวกันกับพรอมต์
10 bash 

2
หน้าจอ GNU: ไม่สามารถใช้คำสั่งคัดลอกข้อมูลได้ยกเว้นว่ามีการแนบหน้าจอหรือไม่
ฉันมีสคริปต์ต่อไปนี้ screen -d -m -S $1 #start screen minimized screen -S $1 -X stuff "$beast " #stuff commands เว้นแต่ฉันจะแนบหน้าจอก่อนดูเหมือนว่าผลกระทบของสิ่งต่าง ๆ จะไม่ทำอะไรเลย? เหตุใดจึงเป็นเช่นนี้และฉันจะแก้ไขสคริปต์นี้ได้อย่างไรจึงไม่ต้องแนบหน้าจอ

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