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

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

4
ประวัติทุบตีถูกตัดเหลือ 500 บรรทัดในการเข้าสู่ระบบแต่ละครั้ง
ด้วยเหตุผลบางอย่างฉันไม่สามารถทำให้ระบบเก็บประวัติ BASH ของฉันหลังจากรีบูตได้ นี่คือส่วนที่เกี่ยวข้องของฉัน~/.bashrc: shopt -s histappend PROMPT_COMMAND='history -a; updateWindowTitle' export HISTCONTROL=ignoredups export HISTSIZE=9999 export HISTFILESIZE=999999 export HISTFILE="$HOME/.bash_history" เท่าที่ฉันสามารถบอกได้ว่าสิ่งเหล่านี้เป็นตัวเลือกที่จำเป็นทั้งหมด (ฉันรู้ว่าฉันเคยสามารถเก็บประวัติในการรีบูตหลาย ๆ ครั้งโดยที่ไม่ต้องผ่านมาทั้งหมด) อย่างไรก็ตามแม้จะมีการเพิ่มตัวเลือกเหล่านี้หลายครั้งที่รีบูตที่ผ่านมาฉันยังหลวมประวัติส่วนใหญ่ของฉันหลังจากรีบูต มันไม่ได้ว่างเปล่า แต่มันไม่ได้มี 9999 บรรทัดก่อนที่จะรีบูต ก่อนที่ใครจะบ่นใช่ฉันได้อ่านคำถามเหล่านี้แล้ว ฉันได้ดำเนินการตามคำแนะนำของพวกเขาตามที่ระบุไว้ข้างต้นส่วนที่เหลือไม่ช่วยเหลือหรือไม่เกี่ยวข้อง: Bash history loss เมื่อใช้ histappend วิธีการป้องกัน Bash จากการเปลี่ยนแปลงประวัติศาสตร์? อะไรเป็นตัวกำหนดว่าอะไรจะปรากฏในคำสั่ง bash history ฉันจะเก็บประวัติทุบตีของฉันไว้ตลอดเซสชันได้อย่างไร บันทึกประวัติทุบตีเป็นประจำ ในโอกาสปิดว่าอาจจะมีคำสั่งอื่น ๆ ที่เกี่ยวข้องในการมีคุณสามารถดูทั้งหมดของฉันที่นี่~/.bashrc แล้วฉันจะพลาดอะไร ทำไมประวัติของฉันถึงไม่ถูกบันทึก? หากใครคิดว่าไฟล์อื่นอาจมีความเกี่ยวข้องแจ้งให้เราทราบและฉันจะโพสต์มัน ฉันจะตรวจสอบโดยการทำงานgrep -i …

1
ทำไม wget ให้ข้อผิดพลาดเมื่อดำเนินการด้วย sudo แต่ทำงานได้ดีโดยไม่ต้อง?
ฉันลองคำสั่งต่อไปนี้: $ wget -q --tries=10 --timeout=20 --spider http://google.com (จากโพสต์ดังนั้นฉันต้องการตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของฉันในทุบตี) ฉันได้รับผลลัพธ์ต่อไปนี้: Spider mode enabled. Check if remote file exists. --2015-09-28 09:55:50-- http://google.com/ Connecting to 127.0.0.1:3128... connected. Proxy request sent, awaiting response... 302 Found Location: http://www.google.de/?gfe_rd=cr&ei=k_IIVreaN-yH8Qfe1Yu4CA [following] Spider mode enabled. Check if remote file exists. --2015-09-28 09:55:50-- http://www.google.de/?gfe_rd=cr&ei=k_IIVreaN-yH8Qfe1Yu4CA Connecting to 127.0.0.1:3128... connected. …
21 bash  sudo  wget 

