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

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

2
ไม่สามารถลบเส้นทางด้วยเกตเวย์ 0.0.0.0
ฉันกำลังพยายามตั้งค่าเส้นทางของฉันในแบบที่จะทำให้ฉันสามารถเชื่อมต่อกับกล่องสาธิต Solum ของ Vagrantได้ ตารางเส้นทางของฉันมี แต่ไม่ จำกัด เฉพาะเส้นทางต่อไปนี้: $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0 192.168.76.0 192.168.76.2 255.255.255.0 UG 0 0 0 vboxnet0 192.168.76.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0 ฉันสงสัยว่าเส้นทางที่สาม (สร้างโดยอัตโนมัติเมื่อเริ่มต้นกล่อง Vagrant) …

2
เป็นไปได้ไหมที่จะสร้างชื่อแทนทราย?
ฉันกำลังมองหาวิธีที่จะทำให้ชื่อแทนต่อไปนี้ใช้ได้กับชื่อไฟล์ใด ๆ alias dim='cd /home/jason/Documents; vim *the desired file*; cd' ฉันสงสัยว่ามีวิธีที่ฉันสามารถเปลี่ยนชื่อแทนนี้เพื่อให้ฉันสามารถพิมพ์ชื่อไฟล์ใด ๆ เช่น: dim *the desired file* และยังคงได้ผลเหมือนเดิม โดยทั่วไปมีวิธีเรียกสิ่งใดก็ตามที่พิมพ์หลังจากชื่อนามแฝงเป็นชื่อแทนเอง สิ่งที่ต้องการ: alias dim='cd /home/jason/Documents; vim <what is typed after alias>; cd'
8 bash  alias 

3
บังคับใช้“ ไม่ดี” (ไม่ใช่ 0) ส่งคืนรหัสคำสั่งเทอร์มินัลหรือไม่
ฉันมีเฟรมเวิร์กที่เขียนด้วยไพ ธ อนและเพื่อวัตถุประสงค์ในการทดสอบโดยทั่วไปฉันต้องการทำ subprocess (หรือที่เรียกว่า shell call) ... ซึ่งควรจะกลับมาพร้อมกับ RC! = 0 ฉันพยายามเรียกใช้ไฟล์ปฏิบัติการที่ไม่มีอยู่ หรือเรียกใช้ "ทางออก 1"; แต่มีเหตุผลบางประการที่แปลเป็น FileNotFoundError ดังนั้นฉันสามารถทำอะไรได้อีกเพื่อเรียกรหัสส่งคืน! = 0 (ในลักษณะ "น่าเชื่อถือ" หมายถึงคำสั่งไม่ควรคืนค่า 0 ทันทีที่เวลาในอนาคต) ฉันคิดว่าจะ "ค้นหา" สำหรับไบนารีที่เรียกว่า exit แต่ก็เป็นเช่นนั้น: > /usr/bin/env exit /usr/bin/env: exit: No such file or directory

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

1
ใช้รายการคำเพื่อ grep ในรายการอื่น
ฉันมีรายการที่มี 250 บรรทัดอยู่ในนั้น ฉันต้องเรียกใช้พวกเขาทั้งหมดผ่านเว็บเซิร์ฟเวอร์เพื่อรับรายการผลลัพธ์ อย่างไรก็ตามรายการนี้ส่งคืนบรรทัดมากกว่าที่ฉันสนใจบอกฉันlist.txtว่า: a.1 b.1 etc ดังนั้นผลลัพธ์คือoutput.txt: a.1 a b c a.2 b a b a.3 d k o b.1 b o p b.2 o i y b.3 p i y etc เป็นไปได้ไหมที่จะใช้คำสั่ง grep เพื่อค้นหาคำทั้งหมดใน list.txt ใน output.txt จากนั้นสร้างรายการ "ที่ต้องการ" want.txt ฉันต้องการทั้งบรรทัดใน output.txt ของฉันฉันใหม่ในการเขียนสคริปต์ แต่สิ่งที่ฉันต้องการคือบางสิ่งบางอย่างเช่น grep list.txt output.txt …
8 bash  grep 

