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

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

2
สร้างเซสชันของหน้าจอด้วยสคริปต์ทุบตีโดยใช้ contab
ฉันต้องการไฟล์ขวดที่จะทำงานทุกครั้งที่รองเท้าเซิร์ฟเวอร์ขึ้น (เรากำลังใช้ VPS) และดังนั้นผมจึงได้แก้ไข crontab ใช้แล้วเพิ่มcrontab -e @reboot bash /home/bash/startserver.shแต่ฉันไม่ได้ไปถึงจุดที่สคริปต์ทำงานเลย นี่คือสคริปต์ของฉัน: #!/bin/bash screen -S bukkit cd $HOME/server java -jar bukkit.jar เหตุผลที่ฉันต้องใช้screenคือเมื่อฉันเริ่ม bukkit.jar มันจะเข้าสู่คอนโซลที่ฉันสามารถป้อนคำสั่งเพิ่มเติมสำหรับโปรแกรมนั้นได้ (ฉันแน่ใจว่าคุณคุ้นเคยกับ Minecraft และเซิร์ฟเวอร์ในไซต์นี้แล้วก็ตาม ฮ่าฮ่า) แต่ฉันต้องสามารถทำคำสั่งอื่น ๆ ในฐานะรูทและสำหรับโปรแกรมอื่น ๆ ในขณะที่มันกำลังทำงานอยู่และปิดเซสชัน PuTTY ของฉันด้วย ปัญหาเดียวก็คือว่าเมื่อสคริปต์นี้จะดำเนินการจะสร้างเซสชั่นหน้าจอ แต่มัน ID ไม่ได้ระบุไว้ในscreen -lsขณะที่ประชาชนจะว่างเปล่า แต่ฉันต้องไป/run/screen/S-rootหารหัสแล้วใช้รหัสทั่วไปscreen -X -S $name quitกับมัน บางทีนี่อาจเป็นไปไม่ได้หรืออาจมีวิธีที่ง่ายกว่าในการทำเช่นนี้ (ฉันจะรักง่ายกว่า) แต่ฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้ถึงไม่ทำงาน และถ้าเป็นไปได้มันเป็นไปได้ที่จะเข้าร่วมเซสชันด้วยscreen -S bukkitเมื่อรันสคริปต์ทุบตี? …

2
คำสั่ง Oneliner ใช้ kill กำหนดหมายเลขพอร์ต tcp แทน PID?
ฉันมักจะทำเช่น sudo netstat -lpn |grep :8088 ดูผลลัพธ์ tcp6 0 0 :::8088 :::* LISTEN 11189/java แล้ว sudo kill -kill 11189 ฉันต้องการคำสั่งที่สะดวกยิ่งขึ้นเหมือนกับkillatport 8088ที่ใช้หมายเลขพอร์ต tcp เป็นตัวแปรและฉันสามารถสร้างเป็นนามแฝงของไพพ์ไลน์ที่ทำในสิ่งที่ฉันต้องการได้ แต่ฉันจะรับ PID จากเอาต์พุตและไพพ์ได้อย่างไร ไปที่คำสั่ง kill หรือไม่? ฉันคิดว่าฉันอาจใช้ awk เพื่อรับ PID จากเอาต์พุตจาก netstat แต่ฉันจะป้องกันและสร้างพอร์ตที่ตรงกันได้อย่างไรเพื่อให้อินพุต 80 ไม่ตรงกับ 8080 และเช่นเดียวกัน ฉันควรทำให้โปรแกรม C เป็นโปรแกรมแทนหรือไม่ หรือมียูทิลิตี้ขนาดเล็กเช่นนี้แล้ว

1
ทำไม $ 0 ถูกตั้งค่าเป็น -bash
ชื่อกระบวนการเข้าสู่ระบบครั้งแรกดูเหมือนว่าจะถูกตั้งค่าให้-bashแต่ถ้าผม subshell bashแล้วมันจะกลายเป็น ตัวอย่างเช่น: root@nowere:~# echo $0 -bash root@nowere:~# bash root@nowere:~# echo $0 bash -bash กำลังทำให้สคริปต์บางตัวล้มเหลวเช่น . /usr/share/debconf/confmodule exec /usr/share/debconf/frontend -bash Can't exec "-bash": No such file or directory at /usr/share/perl/5.14/IPC/Open3.pm line 186. open2: exec of -bash failed at /usr/share/perl5/Debconf/ConfModule.pm line 59 ใครรู้เหตุผลว่าทำไมถึง$0ตั้งค่า-bash?