3
วิธีการป้องกันรหัสผ่านหรือข้อมูลที่ละเอียดอ่อนอื่น ๆ จากการถูกเก็บไว้ในประวัติทุบตีเมื่อใช้ grep?
ฉันต้อง grep เมื่อเร็ว ๆ นี้สำหรับรหัสผ่านที่อาจถูกบันทึกไว้ในไฟล์ ฉันไม่ต้องการให้บรรทัดนั้นปรากฏในประวัติทุบตี ฉันจะป้องกันรหัสผ่านหรือข้อมูลที่ละเอียดอ่อนอื่น ๆ จากการถูกเก็บไว้ในประวัติทุบตีเมื่อใช้ grep ได้อย่างไร? ตัวอย่างเช่นฉันจะได้รับ grep เพื่ออ่านรูปแบบจาก stdin หรือคอนโซลได้อย่างไร
21 bash  grep 

8
แนวปฏิบัติที่เหมาะสมที่สุดสำหรับนามแฝงคำสั่ง rm และทำให้ปลอดภัยยิ่งขึ้น
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Super User อพยพ 7 ปีที่ผ่านมา บางเวลาที่ผ่านมาฉันลบโฟลเดอร์ในบ้านของฉันอย่างผิดพลาดเพราะฉันวิ่งrm -rf *บนเทอร์มินัลที่ไม่ถูกต้องซึ่งไดเรกทอรีการทำงานคือโฟลเดอร์บ้าน! ฉันหวังว่าฉันจะมีนามแฝงสำหรับrmคำสั่ง แต่มันไม่ใช่กรณี rmตอนนี้ผมกำลังวางแผนที่จะทำให้สคริปต์เป็นชื่อแทนสำหรับ คุณมีแนวทางปฏิบัติที่ดีที่สุดที่จะแนะนำหรือไม่? ขอบคุณ
21 bash  shell  unix  script  rm 

2
ฟังก์ชันของเครื่องหมายดอกจันเป็นคำสั่งแบบสแตนด์อโลนใน Unix คืออะไร
ฉันสับสนใน terminal ใน Red Hat Linux และเมื่อฉันพิมพ์เครื่องหมายดอกจัน ( *) ตามด้วย return และมันรันหนึ่งในโปรแกรมในไดเรกทอรีของฉัน ทำไม? การคาดเดาที่ดีที่สุดของฉันคือ Unix ถือว่ามันเป็นสัญลักษณ์แทนดังนั้นจึงเรียกใช้งานโปรแกรมตัวอักษรตัวแรก เนื่องจากmy_program.exeและone_of_my_programs.programสามารถดำเนินการได้โดยเพียงแค่พิมพ์ชื่อของไฟล์ผู้ดำเนินการตัวแทนจะแสดงไฟล์ทั้งหมดที่เป็นไปได้ เนื่องจากโปรแกรมเป็นตัวอักษรตัวแรก, Unix รันมัน นี่เป็นการตัดสินใจที่ถูกต้องหรือไม่?

2
ฉันจะเชื่อมสตริงเข้าด้วยกันในสคริปต์ทุบตีได้อย่างไร
ฉันจะเชื่อมสตริงและตัวแปรเข้าด้วยกันในเชลล์สคริปต์ได้อย่างไร? stringOne = "foo" stringTwo = "AnythingButBar" stringThree = "? และ?" ฉันต้องการที่จะแสดงผล "foo และอะไรก็ได้ ButBar"

2
วิธีออกจาก SSH ของคนจรจัดในอาคาร
การติดตาม README ในที่เก็บนี้ฉันควรจะรักษาความปลอดภัยให้กับเชลล์ในเครื่องเสมือนที่ฉันสร้าง แต่เมื่อฉันทำเสร็จแล้วฉันจะออกไปได้อย่างไร นี่คือคำแนะนำ: $ git clone git://github.com/honza/django-chef.git $ cd django-chef # add yourself to the "users" array in the Vagrantfile $ sudo echo "127.0.0.1 example.example.com" >> /etc/hosts $ vagrant up $ fab vagrant:honza bootstrap # replace with your name $ vagrant ssh # OK, cool $ run # …
21 linux  bash  ssh  vagrant 

