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

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

2
คำสั่งสำหรับการลบไฟล์ชั่วคราวที่ลงท้ายด้วย ~
หลายวันที่ผ่านมาฉันพบชื่อแทนทุบตีที่มีประโยชน์นี้ (เนื้อหาของ~ / .bash_aliases ) # aliases # finds temporary files ending with '~' and deletes them alias rm~='find . -name '*~' -print0 | xargs -0 /bin/rm -f' ตอนนี้ฉันพยายามใช้rm~หลังจากcdไปยังไดเรกทอรีที่มี 3 ไฟล์ที่ลงท้ายด้วย~ ฉันพบข้อผิดพลาดนี้ในเทอร์มินัลและไฟล์ไม่ถูกลบ find: paths must precede expression: 1n.in~ Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] นอกจากนี้เมื่อฉันลองrm~จาก/home/meดูเหมือนว่าจะไม่ทำอะไรเลย หรืออาจใช้เวลานาน …
15 bash 

2
วิธีส่งผลลัพธ์ของ bc ไปยังตัวแปร
ฉันกำลังเขียนสคริปต์และฉันต้องการส่งผ่านผลลัพธ์bcไปยังตัวแปร ฉันได้ประกาศตัวแปร 2 ตัว ( var1และvar2) แล้วให้ค่าเหล่านั้น ในสคริปต์ของฉันฉันต้องการส่งผลลัพธ์จากbcไปยังตัวแปรอื่นพูดvar3เพื่อให้ฉันสามารถทำงานกับvar3การคำนวณอื่น ๆ ได้ จนถึงตอนนี้ฉันสามารถเขียนผลลัพธ์ไปยังไฟล์ซึ่งไม่ใช่สิ่งที่ฉันกำลังมองหาและนอกจากนี้ฉันสามารถสะท้อนผลลัพธ์ในเทอร์มินัล แต่ฉันต้องการส่งผลลัพธ์ไปยังตัวแปรในขณะนั้น ฉันสามารถทำงานกับตัวแปรนั้นได้ echo "scale=2;$var1/var2" | bc


1
แยกออกจากไฟล์ tar - พฤติกรรมเริ่มต้น: เขียนทับหรือเก็บ?
ในเอกสารฉันอ่านว่าtarมีตัวเลือกต่อไปนี้เมื่อแตกไฟล์จาก tarball: -k, --keep-old-files don't replace existing files when extracting --overwrite overwrite existing files when extracting จะใช้อันไหนเป็นค่าเริ่มต้น
15 bash 

2
ทำไมฟังก์ชั่นของฉันไม่ได้รับการประเมินใหม่ใน PS1
ฉันกำลังพยายามให้ส่วนหนึ่งของพรอมต์ของฉันตั้งค่าแบบไดนามิกโดยฟังก์ชั่นดังนั้นในฉันของ.bashrcฉัน: asdf () { echo -n $(pwd) } PS1="\u@\h:\w $(asdf)\$ " การเปิดเปลือกให้สิ่งที่ฉันคาดหวังในตอนแรก: $ bash darthbith@server:~/test /home/darthbith/test$ อย่างไรก็ตามเมื่อฉันเปลี่ยนไดเรกทอรีส่วนที่กำหนดโดยฟังก์ชั่นจะไม่เปลี่ยนแปลง: darthbith@server:~/test /home/darthbith/test$ cd ~/test2 darthbith@server:~/test2 /home/darthbith/test$ เป้าหมายที่แท้จริงของฉันคือการใช้git-prompt.shสคริปต์เพื่อแสดงสาขาของที่เก็บ git ของฉันเมื่อฉันอยู่ในที่เดียวที่มีสีสวยและทุกอย่าง แต่ปัญหาคือมันไม่เคยอัปเดตชื่อสาขาเมื่อฉันเปลี่ยนที่เก็บ ตัวอย่างเล็ก ๆ น้อย ๆ ข้างต้นคือการทำสำเนาที่ง่ายที่สุดที่ฉันสามารถหาได้สำหรับคำถามของฉัน .bashrcเส้นที่ผมจะต้องบูรณาการคอมไพล์สคริปต์พรอมต์: source ~/.git-prompt.sh PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1)\$ "

