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

Bash คือ Bourne Again SHell ผู้สืบทอดมาจาก Unix sh (shell) คลาสสิก

3
Bash: จะรู้ได้อย่างไรว่าผลลัพธ์ของคำสั่งสุดท้ายลงท้ายด้วยการขึ้นบรรทัดใหม่หรือไม่?
เวลาส่วนใหญ่ที่เอาต์พุตของคำสั่งลงท้ายด้วยอักขระบรรทัดใหม่ แต่บางครั้งมันก็ไม่ได้ดังนั้นเชลล์พรอมต์ถัดไปจะถูกพิมพ์ในบรรทัดเดียวกันพร้อมกับเอาต์พุต ตัวอย่าง: root @ hostname [~] # echo -n สวัสดี helloroot @ hostname [~] # ฉันพบว่ามันน่ารำคาญมากเสมอ ตอนนี้ฉันสามารถเพิ่ม "\ n" ที่จุดเริ่มต้นของตัวแปร PS1 ได้ แต่ส่วนใหญ่แล้วจะพิมพ์หนึ่งบรรทัดเพิ่มเติมที่ฉันไม่ต้องการ เป็นไปได้ไหมที่จะรู้ว่าผลลัพธ์ของคำสั่งสุดท้ายจบลงด้วยการขึ้นบรรทัดใหม่หรือไม่? โซลูชัน: (ขอบคุณเดนนิส) PS1='$(printf "%$((`tput cols`-1))s\r")\u@\h [\w]\$ '
10 linux  bash  shell  prompt 

5
ฉันจะเปลี่ยนเป็นไดเรกทอรีที่ฉันเพิ่งย้ายไฟล์ไปยังได้อย่างไร
ดังนั้นสมมติว่าฉันเพิ่งทำไป: mv ./myfile /to/some/other/place/ และตอนนี้ฉันตัดสินใจว่าฉันต้องการติดตามไฟล์และเข้าไปในไดเรกทอรีนั้น ในขณะที่ฉันสามารถหาเมาส์ได้ให้เลือกข้อความพิมพ์ 'cd' จากนั้นคลิกขวาเพื่อวาง - ฉันต้องการไดเรคทอรีที่ใช้แป้นพิมพ์เร็วขึ้น ดังนั้นวิธีที่ดีที่สุดในการทำเช่นนั้นคืออะไร? (โดยทั่วไปและหากแตกต่างกัน Centos + Bash โดยเฉพาะ)
10 linux  unix  bash  shell  directory 

4
ทำไม. bashrc ของฉันไม่อ่านภายใต้ cygwin
. bashrc ของฉันมีลักษณะเช่นนี้: alias name@server="ssh server sname" echo "bashrc read" echoคำสั่งเป็นเพียงสำหรับการตรวจสอบถ้ามันเป็นอ่าน แต่เสียงสะท้อนไม่ได้ทำอะไรเลย ฉันต้องการตั้งค่านามแฝงสำหรับ ssh ที่เร็วขึ้นในกล่องทำคำสั่งบางอย่างซึ่งเป็นนามแฝงที่ทำงานบนกล่องระยะไกล
10 bash  cygwin  bashrc 


13
นามแฝงทุบตีที่มีประโยชน์และสร้างรายการคำสั่งที่คุณใช้บ่อย
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันพบนี้บทความถกวิธีที่รวดเร็วในการจัดเรียงประวัติศาสตร์ทุบตีคุณและดูว่าคำสั่งที่คุณใช้มากที่สุด: cut -f1 -d" " .bash_history | sort | uniq -c | sort -nr | head -n 30 มันเปิดหูเปิดตาของคุณเป็นงานที่คุณควรสร้างชื่อแทนและสิ่งที่คุณควร cronjob ออกไปอย่างสมบูรณ์ ฉันชอบที่จะดูรายการของ ServerFault แนะนำนามแฝงบรรทัดคำสั่งที่ช่วยให้คุณประหยัดเวลาในการทำงาน คุณได้รับอะไร? ระหว่างเราฉันจะพนันได้ว่าเราสามารถช่วยผู้ใช้ทุกคนที่อ่านโพสต์นี้อย่างน้อย 10 นาทีต่อวัน (ลบวันแรกที่พวกเขาเสียเวลาอ่าน ServerFault แทนที่จะทำงานแน่นอน!)
10 bash  alias 

