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

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

2
ฉันจะทำให้ OS X ตั้งค่าชื่อเทอร์มินัลกลับไปเป็นชื่อดั้งเดิมเมื่อกลับมาจาก ssh ได้อย่างไร
เริ่มต้นที่ OS X ฉันเข้าสู่ foo (กล่อง Linux) ชื่อสถานีของฉันเปลี่ยนเป็น foo ฉันแล้ว ssh ลงในแถบ (กล่อง Linux อื่น) ชื่อสถานีของฉันเปลี่ยนเป็นแถบ ฉันออกจากระบบ ชื่อสถานีของฉันเปลี่ยนเป็น foo ฉันออกจากระบบ foo ชื่อเทอร์มินัลของฉันยังคงอยู่ foo (แทนที่จะเปลี่ยนกลับไปเป็นชื่อเดิม) เห็นได้ชัดว่าปัญหาไม่ได้อยู่กับเทอร์มินัลเนื่องจากมันทำงานอย่างถูกต้องเมื่อออกจากกล่อง Linux กลับไปที่กล่อง Linux มันอาจไม่ใช่ ssh เพราะฉันมีปัญหาเดียวกันกับกลุ่ม ในใจของฉันที่ทิ้งเปลือกหอย ฉันกำลังใช้ BASH เมื่อมองดูสภาพแวดล้อมฉันไม่เห็นความแตกต่างมากมายระหว่างกล่อง Linux กับกล่อง OS X ของฉัน ทั้งสองใช้ระยะของ xterm

8
ช่วยฉันจากสถานีซึ่งพูดพล่อยๆ
ในขณะที่ล็อกอินเข้าสู่เซสชัน ssh จากระยะไกลบางครั้งฉันก็ทำผิดกับไฟล์ที่ไม่ถูกต้อง ทางออกเดียวคือปิดเทอร์มินัลและเปิดใหม่ซึ่งทำให้ฉันหงุดหงิดเพราะปกติจะมีสถานะมากมายที่เกี่ยวข้องกับเทอร์มินัลปัจจุบันแล้ว Update: ในขณะที่ฉันได้รับคำตอบที่ดีมีปัญหาเล็กน้อยเกิดขึ้น ดูคำถามติดตามนี้ ฉันควรทำอย่างไร
12 linux  bash  ssh  remote  telnet 

6
วิธีรับเวลาการประมวลผล Bash เป็นมิลลิวินาทีใน Mac OS X
ฉันได้ตรวจสอบสิ่งนี้แล้ว แต่วิธีแก้ปัญหาที่ให้มาไม่ได้สำหรับฉัน การใช้วันที่ฉันสามารถรับเวลาดำเนินการได้ในไม่กี่วินาที: T="$(date +%s)" #some work here T="$(($(date +%s)-T))" echo "execution time (secs) ${T}" อย่างไรก็ตามเมื่อฉันลองทำสิ่งนี้: T="$(date +%s%N)" #some work here T="$(($(date +%s%N)-T))" การเพิ่ม% N (ตามด้านบน) ลงในวันที่เพื่อให้ได้ความแม่นยำระดับนาโนวินาทีฉันได้รับข้อผิดพลาดต่อไปนี้: -bash: 1369320760N: ค่ามากเกินไปสำหรับฐาน (โทเค็นข้อผิดพลาดคือ "1369320760N") ไม่มีใครรู้วิธีวัดเวลาดำเนินการเป็นมิลลิวินาทีโดยใช้ bash ใน Mac OS X
12 macos  bash  unix 

3
Bash บน Ubuntu บน Windows Mount Network Share
ฉันได้อัปเดต Windows 10 และติดตั้ง bash ใหม่บน windows แล้ว อย่างไรก็ตามในพีซีทั้งสองเครื่องฉันได้ลองแล้วฉันไม่สามารถเชื่อมต่อเครือข่ายร่วมกันได้ ฉันได้ลองหลายวิธีในการติดตั้งการแชร์: sudo mount -t cifs -o username=xx,password=xx //192.168.x.x/Share /mnt/s เมื่อเรียกใช้คำสั่งดังกล่าวดูเหมือนว่ามันมีการทำงานไม่มีข้อผิดพลาด (แม้จะมี--verboseตัวเลือก) แต่จะ/mnt/sแสดงให้เห็นว่าอะไรและแสดงให้เห็นว่า:mount//192.168.x.x/Share on /mnt/s type cifs (rw) ฉันสามารถเรียกดูไฟล์ / โฟลเดอร์ทั้งหมดในการแชร์โดยใช้ smbclient
12 windows  ubuntu  bash  mount  cifs 

