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

Bash (Bourne-Again SHell) เป็นเชลล์ที่ใช้ในอินเตอร์เฟสบรรทัดคำสั่งของ Ubuntu ตามค่าเริ่มต้น

3
สคริปต์ Bash จะไม่ทำงานหากไม่มีการพิมพ์ "bash" ไว้ข้างหน้า
ในระบบโรงเรียนของเราเราสามารถเรียกใช้ไฟล์สคริปต์โดยไม่ต้องพิมพ์bashหรือcshคุณมีอะไรโดยไม่ระบุว่าเป็นสคริปต์ประเภทใด อย่างไรก็ตามบน Ubuntu ฉันต้องพิมพ์bash script.bashเป็นตัวอย่าง สิ่งนี้จำเป็นเสมอใน Ubuntu หรือเป็นการตั้งค่าที่ฉันสามารถเปลี่ยนได้บ้าง
11 bash 

3
ทำไมการเปลี่ยนเส้นทางไปยังไฟล์เดียวกันจึงตัดไฟล์
โดยปกติเราจะใช้ไฟล์อื่นเพื่อเปลี่ยนเส้นทางเอาต์พุต ตัวอย่างเช่น : cat < first > temp ในคำสั่งนี้เนื้อหาของแรกจะถูกเปลี่ยนเส้นทางไปยัง temp แทนการส่งออกมาตรฐาน ถ้าอย่างนั้นทำไมไฟล์มันถึงตัดทอนถ้าฉันใช้ชื่อไฟล์เดียวกัน เหตุใดจึงไม่สามารถเขียนทับไฟล์เดียวกันได้ cat < first > first

5
สคริปต์เพื่อตรวจสอบว่ามีบางโปรแกรมติดตั้งไว้แล้ว
ฉันจะสร้างสคริปต์ทุบตีที่ตรวจสอบว่ามีการติดตั้งโปรแกรมไว้แล้วและยังไม่ติดตั้งหรือไม่ ขอบคุณสำหรับความช่วยเหลือของคุณ. นี่คือรหัสที่ฉันมี: #/bin/bash PS3="choose an option" select opcion in "Installing_Youtube" "exit" do case $opcion in "Installing_Youtube") youtube-dl > /usr/bin if [ $? -eq 127 ] ; then echo "installing youtube" apt-get update apt-get install youtube-dl mkdir Videos else echo "Youtube already installed" fi ;; "exit") exit
11 apt  bash  scripts 

4
ฉันจะทำให้สคริปต์เข้าสู่ระบบไฟล์แยกจำนวนครั้งที่ถูกดำเนินการได้อย่างไร
ฉันต้องเขียนสคริปต์ที่เขียนไปยังไฟล์กี่ครั้งที่สคริปต์นี้ได้รับการดำเนินการ ฉันจะทำสิ่งนั้นได้อย่างไร



2
วิธีตั้งชื่อเทอร์มินัลโดยอัตโนมัติเป็นชื่อไดเรกทอรีโดยไม่มีพา ธ
ปัจจุบันชื่อเทอร์มินัล / แท็บ bash ของฉันได้รับการตั้งค่าตามไดเรกทอรีที่ฉันใช้อยู่ตัวอย่างเช่น: bob@bobscomputer:~/i/had/some/great/pie/yesterday สิ่งนี้มีประโยชน์ไม่มากหากฉันมีแท็บหลายแท็บเปิดอยู่เคียงข้างกัน ตัวอย่างเช่นถ้าฉันมี 4 แท็บของ dir ข้างต้นเปิดเคียงข้างกันทั้งหมดที่ฉันเห็นคือ bob@bobscomputer:~/i/had... 4 ครั้ง. ฉันต้องการตั้งชื่อเทอร์มินัลทั้งหมดโดยอัตโนมัติเป็นเพียงส่วนสุดท้ายของเส้นทาง ในตัวอย่างด้านบนฉันต้องการชื่อ yesterday แน่นอนชื่อควรเปลี่ยนเมื่อฉันเปลี่ยนไดเรกทอรี ฉันต้องการทำสิ่งนี้โดยไม่เปลี่ยนพรอมต์ดังนั้นชื่อพรอมต์และเทอร์มินัลควรแตกต่างกัน มีวิธีทำเช่นนี้หรือไม่?

3
ฉันจะกำหนดค่า Ubuntu ให้รีบูตทุกวันตามเวลาที่กำหนดได้อย่างไร
ใช้เทอร์มินัลหรือไฟล์ทุบตีฉันจะกำหนดค่า Ubuntu ให้รีบูตทุกวันได้อย่างไร (พูดเช่น) 03:00 กล่าวอีกนัยหนึ่งฉันต้องการกำหนดการรีบูตอัตโนมัติผ่านเทอร์มินัล ฉันไม่สามารถค้นหาสิ่งที่เกี่ยวข้องกับสิ่งนี้ใน Google หรือ AskUbuntu และฉันก็ค่อนข้างใหม่สำหรับ Ubuntu โดยทั่วไป (เพิ่งได้รับ Raspberry Pi ใหม่ของฉัน)
11 bash  reboot  schedule 

3
รับไดเรกทอรีโปรไฟล์ Firefox เริ่มต้นจากการทุบตี
ฉันพยายามรับไดเรกทอรีโปรไฟล์ของโปรไฟล์ firefox เริ่มต้น (อันที่เปิดโดยอัตโนมัติ) จาก Bash ฉันจะทำต่อไปได้อย่างไร ฉันไม่พบตัวเลือกที่มีประโยชน์firefox --help
11 firefox  bash 