3
วิธีการใช้ ssh และ sudo ด้วยกันในทุบตี?
ฉันไม่สามารถค้นหาคำถามที่อธิบายสถานการณ์เฉพาะนี้ได้ ฉันพยายามเรียกใช้สคริปต์ทุบตีพื้นฐานเพื่อดึงการบันทึกจากเครื่องหลายเครื่อง ฉันกำลังเรียกใช้สคริปต์ภายในเครื่อง แต่จำเป็นต้องเข้าถึงเครื่องภายนอกผ่านทาง ssh รวมถึง sudo เป็นผู้ใช้ที่มีสิทธิ์เพียงครั้งเดียวบนเครื่องนั้น ... ssh myuser@machine.net sudo su - privledged_user cat logs > file.txt การรันด้วย sh -x จะเผยให้เห็นว่า bash กำลังติดอยู่บนบรรทัด 'ssh' ดังนั้นฉันจึงพยายามแก้ไขเป็น: ssh myuser@machine.net sudo su - privledged_user cat logs > file.txt เรื่องนี้ก็ดูเหมือนจะหยุดไปเรื่อย ๆ มีวิธีแก้ไขปัญหานี้ได้ดีกว่าหรือไม่? ฉันไม่เห็นวิธีการใช้ sudo su จากสิ่งที่ฉันสามารถบอกได้ ... ขอบคุณสำหรับความช่วยเหลือใด ๆ !
10 linux  bash 

2
ไม่มี TTY ในขณะที่รันคำสั่งผ่าน SSH ในเอกสารนี้
ฉันพยายามเรียกใช้คำสั่ง SSH แบบนี้ในเอกสารที่นี่: ssh example.com <<END sudo /etc/init.d/apache2 reload END ซึ่งทำงานได้ตามปกติยกเว้นเมื่อฉันพยายามเรียกใช้บางสิ่งที่ต้องการอินพุตเช่นรหัสผ่านสำหรับ sudo ในกรณีนั้นฉันได้รับข้อความต่อไปนี้: sudo: no tty present and no askpass program specified ฉันรู้ว่าฉันสามารถใช้การ-tตั้งค่าสถานะใน SSH เพื่อจัดสรรหลอกแบบนี้: ssh -t example.com "sudo /etc/init.d/apache2 reload" และมันจะใช้งานได้ แต่เมื่อฉันลองแบบเดียวกันกับเอกสารที่นี่มันใช้งานไม่ได้และฉันจะได้รับข้อผิดพลาดเดียวกันเกี่ยวกับการไม่มี tty อยู่: ssh -t example.com <<END sudo /etc/init.d/apache2 reload END มีความคิดใดบ้างที่ฉันสามารถทำงานนี้ได้? นอกจากนี้ในกรณีที่คุณสงสัยว่าทำไมฉันต้องการให้มันทำงานกับเอกสารที่นี่แทนที่จะส่งมันผ่านบรรทัดเดียวกันมันเป็นเพราะคำสั่งอินพุต (อาจมีไม่กี่อัน) มาจากไฟล์การกำหนดค่าที่อ่านโดยสคริปต์ และฉันได้ยินว่ามันหลีกเลี่ยงปัญหาในการหลีกเลี่ยงคำสั่งสำหรับคำพูดคำพูดคู่ ฯลฯ
10 ssh  bash  sudo 