1
จะเชื่อมโยงแป้นพิมพ์ลัดที่กำหนดเองกับสคริปต์ทุบตีใน Ubuntu 13.04 ได้อย่างไร
ในฐานะผู้ใช้ Ubuntu 13.04 ฉันมีปัญหาและความไม่ลงรอยกันกับ Ubuntu รุ่นใหม่ล่าสุดนี้ หนึ่งในนั้นคือแถบความสว่างหายไปจากแท็บ 'การตั้งค่าระบบ -> ความสว่าง & ล็อค' ทันทีหลังจากฉันติดตั้งแพคเกจบางอย่าง (ซึ่งฉันจำไม่ได้ว่ามันคืออะไร) ผมพบว่าวิธีแก้ปัญหาคือการใช้xbacklight ในการออกกำลังกายสำหรับตัวเองฉันเขียนสคริปต์สั้น ๆ เพื่อเพิ่มและลดความสว่างโดยใช้ xbacklight จากเทอร์มินัล สคริปต์นี้ทำงานได้ (มีสิทธิ์ในการดำเนินการ) เป็นไดเรกทอรีที่รวมอยู่ใน $ PATH ในไฟล์. bashrc ของฉันและเชื่อมโยงกับนามแฝง ('blup' เพื่อเพิ่มและ 'bldn' เพื่อลดความสว่างของหน้าจอ) ดังนั้นสองนามแฝงของฉัน (blup / bldn) ทำงานได้อย่างสมบูรณ์แบบจากสายเทอร์มินัล ต่อไปฉันต้องการเชื่อมโยงสิ่งเหล่านี้กับแป้นพิมพ์ลัดบางตัว (เช่น F2 / F3) ฉันทำเช่นนั้นใน 'การตั้งค่าระบบ -> แป้นพิมพ์ -> ทางลัด -> ทางลัดที่กำหนดเอง' …

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

3
วิธีที่เหมาะสมในการให้ผู้ใช้ป้อนรหัสผ่านสำหรับสคริปต์ทุบตีโดยใช้เฉพาะ GUI (ที่ซ่อนเทอร์มินัล)
ฉันได้สร้างสคริปต์ทุบตีที่ใช้ kdialog เฉพาะสำหรับการโต้ตอบกับผู้ใช้ มันถูกเปิดตัวจากไฟล์ ".desktop" เพื่อให้ผู้ใช้ไม่เคยเห็นเทอร์มินัล ดูเหมือน 100% เหมือนแอป GUI (แม้ว่าจะเป็นเพียงสคริปต์ทุบตี) มันทำงานใน KDE เท่านั้น (Kubuntu 12.04) ปัญหาเดียวของฉันคือจัดการรหัสผ่านให้ปลอดภัยและสะดวก ฉันไม่สามารถหาทางออกที่น่าพอใจ สคริปต์ได้รับการออกแบบให้รันในฐานะผู้ใช้ปกติและแจ้งให้ใส่รหัสผ่านเมื่อต้องการคำสั่ง sudo ก่อน ด้วยวิธีนี้คำสั่งส่วนใหญ่ที่ไม่ต้องการสิทธิ์ sudo จะถูกเรียกใช้ในฐานะผู้ใช้ปกติ เกิดอะไรขึ้น (เมื่อสคริปต์รันจากเทอร์มินัล) คือผู้ใช้จะได้รับพร้อมต์สำหรับรหัสผ่านของพวกเขาหนึ่งครั้งและการหมดเวลา sudo เริ่มต้นทำให้สคริปต์เสร็จสิ้นรวมถึงคำสั่ง sudo เพิ่มเติมโดยไม่ต้องแจ้งผู้ใช้อีกครั้ง นี่คือวิธีที่ฉันต้องการให้ทำงานเมื่อเรียกใช้ GUI ด้านหลัง ปัญหาหลักคือการใช้kdesudoเพื่อเปิดสคริปต์ของฉันซึ่งเป็นวิธี GUI มาตรฐานหมายความว่าสคริปต์ทั้งหมดจะถูกดำเนินการโดยผู้ใช้รูท ดังนั้นความเป็นเจ้าของไฟล์จึงถูกกำหนดให้กับผู้ใช้รูทฉันไม่สามารถพึ่งพา~/ในพา ธ ได้และสิ่งอื่น ๆ อีกมากมายนั้นน้อยกว่าอุดมคติ การรันสคริปต์ทั้งหมดในฐานะผู้ใช้รูทเป็นเพียงโซลูชันที่ไม่น่าพอใจและฉันคิดว่านี่เป็นวิธีปฏิบัติที่ไม่ดี ฉันขอขอบคุณแนวคิดใด ๆ ที่ให้ผู้ใช้ป้อนรหัสผ่าน sudo เพียงครั้งเดียวผ่านทาง GUI ในขณะที่ไม่ได้ใช้สคริปต์ทั้งหมดในฐานะที่เป็นรูท …
8 bash  scripts  sudo  gui  kde4 