3
Bash 4.3 ความยาวเชิงลบของสตริงย่อยใน OS X
Bash 4.2 เพิ่มการสนับสนุนสำหรับความยาวสตริงย่อยเชิงลบ: http://tldp.org/LDP/abs/html/abs-guide.html#SUBSTREXTR01 ตัวอย่างที่ 37-12 พารามิเตอร์เชิงลบในโครงสร้างการแยกสตริง เมื่อพารามิเตอร์ "length" เป็นค่าลบจะทำหน้าที่เป็นพารามิเตอร์ offset-from-end ตัวอย่างเช่นผลลัพธ์ต่อไปนี้ "World" เมื่อทดสอบกับ Ubuntu: STR="Hello World!" echo ${STR:6:-1} แต่ใน OS X (GNU bash เวอร์ชัน 4.3.42 (1) - ปล่อยออกมา (x86_64-apple-darwin14.5.0)) การใช้งานนั้นทำให้เกิดข้อผิดพลาดดังต่อไปนี้: -1: substring expression < 0 นี่เป็น OS X เฉพาะหรือไม่หรือถูกปิดใช้งานอีกครั้งในการปรับปรุงทุบตีในภายหลัง มีวิธีการเปิดใช้งานฟังก์ชั่นนี้สำหรับ OS X หรือไม่?

3
วิธีเรียกใช้งานคำสั่งในฐานะรูทใน git post-receive hook
ฉันเพิ่งตั้ง repo git ระยะไกลบนเซิร์ฟเวอร์สำหรับเว็บแอปที่ทำงานเป็นบริการพุ่งพรวด ฉันต้องการใช้ hook post-receive เพื่อเรียกการกระทำที่จำเป็นในการอัปเดตรหัสแอปพลิเคชันและหยุดจากนั้นเริ่มบริการพุ่งพรวดอีกครั้ง นี่คือไฟล์ repo.git / hooks / post-receive ของฉัน: #!/bin/bash export GIT_WORK_TREE=/var/www/current/myapp/ echo "Checking out new files and restarting app" echo $USER git checkout -f sudo /sbin/stop myapp-service sudo /sbin/start myapp-service ตามข้อมูลที่ฉันอ่านที่นี่: askUbuntu.comวิธีรับคำสั่งพุ่งพรวดเพื่อดำเนินการในฐานะ root คือการแก้ไขไฟล์ visudo ของฉัน นี่คือตัวอย่างที่เกี่ยวข้อง: %sudo ALL=(ALL:ALL) ALL admin ALL=(ALL:ALL) NOPASSWD: …
12 linux  bash  git  sudo  upstart 

2
เหตุใดจึงไม่ทุบตีในขณะที่ออกจากวงเมื่อท่อไปที่คำสั่งย่อยที่ถูกยกเลิก?
ทำไมคำสั่งด้านล่างจึงไม่ออก? แทนที่จะออกจากการวนซ้ำจะวิ่งไปเรื่อย ๆ ในขณะที่ฉันค้นพบพฤติกรรมนี้โดยใช้การตั้งค่าที่ซับซ้อนมากขึ้นรูปแบบที่ง่ายที่สุดของคำสั่งจะลดลงไปดังต่อไปนี้ ไม่ออก: while /usr/bin/true ; do echo "ok" | cat ; done | exit 1 ไม่มีการพิมพ์ผิดด้านบน แต่ละ '|' เป็นท่อ 'ทางออก 1' ย่อมาจากกระบวนการอื่นที่วิ่งและออก ฉันคาดว่า "exit 1" จะทำให้เกิด SIGPIPE ในขณะที่ลูป (เขียนบนไพพ์ที่ไม่มีตัวอ่าน) และเพื่อให้ลูปแตกออก แต่การวนซ้ำยังคงทำงานอยู่ เหตุใดคำสั่งจึงไม่หยุด