4
วิธีง่ายๆในการ จำกัด ขนาดไฟล์ (stdout) ในระดับเชลล์สคริปต์?
ตกลงนี่เป็นกรณีการใช้งานจริงมากจากมุมมองของฉัน สมมติว่าฉันมีเปลือกหอยง่าย ๆ ที่จะบันทึกผลลัพธ์ลงในไฟล์ สิ่งนี้สามารถเป็นอะไรก็ได้ตัวอย่างเช่น tcpdump มีวิธีการทั่วไปและเล็กน้อยเพื่อให้แน่ใจว่าไฟล์ที่ส่งออกจะไม่เกินขนาดที่กำหนด? การอยู่เบื้องหลังสิ่งนี้คือการป้องกันไม่ให้เต็มพื้นที่ว่างบนจุดเมานต์โดยไม่ได้ตั้งใจ หากฉันลืมเกี่ยวกับสคริปต์หรือจะให้ข้อมูลกิกะไบต์ต่อชั่วโมงจากนั้นงานการดีบักแบบง่ายนี้อาจนำไปสู่ความผิดพลาดของระบบที่อาจเกิดขึ้น ตอนนี้ฉันตระหนักถึงตัวเลือกที่สร้างในเครื่องมือบางอย่าง (เช่นการรวมกันของ -W / -C ใน tcpdump) สิ่งที่ฉันต้องการคือล้มเหลวทั่วไปมาก เรื่องสั้นสั้น - เมื่อฉันเรียกใช้สคริปต์เช่น: % this -is --my=very|awsome|script >> /var/tmp/output.log วิธีตรวจสอบให้แน่ใจว่า output.log จะไม่ใหญ่กว่า 1GB สคริปต์สามารถหยุดทำงานถูกฆ่าตายหรืออะไรก็ตาม วิธีแก้ปัญหาฉันกำลังมองหาควรง่ายและง่ายโดยใช้เครื่องมือเฉพาะใน distros ยอดนิยมเช่น ubuntu / debian / fedora โดยทั่วไปบางสิ่งบางอย่างที่มีอยู่อย่างกว้างขวาง โปรแกรม multiline ที่ซับซ้อนไม่ได้เป็นตัวเลือกที่นี่โดยไม่คำนึงถึงภาษา / เทคโนโลยี
10 bash 

4
แยกวิเคราะห์ที่มีประโยชน์สำหรับตัวเลขที่มีคำต่อท้ายหน่วยหรือไม่
สมมติว่าคุณมีข้อมูลที่มีปริมาณในรูปแบบที่มนุษย์สามารถอ่านได้เช่นผลลัพธ์ของdu -hและต้องการใช้งานกับตัวเลขเหล่านั้นต่อไป สมมติว่าคุณต้องการไพพ์ข้อมูลของคุณผ่าน grep เพื่อทำการสรุปชุดย่อยของข้อมูลนั้น คุณทำสิ่งนี้ในหลาย ๆ ระบบที่คุณไม่เคยเห็นมาก่อนและมีเพียงยูทิลิตี้ขั้นต่ำเท่านั้น คุณต้องการแปลงคำต่อท้ายสำหรับส่วนต่อท้ายมาตรฐาน 10 ^ n ทั้งหมด มียูทิลิตี gnu-linux ในการแปลงตัวเลขที่ต่อท้ายเป็นตัวเลขจริงภายในท่อหรือไม่? คุณมีฟังก์ชั่นทุบตีที่เขียนขึ้นเพื่อทำสิ่งนี้หรือบางส่วนของ perl ที่อาจจำได้ง่ายแทนที่จะเป็นความยาวของการเปลี่ยน regex หรือขั้นตอน sed หลายขั้นตอนหรือไม่? 38M /var/crazyface/courses/200909-90147 2.7M /var/crazyface/courses/200909-90157 1.1M /var/crazyface/courses/200909-90159 385M /var/crazyface/courses/200909-90161 1.3M /var/crazyface/courses/200909-90169 376M /var/crazyface/courses/200907-90171 8.0K /var/crazyface/courses/200907-90173 668K /var/crazyface/courses/200907-90175 564M /var/crazyface/courses/200907-90178 4.0K /var/crazyface/courses/200907-90179 | grep 200907 | <amazing suffix conversion> …