4
Tomcat ไม่รู้จัก JAVA_HOME
ฉันได้ติดตั้ง Ubuntu 14.04 Server แล้วแยก JDK1.8u5 และ Tomcat7 และเพิ่มไฟล์ต่อไปนี้เป็น. profile (ฉันลองเพิ่มไปยัง. bashrc ด้วยผลลัพธ์ที่คล้ายกัน [ไม่ใช่ -]): export JAVA_HOME=/opt/java/jdk1.8.0_05 export PATH=$PATH:$JAVA_HOME/bin เมื่อฉันเรียกฉันจะได้รับผลที่คาดหวังของecho $JAVA_HOME /opt/java/jdk1.8.0_05ฉันยังสามารถเรียกใช้java -versionและรับการตอบสนองที่ถูกต้องจาก Java ดีมาก ดังนั้นตอนนี้ฉันพยายามเริ่มต้น Tomcat (พยายาม catalina.sh ด้วย) และฉันได้รับสิ่งต่อไปนี้: user@ubuntu:~$ sudo /opt/tomcat7/apache-tomcat-7.0.53/bin/startup.sh Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment …

2
จะแสดงรายการคำค้นหาเชลล์ทั้งหมดได้อย่างไร?
$ type if if is a shell keyword ฉันไม่รู้จักคำหลักของเชลล์อื่น ๆ มีคำสั่งรายการคำหลักเปลือก bash ทั้งหมดหรือไม่ หมายเหตุ: help -mแสดงทั้งเชลล์บิลด์และคีย์เวิร์ดเชลล์

2
เทอร์มินัลวิธีการออก --More— รายการ
ฉันใช้การเติมข้อความอัตโนมัติจำนวนมากในเทอร์มินัลเช่นสำหรับcpคำสั่ง แต่บางครั้งเมื่อฉันใส่ในไดเรกทอรีสำหรับcpคำสั่งและกดTabรายการของไฟล์นั้นยาวจน Ubuntu แยกส่วนของรายการแล้วรอการป้อนข้อมูลคีย์ก่อนเรียงรายการส่วนที่เหลือของไฟล์ทีละรายการ . คุณสมบัตินี้อยู่ใกล้กับไร้ประโยชน์เพราะคุณไม่เคยรู้ว่ามีไฟล์เหลืออยู่เท่าใดและเกือบจะจบลงด้วยข้อผิดพลาด มีวิธีที่จะออกจากรายการนี้และกลับไปที่cpคำสั่งของฉันหรือฉันต้องกดCtrl+ Cและเริ่มพิมพ์cpคำสั่งของฉันอีกครั้ง?

1
เปิดไฟล์จากเทอร์มินัลเท่านั้นโดยพิมพ์ชื่อ
ฉันรู้ว่าxdg-openจะเปิดไฟล์จากเทอร์มินัลในแอปพลิเคชันที่ผู้ใช้ต้องการเช่นนี้: xdg-open filename แต่ฉันสงสัยว่าฉันจะเปิดไฟล์จากไดเรกทอรีปัจจุบันในแอปพลิเคชันเริ่มต้นได้อย่างไรโดยการพิมพ์: filename ตามมาด้วยEnterแน่นอน ไม่มีอะไรเพิ่มเติม

3
configure: ข้อผิดพลาด: คอมไพเลอร์ C ไม่สามารถสร้างไฟล์เรียกทำงานได้
ผมพยายามที่จะติดตั้ง RVM \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfilesใช้ มันทำงานได้ดีจนกระทั่งฉันได้รับข้อผิดพลาดในการกำหนดค่า: Error running './configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared', please read /home/nishant/.rvm/log/1379591052_ruby-2.0.0-p247/configure.log There has been an error while running configure. Halting the installation. ต่อไปนี้เป็นเนื้อหาของไฟล์บันทึกที่กล่าวถึง: [2013-09-19 17:15:58] ./configure current path: /home/nishant/.rvm/src/ruby-2.0.0-p247 command(4): ./configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared checking build system type... i686-pc-linux-gnu …
15 12.04  12.10  bash  gcc 