4
เหตุใดผลลัพธ์ของบางโปรแกรมของ Linux จึงไม่ใช่ทั้ง STDOUT และ STDERR
เหตุใดผลลัพธ์ของบางโปรแกรมของ Linux จึงไม่ใช่ทั้ง STDOUT และ STDERR ที่จริงแล้วฉันต้องการทราบวิธีการจับเอาท์พุทของโปรแกรมทั้งหมดอย่างน่าเชื่อถือไม่ว่าจะใช้ 'สตรีม' ปัญหาที่ฉันมีคือบางโปรแกรมดูเหมือนจะไม่ยอมให้มีการบันทึกผลลัพธ์ ตัวอย่างคือคำสั่ง 'เวลา': time sleep 1 2>&1 > /dev/null real 0m1.003s user 0m0.000s sys 0m0.000s หรือ time sleep 1 &> /dev/null real 0m1.003s user 0m0.000s sys 0m0.000s เหตุใดฉันจึงเห็นเอาต์พุตทั้งสองครั้ง ผมคาดว่ามันทุกคนที่จะได้รับการประปาเข้า/ dev / null สตรีมเอาต์พุตใดที่ใช้เวลาและฉันจะไพพ์ลงในไฟล์ได้อย่างไร วิธีหนึ่งในการแก้ไขปัญหาคือสร้างสคริปต์Bashตัวอย่างเช่นcombine.shบรรจุคำสั่งนี้: $@ 2>&1 จากนั้นสามารถบันทึกเอาต์พุตของ 'เวลา' ในวิธีที่ถูกต้อง: combine.sh time sleep …
21 linux  bash  gnu  stdout  stderr 

7
วิธีสร้างข้อความสั่งที่ตรวจสอบว่ามีบางสิ่งที่หารด้วยอย่างอื่นโดยไม่เหลือ (BASH)
#!/bin/bash Echo “Enter a number” Read $number If [$number ] ; then Echo “Your number is divisible by 5” Else Echo “Your number is not divisible by 5” fi คำสั่ง if [$ number] คือสิ่งที่ฉันไม่รู้วิธีตั้งค่า
21 unix  bash  script 

6
มีบรรทัดคำสั่งของ Windows ที่มีการเติมข้อความอัตโนมัติเหมือนประวัติอัจฉริยะ / คำสั่งแบบสมาร์ทหรือไม่?
ฉันเพิ่งเริ่มใช้ bash และค้นพบคุณสมบัติที่ยอดเยี่ยมบางอย่าง (ไม่จำเป็นต้องออกจากกล่อง แต่สามารถกำหนดค่าได้): ลูกศรขึ้น / ลงรองรับการทำให้สมบูรณ์บางส่วน: พิมพ์ "git" กดลูกศรขึ้นแล้วคุณจะสามารถเรียกดูคำสั่งล่าสุดที่ขึ้นต้นด้วย "git" (แม้ในช่วงก่อนหน้านี้!) Ctrl-R จะค้นหาประวัติคำสั่งของคุณ (เรียกว่า reversed-i-search ด้วยเหตุผลบางอย่าง) อีกหลายคนที่ฉันไม่ทราบฉันแน่ใจ cmd.exe เป็นทางเลือกที่ดีสำหรับ Windows ที่สนับสนุนคุณสมบัติดังกล่าวหรือไม่ ฉันได้อ่านคำตอบยอดนิยมสำหรับคำถามนี้แล้ว แต่ไม่พบว่ามีตัวเลือกยอดนิยมใดสนับสนุนหรือไม่

3
ฉันจะเริ่มต้นเซสชันหลายหน้าจอโดยอัตโนมัติได้อย่างไร
ฉันกำลังพยายามสร้างคำสั่งที่เรียกใช้screenสร้างสี่เซสชันที่มีชื่อแตกต่างกันและเรียกใช้คำสั่งต่าง ๆ สี่คำ ฉันรู้วิธีการทำสิ่งนี้ด้วยตนเอง: 1. screen 2. ./command1 args 3. CTRL-A :sessionname Session 1 4. CTRL-A C 5. (GOTO 2) ฉันสามารถทำได้ด้วยสคริปต์ทุบตีหรืออะไรบางอย่าง? ฉันจะทำอย่างไร
21 linux  bash  gnu-screen 