3
dpkg Ubuntu ติดตั้งแบบไม่โต้ตอบ
ฉันพยายามติดตั้งไฟล์. deb จำนวนมากโดยไม่ต้องโต้ตอบกับพวกเขา ตัวอย่างเช่นเซิร์ฟเวอร์ MySQL จะแจ้งให้เมนูแบบโต้ตอบป้อนรหัสผ่านผู้ดูแลระบบตามการกำหนดค่าของ dpkg ฉันเหนื่อย. export DEBIAN_FRONTEND=noninteractive && export DEBIAN_PRIORITY=critical && sudo /usr/bin/dpkg -i ./files/* ฉันรู้ว่าฉันสามารถแยกไฟล์โดยไม่มีการกำหนดค่า ฉันกำลังพยายามสร้างสคริปต์ทุบตีเพื่อปรับใช้เซิร์ฟเวอร์ที่ติดตั้งไว้ล่วงหน้าของ Apache, php, mySQL เป็นต้นอย่างไรก็ตามการติดตั้งแบบโต้ตอบนี้ทำให้เกิดปัญหา มีความคิดเห็นเกี่ยวกับวิธีการปิดการใช้งานหรือไม่ หรือหลีกเลี่ยง ขอบคุณ

4
Bash หนึ่งซับเพื่อสร้างไฟล์แบบอะตอมถ้าไม่มีอยู่
ฉันต้องการ Bash one-liner ที่สร้างไฟล์แบบ atom ถ้าไม่มีอยู่ นั่นหมายความว่า "ถ้าไฟล์ไม่มีอยู่ให้สร้างมัน" แต่ต้องแน่ใจว่าไม่มีใครจัดการเพื่อสร้างไฟล์ในพื้นที่เล็ก ๆ ระหว่างการทำ if และการสร้างไฟล์
9 bash  files 

4
ไม่สามารถอัปเดต Bash ใน Debian 6.0 (Squeeze)
ฉันไม่สามารถอัปเดตBashบนเซิร์ฟเวอร์ Debian 6.0 (Squeeze) เพื่อกำจัดช่องโหว่ที่ค้นพบ: bash --version GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu) apt-get update apt-get install bash Reading package lists... Done Building dependency tree Reading state information... Done bash is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded. ฉันสามารถใช้ Squeeze-LTS สำหรับเซิร์ฟเวอร์นี้เพื่ออัปเดต Bash …
9 linux  debian  bash 

5
ฉันจะคืนค่า bashrc เริ่มต้นได้อย่างไร
.bashrcผมได้เขียนทับโดยไม่ได้ตั้งใจ ฉันทำสิ่งต่อไปนี้ echo 'export EDITOR=/usr/bin/nano' >> /etc/bashrc Bur ฉันตั้งใจพิมพ์แทน> >>ฉันคิดว่ามันเป็นความคิดที่ไม่ดี ฉันยังสามารถเข้าสู่ระบบโดยใช้เคล็ดลับนี้ (กดCtrl+Cก่อน. bashrc จะถูกดำเนินการอย่างเต็มที่) แต่ฉันจะคืนค่าเป็นค่าเริ่มต้นได้.bashrcอย่างไร ฉันใช้ CentOS 6.5 x86_64 หากไฟล์ bashrc เริ่มต้นมีอยู่ในการแจกจ่ายที่อื่นฉันไม่สามารถหาได้
9 bash  bashrc 

5
ฉันจะแปลงเอนทิตีพิเศษ HTML ได้อย่างง่ายดายจากอินพุตสตรีมมาตรฐานใน Linux ได้อย่างไร
CentOS มีวิธีง่ายๆในการแปลงเอนทิตีพิเศษ HTML จากสตรีมข้อมูลหรือไม่ ฉันกำลังส่งข้อมูลไปยังสคริปต์ทุบตีและบางครั้งข้อมูลนั้นมีเอนทิตีพิเศษ ตัวอย่างเช่น: "ทดสอบ" & amp; ทดสอบ $ ทดสอบ! ทดสอบ @ # $% ^ & amp; * * * * ฉันไม่แน่ใจว่าทำไมตัวละครบางตัวถึงแสดงได้ดีและอื่น ๆ ไม่ได้ แต่น่าเสียดายที่ฉันไม่สามารถควบคุมข้อมูลที่เข้ามาได้ ฉันคิดว่าฉันอาจจะสามารถใช้ SED ได้ที่นี่ แต่ดูเหมือนว่าจะยุ่งยากและมีแนวโน้มที่จะเกิดผลบวกปลอม มีคำสั่ง Linux ที่ฉันสามารถใช้กับที่เชี่ยวชาญในการถอดรหัสข้อมูลประเภทนี้หรือไม่?
9 linux  bash  scripting  sed  html 

2
ฉันสามารถเปลี่ยนความเป็นเจ้าของไฟล์ทั้งหมดของผู้ใช้ที่เฉพาะเจาะจงได้หรือไม่?
มีวิธีในการค้นหาไฟล์ทั้งหมดที่เป็นของผู้ใช้ซ้ำและเปลี่ยนเป็นผู้ใช้ / กลุ่มอื่นใน Gnu / Linux หรือไม่? ฉันคิดว่าต้องมีเวทย์มนตร์หนึ่งสายการบิน แต่ทักษะการใช้เวทมนตร์บรรทัดคำสั่งของฉันไม่ได้ขึ้นอยู่กับว่า :) ขอบคุณ!

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