4
วิธีที่เหมาะสมในการเพิ่มบัญชีผู้ใช้ผ่านสคริปต์ทุบตี
นี่คือรหัสสคริปต์ที่ฉันใช้ตอนนี้: getent group $MYGROUP if [ $? -ne 0 ] ; then sudo su -c "groupadd $MYGROUP" fi sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP" วิธีนี้ใช้ได้ดีกับ openSuse แต่มีปัญหาหลายประการเกี่ยวกับบัญชีผู้ใช้ที่สร้างบนUbuntuดังนั้นฉันจึงขอความช่วยเหลือจากที่นี่ เทอร์มินัลพรอมต์ไม่ได้ตั้งค่า ( echo $PS1ไม่ส่งคืนอะไร) ปุ่มลูกศรและแป้นแท็บทำงานไม่ถูกต้องในเครื่องเทอร์มินัล ดูเหมือนว่ารหัสผ่านจะไม่ทำงาน (แม้ว่าฉันจะยังไม่ชัดเจนว่าปัญหานี้คืออะไร) สิทธิ์ / etc / sudoers ที่กำหนดไว้สำหรับผู้ใช้ใหม่นี้จะไม่ได้รับเกียรติ ถ้าฉันจะสร้างผู้ใช้ด้วยตนเองadduser(แทนที่จะเป็น useradd) ฉันไม่มีปัญหาเหล่านี้ใน Ubuntu …
15 bash  scripts  users  adduser 

4
วิธีรับชื่อโฮสต์โดยใช้ terminal command-line
ฉันใช้ arp-scan ใน terminal เพื่อรับ ipaddress เช่นเดียวกับที่อยู่ mac มีอยู่แล้วฉันจะได้รู้จักชื่อโฮสต์ของ ipaddress ที่มีใน terminal หรือไม่ ตัวอย่างเช่นมี A-pc และ B-pc และ C-pc เชื่อมต่อกับเราเตอร์เดียวกัน ฉันต้องการชื่อโฮสต์แบบเดียวกับที่ฉันได้ผลลัพธ์ในการสแกน arp มีคำสั่งอะไรบ้าง? โปรดตอบกลับสิ่งนี้ ขอขอบคุณ. PS: ฉันไม่ต้องการใช้ wireshark หรือ s / w อื่น ๆ มันจะเป็นประโยชน์หากมีคำสั่ง terminal


1
วัตถุประสงค์ของ shopt -s extglob คืออะไร
ฉันต้องการลบไฟล์ทั้งหมดจากไดเรกทอรียกเว้นไฟล์เดียว ผมพบว่าวิธีการแก้ปัญหาของฉันที่นี่ วิธีนี้ใช้คำสั่ง shopt -s extglob ฉันต้องการที่จะรู้ว่าสิ่งที่คำสั่งนี้กำลังทำอะไรอยู่บางความรู้ส่วนหลัง ฉันยังเพิ่มความคิดเห็นในคำตอบนี้ แต่ยังไม่ได้รับคำตอบจนถึงตอนนี้ ในฐานะผู้ใช้ใหม่ของ Ubuntu ฉันอยากรู้ว่าคำสั่งนี้กำลังทำอะไร

3
วิธีตรวจสอบรหัสผ่านที่ป้อนเป็นรหัสผ่านที่ถูกต้องสำหรับผู้ใช้รายนี้?
สถานการณ์: ในสคริปต์ทุบตีฉันต้องตรวจสอบว่ารหัสผ่านที่กำหนดโดยผู้ใช้เป็นรหัสผ่านของผู้ใช้ที่ถูกต้องหรือไม่ ฉันคิดว่าฉันมีผู้ใช้ A พร้อมรหัสผ่าน PA .. ในสคริปต์ฉันถามผู้ใช้ A ให้ป้อนรหัสผ่านดังนั้นวิธีการตรวจสอบว่าสตริงที่ป้อนเป็นรหัสผ่านของเขาจริง ๆ หรือไม่ ...
15 bash 

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