2
Bash วิธีการแก้ไขทั่วโลก ^ H และ ^? ปัญหา backspace
ฉันต้องการแก้ไขปัญหานี้บ่อยครั้งที่เชลล์บนเซิร์ฟเวอร์ระยะไกลคิดว่าคีย์ backspace ของเทอร์มินัลของฉัน^?และบางครั้งก็คิดว่ามันเป็น^Hและเกิดขึ้นไม่ถูกต้องและส่งออกอักขระที่ไม่ถูกต้องเมื่อฉันกด backspace หากฉันตั้งเป็น ^ H หรือ ^ ด้วยstty erase ^Hหรือstty erase ^?ในไฟล์. bashrc ของฉันและใช้เทอร์มินัลอื่น ๆ เพื่อเข้าถึงเซิร์ฟเวอร์มันมักจะผิดพลาด ดังนั้นฉันจึงต้องพิมพ์ด้วยตนเองstty erase [whatever]เพื่อแก้ไขเมื่อฉันสังเกตเห็นว่าปุ่ม backspace ผิด สิ่งที่ฉันต้องการทำคือผูกทั้งสอง^?และ^Hย้อนกลับเพราะถ้าฉันสามารถทำสิ่งนี้ได้ฉันสามารถเพิ่มมันลงในไฟล์. bashrc ทั้งหมดของฉันและมันจะจบฝันร้ายนี้อย่างแน่นอน เป็นไปได้ไหม ถ้าเป็นเช่นนั้นได้อย่างไร
12 linux  bash  terminal  shell  bashrc 

4
คำสั่ง Bash Run ในบางช่วงเวลา?
ฉันกำลังสร้างสคริปต์ทุบตีเพื่อการใช้งานของฉัน ฉันจะรันคำสั่งในบางช่วงเวลาเช่น 20 วินาทีและยกเลิกคำสั่งได้อย่างไร ฉันลองใช้วิธีแก้ปัญหามากมาย แต่ไม่มีอะไรทำงานฉันก็ลองใช้คำสั่งไทม์เอาต์โดยไม่ประสบความสำเร็จ ได้โปรดแก้ปัญหาให้ฉันด้วย ตัวอย่างเช่น: ฉันต้องการเรียกใช้คำสั่งนี้ในสคริปต์และเทอร์มินัลหลังจาก 10 วินาที some command
12 bash  time  timeout 

5
เรียกใช้เชลล์สคริปต์ด้วยปุ่ม html
ฉันต้องการเปิดใช้งาน bash script เมื่อมีการกดปุ่มบนเว็บไซต์ นี่เป็นความพยายามครั้งแรกของฉัน: <button type="button" onclick="/path/to/name.sh">Click Me!</button> แต่ไม่มีโชค ข้อเสนอแนะใด ๆ แก้ไข - ทำตามคำแนะนำของ slhclk และ mit: ฉันมีไฟล์ php ใน / var / www ที่ฉันชี้ไปที่เว็บเบราว์เซอร์ของฉัน เนื้อหาของไฟล์มีดังนี้: <?php exec("/home/aa/scripts/test.sh"); ?> tesh.sh มีสิ่งนี้: screen -S server1 -X quit หากฉันพิมพ์/home/aa/scripts/test.shในเชลล์สคริปต์จะสามารถดำเนินการได้ อย่างไรก็ตามเมื่อฉันชี้เว็บเบราว์เซอร์ไปที่http://example.com/screen.php (ซึ่งมีรหัสด้านบน) ฉันเห็นหน้าว่างและสคริปต์ไม่ได้ดำเนินการ ทั้งสองมีสิทธิ์ดำเนินการ ทำไมมันไม่ทำงาน
12 bash  shell  html 

3
การกรองเอาต์พุตคำสั่งด้านบน
ฉันใช้ Mac และต้องการกรองผลลัพธ์ของtopคำสั่งสำหรับกระบวนการเฉพาะเช่นคอลัมน์ PID, COMMAND และ% CPU เท่านั้นที่จะแสดง หลังจากรับ PID ของกระบวนการฉันเรียกใช้: top -pid 1234 อย่างไรก็ตามจะแสดงมากกว่า 15 คอลัมน์สำหรับกระบวนการนั้น ฉันสามารถไพพ์เอาต์พุตของ 'คำสั่งใน awk และแสดงเฉพาะ: PID COMMAND %CPU คอลัมน์? ฉันไม่ต้องการเก็บผลลัพธ์ในไฟล์ข้อความและประมวลผล ฉันสนใจที่จะตรวจสอบกระบวนการตามเวลาจริง
12 macos  command-line  bash  awk  top 