1
ฉันจะเรียกใช้สคริปต์เมื่อแหล่งจ่ายไฟเสียบปลั๊กหรือออกได้อย่างไร
ด้วยเหตุผลบางอย่างความสว่างหน้าจอแล็ปท็อปของฉันไม่อัปเดตเมื่อฉันเสียบปลั๊กหรือจ่ายไฟ ฉันได้ดูวิธีแก้ปัญหาเล็กน้อยสำหรับปัญหานั้น แต่ดูเหมือนว่าไม่มีวิธีใดที่ทำงานได้ดี ดังนั้นแทนที่จะหมดหวังและเลิกฉันตัดสินใจที่จะลองเปลี่ยนสิ่งนี้ให้เป็นประสบการณ์การเรียนรู้และดูว่าฉันไม่สามารถเขียนสคริปต์ที่ทำเพื่อฉันได้หรือไม่ ฉันลองหามันเองด้วยความช่วยเหลือจากอินเทอร์เน็ตแน่นอน แต่ฉันค่อนข้างใหม่ในการทุบตีสคริปต์และ Ubuntu โดยทั่วไปดังนั้นฉันจึงไม่ได้ไปไกล สิ่งที่ฉันสามารถคิดออกได้คือฉันสามารถค้นหาสถานะของแบตเตอรี่ด้วย $ upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep -E "state" state: charging/discharging ขึ้นอยู่กับว่าเสียบอะแดปเตอร์ AC หรือไม่ฉันไม่รู้ว่ามันมีประโยชน์หรือไม่ แต่มันก็เจ๋งดีและฉันไม่รู้วิธีใช้grepมาก่อน อย่างไรก็ตามมีวิธีที่ค่อนข้างสะอาดในการทำเช่นนี้หรือไม่? โดย "วิธีที่สะอาด" ฉันหมายถึงวิธีที่หนึ่งที่มีประสบการณ์สคริปต์ทุบตี จำกัด สามารถเข้าใจ หนึ่งคำถามที่คล้ายกันฉันพบว่ามีคำตอบที่ดีคือคำถามนี้ซึ่งกล่าวว่าต่อไปนี้: เมื่อคุณเสียบอะแดปเตอร์ AC เข้า / ออกสคริปต์ที่/etc/pm/power.dถูกเรียกด้วย> อาร์กิวเมนต์: "true" (ถ้าคุณใช้แบตเตอรี่) หรือ "false" (ถ้าคุณใช้อะแดปเตอร์ไฟ) ปัญหาคือฉันไม่รู้วิธีเข้าถึงอาร์กิวเมนต์นั้นจากภายในสคริปต์ ดังนั้นฉันคิดว่าทุกอย่างจะเดือดร้อนเป็นปัญหาที่ค่อนข้างง่าย แต่ฉันคิดว่าฉันโพสต์คำถามต่อไปในกรณีที่คนมีวิธีแก้ปัญหาที่ดีกว่า

1
ตำแหน่งไอคอนเดสก์ท็อป (เข้าถึงและจัดการโดยทางโปรแกรม)
ฉันต้องการเข้าถึงและจัดการตำแหน่งไอคอนบนเดสก์ท็อปไอคอนของโปรแกรม ฯลฯ สิ่งนี้มีไว้สำหรับไฟล์และไดเรกทอรีที่คุณเก็บไว้ใน ~ / Desktop เก็บสิ่งนี้ไว้ที่ไหน
8 gnome  bash  nautilus  gvfs 

2
ทำไมฉันถึงได้ผลลัพธ์ที่แตกต่างในกรณีของ sh และ bash?
ฉันมีสคริปต์ง่ายๆดังต่อไปนี้: #!/bin/bash echo "Bash version ${BASH_VERSION}..." for i in {1..99..2} do echo $i done เอาต์พุตในกรณีที่ฉันรันด้วยsh file.sh: Bash version ... {1..99..2} เอาต์พุตในกรณีที่ฉันรันด้วยbash file.sh: Bash version 4.2.25(1)-release... 1 3 5 . . . 99 ฉันมีคำถามสองข้อ: ถ้าฉันเขียนบรรทัด shabang ที่ระบุเชลล์มันไม่ควรรันด้วยการทุบตีว่าฉันใช้sh file.shหรือbash file.shไม่? ฉันเข้าใจว่า$BASH_VERSIONsh ไม่รู้จัก แต่ปัญหาสำหรับลูปคืออะไร ทำไมไม่พิมพ์ตัวเลข?