3
เหตุใดจึงมีเชลล์ให้ผู้ใช้งาน PostgreSQL
cat /etc/passwd |grep postgre postgres:x:115:127:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash apt-cache show postgresql Package: postgresql Priority: optional Section: database Installed-Size: 65 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Debian PostgreSQL Maintainers <pkg-postgresql-public@lists.alioth.debian.org> Architecture: all Source: postgresql-common (136) Version: 9.1+136 Depends: postgresql-9.1 Filename: pool/main/p/postgresql-common/postgresql_9.1+136_all.deb Size: 5468 MD5sum: 34f5a1373ad5cd0b6f5aa3e7af06c9e7 SHA1: 6f271758bd51c23614b12fd63fb711ecfa43e9e5 SHA256: e8921a22b560e81f57a2a00001e31ba1036f67a8e7f151bf8f977b4919fc559a ฉันสามารถแทนที่/bin/bashด้วย/bin/falseหรือไม่

2
นามแฝงกับฟังก์ชั่นในสคริปต์ทุบตี
ฉันต้องการทราบความแตกต่างระหว่างนามแฝงและฟังก์ชั่นในเชลล์ทุบตี - และเมื่อใดควรใช้อันไหน ดูเหมือนว่าชัดเจนว่าเนื่องจากฟังก์ชั่นสามารถใช้การโต้แย้งพวกเขามีประสิทธิภาพมากขึ้น - เนื่องจากฉันทำงานบนท้องถนนเป็นหลักด้วยเน็ตบุ๊กและต้องการประหยัดพลังงานและพลังการประมวลผลฉันอยากรู้เพิ่มเติมเกี่ยวกับความแตกต่างของประสิทธิภาพ ในสองวิธีนี้เพื่อขยายฟังก์ชันการทุบตีคือ
11 bash 

3
อะไรคือความแตกต่างระหว่าง "source x", " x” และ“ ./x” ใน Bash?
ฉันมีแหล่งทุบตีหนึ่งแหล่งrun.shดังนี้ #!/bin/bash if [ $# -ne 1 ]; then exit fi ... เมื่อฉันรันมันสองวิธีมีพฤติกรรมที่แตกต่างกัน วิธีแรกคือ source run.sh มันจะปิดสถานีหลังจากดำเนินการ วิธีที่สองคือ ./run.sh การดำเนินการนี้จะทำให้สคริปต์ทำงานให้เสร็จ ฉันกำลังถามว่ามีคำสั่งให้ออกจากสคริปต์ทุบตีสำหรับทั้งสองsource run.shและ./run.shการดำเนินการ ฉันได้ลองแล้วreturnเช่นกันซึ่งใช้งานไม่ได้กับ./run.shการทำงาน โดยทั่วไปฉันสนใจว่าทำไมสิ่งนี้จึงเกิดขึ้นและอะไรคือความแตกต่างระหว่างการใช้ "แหล่งที่มา" และ " สำหรับการดำเนินการสคริปต์?
11 bash  scripts 

5
ผลลัพธ์ของการค้นหาไปยัง rm
ฉันพยายามวิ่ง locate *.orig | xargs rm แต่มันบอกว่า No such file or directory ฉันเคยเห็นวิธีที่จะทำfindแต่การค้นหาคืนค่าเส้นทางแบบเต็มไปยังวัตถุดังนั้นมันควรจะเป็นไปได้

1
ความแตกต่างระหว่างการอนุญาตไฟล์สามถึงสี่หลัก
ฉันเพิ่งสงสัยว่าอะไรคือความแตกต่างระหว่างสิทธิ์ไฟล์ตัวเลขสามถึงสี่หลัก ฉันได้รับการอนุญาตเชิงตัวเลขโดยการเรียกใช้stat --format "%a" $file_nameความแตกต่างระหว่าง 0644 ถึง 644 คืออะไร

3
แนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับการใช้ sudo ในสคริปต์ทุบตี
ฉันมีสคริปต์ทุบตีที่ยาวและยาวซึ่งต้องรันคำสั่งจำนวนมากในขณะที่คำสั่งส่วนใหญ่จำเป็นต้องเรียกใช้ในฐานะผู้ใช้ทั่วไปก่อน sudo เพราะจะทำให้เจ้าของไฟล์ยุ่งเหยิงและเช่นนั้น ฉันมาด้วยวิธีการบางอย่าง แต่พวกเขาแต่ละคนมีปัญหาบางอย่าง วิธีที่ 1: การใช้ sudo ภายในไฟล์ #!/bin/bash sudo echo "I must be run by root" touch needsToBeOwnedByUser1 echo "needs to be run by user" sleep 1000 sudo echo "I, again, must be run by root" นี่จะดูดีจากวิธีการเขียนโค้ด sudoถูกเขียนก่อนที่จะมีคำสั่งไม่กี่คำที่รูทจริงต้องรันโดยรูท แต่ถ้าเวลาระหว่างการsudoโทรแต่ละsudoครั้งนานเกินไปขอรหัสผ่านอีกครั้ง นอกจากนี้หากการดำเนินการครั้งแรกของการsudoล้มเหลวเช่นเนื่องจากรหัสผ่านไม่ถูกต้องส่วนที่เหลือของสคริปต์จะยังคงดำเนินการ วิธีที่ 2: ใช้ sudo เพื่อโทรหาไฟล์จากนั้นเปลี่ยนกลับเป็นผู้ใช้ดั้งเดิมเมื่อต้องการ #!/bin/bash echo …
11 bash  sudo  su 

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