4
จะกลับไปยังบรรทัดก่อนหน้าของสคริปต์ในเทอร์มินัลได้อย่างไร
ฉันพยายามเขียนสคริปต์ แต่ฉันติดอยู่ที่นี่ ดูรหัสโปรด! aug@august:~/play$ for i in {1..100..4} > do > echo "august" > touch august $i+$2 > mkdir dir มีวิธีใดที่จะไปบรรทัดก่อนหน้า? touch august $i+$2ผมหมายถึงมีการพิมพ์ผิดที่ฉันได้ใน Ipressed ENTERสำคัญดังนั้นฉันไปสำหรับสายใหม่ ฉันจะกลับไปยังบรรทัดก่อนหน้าได้อย่างไร

2
จะบันทึกประวัติเทอร์มินัลลงในไฟล์จากไฟล์ bash ได้อย่างไร
ฉันกำลังพยายามสร้างสคริปต์ทุบตีที่จะบันทึกประวัติเทอร์มินัลเป็นไฟล์ชื่อ hist.txt history > hist.txtดูเหมือนว่าการใช้จะไม่ทำงานในสคริปต์ทุบตี แต่ทำงานได้ดีเมื่อดำเนินการในบรรทัดคำสั่ง คำแนะนำใด ๆ ที่ชื่นชมอย่างมาก ขอบคุณจูดี้

1
สคริปต์เพื่อเปิดเทอร์มินัลและแสดงผลลัพธ์ของคำสั่งที่รันอยู่
ฉันนำหน้าสิ่งนี้โดยบอกว่าฉันเป็น noob ที่สมบูรณ์เมื่อพูดถึงการเขียนบท อย่างไรก็ตามฉันกำลังมองหาที่จะสร้างสคริปต์ที่เปิดเทอร์มินัลในสภาพแวดล้อม GUI ของ Ubuntu และเมื่อเป็นเช่นนั้นจะแสดงผลลัพธ์ของคำสั่งอื่น ๆ ที่ทำงานอยู่ในสคริปต์ เหตุผลนี้คือฉันกำลังมองหาที่จะใช้สคริปต์โยนมันลงในไดเรกทอรีที่ใช้สคริปต์ในการเข้าสู่ระบบและมีมันเปิด terminal เรียกใช้สคริปต์การปรับปรุงปกติของฉันแล้วเปิด terminal ให้ฉันเพื่อดำเนินการต่อหลังจาก เหตุผลของฉันคือเพื่อรับประสบการณ์มากขึ้นและฉันคิดว่าจะทำสิ่งที่ฉันทำโดยอัตโนมัติทุกครั้งที่ฉันเข้าสู่ระบบ

1
อาร์กิวเมนต์คำสั่ง Bash $ {…}
ฉันสังเกตเห็นอาร์กิวเมนต์คำสั่งประเภทนี้ในสคริปต์ทุบตี: node ${debug?--nocrankshaft --nolazy --nodead_code_elimination --debug-brk=15454} app.js ฉันสงสัยว่า${....}หมายถึงอะไร? มันใช้งานอย่างไร? นอกจากนี้ยังมีแหล่งข้อมูลที่ดีที่กล่าวถึงการเปลี่ยนแปลงคำสั่งอาร์กิวเมนต์ที่แตกต่างกันทั้งหมดสำหรับการทุบตี?