2
คำเตือน: ไม่ได้เปิดใช้งานการแก้ไขสาย
ฉันพบคำสั่งที่มีประโยชน์นี้bind -x '"\C-r"':resetเพื่อล้างข้อมูลเทอร์มินัล แต่ฉันต้องการสร้างสคริปต์ทุบตีง่ายๆ: #!/bin/bash bind -x '"\C-r"':reset เอาท์พุท: alfred@alfred-laptop:~/bash$ ./bind ./bind: line 2: bind: warning: line editing not enabled มีคนช่วยอธิบายได้ไหม: ฉันจะแก้ไขสิ่งนี้ได้อย่างไร อะไรwarning: line editing not enabledหมายถึง?
21 bash 

3
ทำไมทำ; หลังจาก & ส่งคืนข้อผิดพลาดโทเค็นที่ไม่คาดคิดใน bash หรือไม่
ฉันได้รับข้อผิดพลาด: bash: ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `; ' เนื่องจากคำสั่งต่อไปนี้: evince foo.pdf bar.pdf &; emacs foo.tex & ฉันผิดกฎหมายหรือไม่ที่จะแยกคำสั่งต่าง ๆ ด้วย;เมื่อใช้&แบ็คกราวน์งาน? หรือมีเหตุผลอื่นที่ไม่ได้ผล? ขอขอบคุณ.
21 linux  bash 

6
ป๊อปอัปแจ้งเตือนเมื่อเวลาถึง 16:00 น.
ฉันสงสัยว่ามีวิธีที่จะแสดงการแจ้งเตือนหรือบางสิ่งบางอย่างจากบรรทัดคำสั่งในเวลาที่กำหนด เหมือนตอนที่นาฬิกานัดเวลา 16:00 น. มันจะดีถ้ามันจะแสดงมันโดยใช้เครื่องมือแจ้งเตือน - osd ของ Ubuntu:

5
เปลี่ยนคีย์ลัด bash เช่น Ctrl-C หรือไม่
ฉันใช้ Kubuntu 10.04 ฉันต้องการเปลี่ยนปุ่มลัดมาตรฐานบางอย่างสำหรับทุบตี (เทอร์มินัล) นี่คือทางลัดที่ฉันต้องการตั้งค่า: Ctrl- Cเพื่อคัดลอกข้อความที่เลือกในเครื่องไปยังคลิปบอร์ด Ctrl- Vเพื่อวางจากคลิปบอร์ดลงในเครื่อง Ctrl- Zเพื่อเลิกทำการแก้ไขในบรรทัดปัจจุบันในเทอร์มินัล Ctrl- Shift- C(หรือดียิ่งขึ้น Super- C) เพื่อยกเลิกคำสั่ง Ctrl- Shift- Z(หรือSuper- Z) เป็นคำสั่งพื้นหลัง Ctrl- Shift- V(หรือSuper- V) จะเป็นคำสั่งแทรกตัวอักษร (หรืออะไรก็ตามCtrl- zทำมาก่อน) ฉันจะทำการเปลี่ยนแปลงเหล่านี้ได้อย่างไร BTW ฉันชอบวิธีที่เทอร์มินัลทำงานบน OS X การใช้คีย์คำสั่งทำให้คำสั่ง copy / paste ทั้งหมดสอดคล้องกันมาก (ไม่เหมือนกับสิ่งอื่น ๆ ใน OS X) PS ฉันอ่านหน้าคนทุบตีและมันก็ไม่ได้ช่วย มันทำให้ฉันมีความคิด แต่ฉันต้องการตัวอย่างที่เฉพาะเจาะจงสำหรับชุดค่าผสมข้างต้น ขอบคุณ
21 linux  bash  inputrc 

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