3
วิธีหลีกเลี่ยงตัวหนอน ~ ใน Bash prompt?
ฉันต้องการลบเครื่องหมายตัวหนอนออกจากการแสดงภายในตัวแปร PS1 สตริง PS1 ปัจจุบันของฉัน: PS1="\h:\w\n$" และพรอมต์จะเป็นดังนี้: lnx-hladky:/tmp/plugtmp $ ฉันไม่ชอบที่ไดเรกทอรี $ HOME จะแสดงเป็นตัวหนอน สามารถหลีกเลี่ยงได้ไหม มันทำให้เกิดปัญหาตัวอย่าง: lnx-hladky:~/DOC $ เอกสารอธิบายว่า: \w : the current working directory, with $HOME abbreviated with a tilde \W: the basename of the current working directory, with $HOME abbreviated with a tilde มีความเป็นไปได้หรือไม่ที่จะหลีกเลี่ยงการจ่าย $ HOME ด้วยตัวย่อด้วยเครื่องหมายตัวหนอน? ฉันพบทางเดียว แต่ฉันรู้สึกว่ามันซับซ้อนเกินไป: …

6
การเน้นเป็นกลุ่มแบบกำหนดเอง
ตอนนี้ฉันกำลังแก้ไข xml อยู่และฉันทิ้งความคิดเห็นบางอย่างไว้ในสิ่งที่จะกลับมา แบบนี้ <!-- Question: bla bla --> ตอนนี้ฉันกำลังแก้ไขด้วย vim และฉันต้องการให้ vim เน้นคำถามตอนนี้เพื่อให้ฉันสามารถดูรหัสของฉันและค้นหาสถานที่ทั้งหมดที่ฉันต้องการดูได้อย่างง่ายดาย ฉันรู้ว่าฉันต้องเพิ่มบางสิ่งบางอย่างใน vimrc ของฉัน แต่ฉันคิดว่าฉันอาจกำลังค้นหาสิ่งที่ผิด ปรับปรุง ฉันพยายามใส่ในของฉัน.vimrcแต่มันไม่มีผล: syn keyword JakeAnnotation Question hi JakeAnnotation gui=bold term=bold cterm=bold อัปเดต 2 ที่จริงฉันเห็นว่าสิ่งที่ฉันทำมาก่อนมีผลบางอย่างเพราะเมื่อฉันทำสิ่งนี้: :hi มันแสดงให้ฉันเห็นทุกสิ่งที่มันกำลังเน้นและหนึ่งในรายการคือ: JakeAnnotation xxx term=bold cterm=bold ctermbg=6 ( และรูปแบบ xxx ถูกต้อง ) สิ่งนี้ทำให้ฉันรู้สึกว่าฉันไม่ได้กำหนดคำถามอย่างเหมาะสม คำถามต้องอยู่ในบรรทัดด้วยตัวเองหรือไม่? อัปเดต 3 ตกลงเพื่อโพสต์ของผู้ใช้ 22303ฉันมีสิ่งนี้ทำงาน: …

4
SCP จากเซิร์ฟเวอร์ภายนอกหนึ่งไปยังเซิร์ฟเวอร์อื่น
ฉันกำลังพยายามใช้ SCP บนเซิร์ฟเวอร์ภายในเครื่องของฉันเพื่อคัดลอกไฟล์จากเซิร์ฟเวอร์ระยะไกลหนึ่งไปยังเซิร์ฟเวอร์ระยะไกลอื่น (เซิร์ฟเวอร์ระยะไกลทั้งสองใช้พอร์ตที่กำหนดเอง (xxxx) ฉันกำลังพยายาม: scp -r -P xxxx root@xxx.xxx.xxx.111:/home/myimages/images.tar.gz root@xxx.xxx.xxx.222:/home/myimages/images.tar.gz แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: ssh: connect to host xxx.xxx.xxx.222 port 22: Connection timed out ข้อเสนอแนะใด ๆ
12 linux  bash  ssh  scp 

4
แปลงไฟล์ข้อความของบิตเป็นไฟล์ไบนารี
ฉันมีไฟล์ที่instructions.txtมีเนื้อหา: 00000000000000000000000000010011 00000010110100010010000010000011 00000000011100110000001010110011 00000000011100110000010000110011 00000000011100110110010010110011 00000000000000000000000000010011 ฉันจะสร้างไฟล์ไบนารีinstructions.binของข้อมูลเดียวกันinstructions.txtได้อย่างไร กล่าวอีกนัยหนึ่ง.binไฟล์ควรเป็น 192 บิตเดียวกันที่อยู่ใน.txtไฟล์โดยมี 32 บิตต่อบรรทัด ฉันใช้ทุบตีบน Ubuntu Linux ฉันพยายามใช้xxd -b instructions.txtแต่ผลลัพธ์นั้นยาวกว่า 192 บิต
12 linux  bash  binary-files  xxd 

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