2
หลังจากรูตแล้วไฟล์. bashrc ที่กำหนดเองจะไม่ทำงานอีกต่อไปหรือ
ฉันแก้ไข.bashrcไฟล์เพื่อกำหนดเทอร์มินัลของฉันเอง ฉันแก้ไขPS1คำสั่งอื่นเป็นคำสั่งที่ฉันต้องการและใช้งานได้ดี แต่เมื่อฉันเข้าสู่ระบบในฐานะรูทมันจะเปลี่ยนกลับไปเป็นคำสั่งเดิม ฉันจะแก้ไขได้อย่างไร เนื้อหาของไฟล์ของฉันอยู่ด้านล่าง: # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # don't put duplicate lines or lines starting with space in …

1
ค้นหานักเทียบท่าเขียนในไดเรกทอรีที่ไม่ถูกต้อง
ฉันกำลังพยายามติดตั้งและใช้นักเทียบท่าเขียน ฉันใช้มันก่อนหน้านี้ในวันนี้และดูเหมือนว่าจะมีการโยนข้อผิดพลาดเกี่ยวกับไฟล์นักเทียบท่าของฉันไม่ใช่เวอร์ชันที่ถูกต้องดังนั้นฉันจึงลองแก้ไขมันโดยการถอนการติดตั้งแล้วติดตั้งล่าสุด เมื่อฉันถอนการติดตั้งฉันใช้ pip uninstall เมื่อฉันติดตั้งใหม่ฉันใช้วิธีอื่นในการติดตั้งนักเทียบท่าเขียนโดยใช้: sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose ดังนั้นตอนนี้เมื่อฉันพยายามและใช้นักเทียบท่าเขียนมันโยนข้อผิดพลาดนี้: io:~$ docker-compose version bash: /usr/bin/docker-compose: No such file or directory ดูว่าเส้นทางแตกต่างกันอย่างไร เวอร์ชันใหม่ได้รับการติดตั้งใน: /usr/local/bin/docker-compose ในกรณีที่ข้อผิดพลาดนี้บอกว่ากำลังมองหาใน / usr / bin / docker - อาจเป็นไปได้ว่าที่นักเขียนเขียนที่ฉันลบออกไปก่อนหน้านี้ติดตั้งแล้วในวันนี้ ใครช่วยฉันแก้ปัญหานี้ได้บ้าง ขอบคุณ

1
ทำไมฉันไม่เห็นพรอมต์รหัสผ่านเมื่อ. profile ดำเนินการ
ฉันต้องการใช้พวงกุญแจสำหรับงาน SSH cron ฉันพบคำตอบที่ดีนี้แล้ว ฉันเพิ่มคำสั่งkeychain --nogui id_rsaใน.profile และเมื่อฉันรีบูตและเข้าสู่ระบบฉันต้องป้อนรหัสผ่าน แต่ฉันไม่เห็นพรอมต์รหัสผ่านใด ๆ เมื่อ.profileดำเนินการ ฉันสามารถสร้างสคริปต์ทุบตีแบบสแตนด์อโลนด้วยคำสั่งและวางไว้ในแอปพลิเคชันเริ่มต้นขึ้น แต่ฉันไม่แน่ใจว่าวิธีนี้ดี ที่ที่ถูกต้องสำหรับคำสั่งนี้ด้วยพรอมต์รหัสผ่านพวงกุญแจ ?

1
เมื่อสร้าง u-boot / bin / bash: arm-none-linux-gnueabi-gcc: ไม่พบคำสั่ง
ฉันกำลังใช้งาน Ubuntu 12.0.4 บนเครื่อง 64 บิต ฉันมีบอร์ดพัฒนา AM335X เคอร์เนลที่ถูกบีบอัด (linux 3,2), rootfs, u-boot และ ARM cross compiler (arm-2010q1) ฉันไม่ได้บีบอัดทุกอย่างลงในโฟลเดอร์ย่อย (/ home / brent / work) ฉันได้เพิ่มสิ่งต่อไปนี้ในไฟล์. bashrc ของฉัน: PATH=/home/brent/work/arm-2010q1/bin:$PATH CROSS_COMPILE=arm-none-linux-gnueabi- ฉันได้ติดตั้งดังต่อไปนี้: sudo apt-get install ia32-libs เมื่อฉันไปสร้าง u-boot ฉันกำลังทำสิ่งต่อไปนี้ (ตามคำแนะนำที่มาพร้อมกับชุด): brent@brent~/work/u-boot$ sudo make distclean awk '(NF && $1 !~ /^#/) { …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.