1
วิธีเรียกใช้งานคำสั่งเทอร์มินัลทุกครั้งที่หน้าต่าง firefox ปิด
ฉันต้องการดำเนินการนี้: rm -rf ~/.wine-pipelight/*; rm -rf ~/.wine-pipelight/./.*; cp -a ~/viewright_backup/. ~/.wine-pipelight ทุกครั้งที่หน้าต่าง Firefox ปิด แต่ไม่จำเป็นเมื่อปิดหน้าต่างทั้งหมด แต่ปิดทุกหน้าต่างที่ปิด ตัวอย่างเช่นถ้าฉันมีหน้าต่าง Firefox หนึ่งหน้าต่างและหน้าต่างป๊อปอัป Firefox หนึ่งหน้าต่าง ถ้าฉันปิดหน้าต่างอย่างน้อยหนึ่งหน้าต่างฉันต้องการรันคำสั่งนี้ เป็นไปได้ไหม ขอบคุณ!

2
ฉันสามารถรันคำสั่ง bash จากแอพ Ubuntu HTML5 ได้หรือไม่?
ฉันต้องการแปลงสคริปต์ทุบตีเป็นแอพ GUI โดยใช้ Ubuntu SDK เพื่อสร้างแอป HTML5 เป็นไปได้ไหม มีแบบฝึกหัดใดบ้างนอกเหนือจาก 'ความหมาย' ที่แสดงถึงสิ่งนี้หรือไม่?

2
คำสั่ง 'sudo -s' ทำอะไรและใช้ในตัวอย่างนี้อย่างไร
ฉันมีข้อสงสัยดังต่อไปนี้ ในบทช่วยสอนที่เกี่ยวข้องกับการติดตั้งซอฟต์แวร์ที่ฉันกำลังติดตามบอกว่าฉันต้องรันคำสั่งต่อไปนี้ (ฉันกำลังทำมันลงในssh shell ดังนั้นรายการของขั้นตอนนี้จะจบลงด้วยexitคำสั่ง): sudo -s apt-get update apt-get install -y build-essential libtool libcurl4-openssl-dev libncurses5-dev libudev-dev autoconf automake screen exit ข้อสงสัยของฉันคือ: อะไรกันแน่ที่ไม่-sพารามิเตอร์ทำหลังจากsudoคำสั่ง? ค้นหาบนเว็บฉันพบว่า: commands [คำสั่ง] ตัวเลือก (s (เปลือก) เรียกใช้เชลล์ที่ระบุโดยตัวแปรสภาพแวดล้อม SHELL หากมีการตั้งค่าหรือเชลล์ตามที่ระบุในฐานข้อมูลรหัสผ่าน หากระบุคำสั่งคำสั่งจะถูกส่งไปยังเชลล์เพื่อดำเนินการผ่านตัวเลือก shellc ของเชลล์ หากไม่ได้ระบุคำสั่งเชลล์เชิงโต้ตอบจะถูกดำเนินการ ฉันดูเหมือนว่าsudo -sรันคำสั่งโดยใช้ตัวแปรสภาพแวดล้อมของเชลล์ แต่นี่ไม่ชัดเจนสำหรับฉัน: ในกรณีนี้คำสั่งที่เรียกใช้งานด้วยตัวแปรสภาพแวดล้อมคืออะไร? (มันจะรันsudo -sและไม่sudo -s [command]เท่านั้น)

1
จะทราบได้อย่างไรว่ามีการอัพเดทให้ใช้งานหรือไม่?
ฉันใช้เซิร์ฟเวอร์อูบุนตู 12.04 LTS และฉันคิดว่ามันคงจะดีถ้าฉันได้รับแจ้งเมื่อมีการอัพเดท แต่ฉันไม่สามารถรู้วิธีการ ... ฉันลองดูที่apt-getหน้าคน จากนั้นฉันสามารถใช้apt-get -s upgradeเพื่อรับเอาท์พุท apt-get ในสคริปต์โดยไม่มีการบล็อกคำถาม ตอนนี้ฉันเห็นความแตกต่างอย่างชัดเจน: อัปเดตพร้อมใช้งาน: apt-get -s upgrade Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: dpkg dpkg-dev libdpkg-perl 3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Inst …
8 apt  updates  bash  php 

2
เหตุใด cd ~ k (& แท็บ) จึงขยายเป็น cd ~ kernoops เมื่อฉันมีโฟลเดอร์ชื่อ“ ~ kernel-ppa” ใน pwd อยู่แล้ว
ฉันมีโฟลเดอร์ชื่อภายใน~kernel-ppa~/Downloads aditya@aditya-desktop:~$ cd Downloads/ aditya@aditya-desktop:~/Downloads$ ls ~kernel-ppa ตอนนี้เมื่อฉันพิมพ์cd ~kและกดTabสำหรับการขยายตัวอัตโนมัติเปลือกขยายมันcd ~kernoops/แทนcd ~kernel-ppa/แม้ว่าโฟลเดอร์ที่มีตัวละครเริ่มต้นเดียวกันอยู่แล้ว \สำหรับการขยายตัวโดยอัตโนมัติเพื่อทำงานผมต้องหนีด้วย ดังนั้นการใช้cd \~kและกดอย่างถูกต้องขยายไปยังTab cd \~kernel-ppa/แม้แต่การใช้cd \และการกดTabก็เป็นการหลอกลวง ทำไมมันเป็นเช่นนั้นและทำไมฉันต้องหลบหนี ยิ่งไปกว่านั้นสิ่งที่ฉันหลบหนีเพราะ~ไม่จำเป็นต้องมีสำหรับการขยายอัตโนมัติ หากฉันไปตามโฟลว์และรันcd ~kernoops/และกดEnterสถานะของเทอร์มินัลจะเปลี่ยนเป็น//: aditya@aditya-desktop:~/Downloads$ cd ~kernoops/ aditya@aditya-desktop://$ pwd // aditya@aditya-desktop://$ ls bin cdrom etc initrd.img lost+found mnt proc run srv tmp var boot dev home lib media opt root sbin sys usr …

1
แป้นพิมพ์ลัดของ Bash สำหรับ! *
ใน Bash มีโอเปอเรเตอร์ที่ใช้งานง่ายบางส่วนเพื่อทำซ้ำส่วนของคำสั่งสุดท้าย: !^ ขยายไปยังอาร์กิวเมนต์แรกของคำสั่งก่อนหน้าเช่น $ echo one "two three" one two three $ echo !^ echo one one !$ ขยายไปยังอาร์กิวเมนต์สุดท้ายของคำสั่งก่อนหน้าเช่น $ echo one "two three" one two three $ echo !$ echo "two three" two three !* ขยายไปยังข้อโต้แย้งทั้งหมดของคำสั่งก่อนหน้าเช่น $ echo one "two three" one two three $ echo !* …

3
การประเมินสตริงในเชลล์สคริปต์
ฉันทำตามคำแนะนำสคริปต์เปลือก bash นี้: http://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html ในส่วนการเปรียบเทียบตัวเลขมันอ้างอิงตัวอย่าง: anny > num=`wc -l work.txt` anny > echo $num 201 anny > if [ "$num" -gt "150" ] More input> then echo ; echo "you've worked hard enough for today." More input> echo ; fi สิ่งที่ดูเหมือนจะเกิดขึ้นข้างต้นคือเราเก็บสตริงคำสั่งไว้ในตัวแปร bash จากนั้นเราเรียกใช้ echo บนตัวแปร สิ่งที่น่าจะเกิดขึ้นคือสตริงถูกประเมินและคำสั่ง wc ถูกดำเนินการและส่งคืนจำนวนบรรทัดไปยังเทอร์มินัลการควบคุม ตกลงดังนั้นฉันจึงเปิดตัวเทอร์มินัลของฉันใน Ubuntu …

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