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

คำถามเฉพาะของ Bourne อีกครั้งของเชลล์ใน GNU เมื่อเทียบกับเชลล์ Bourne / POSIX อื่น ๆ สำหรับคำถามเกี่ยวกับเชลล์ Unix โดยทั่วไปให้ใช้ / เชลล์แท็กแทน

1
ฉันจะย้าย. bash_profile ออกจากบ้านได้อย่างไร
ฉันต้อง.bash_profileซิงค์กับ Dropbox วิธีที่ง่ายที่สุดที่ฉันคิดได้คือ "เปลี่ยนเส้นทาง" เชลล์เพื่อค้นหา.bash_profileในโฟลเดอร์ที่กำหนดเอง เป็นไปได้ไหม? หรือมีวิธีแก้ปัญหาที่ดีกว่า?

3
จะเปรียบเทียบไฟล์ xml สองไฟล์ที่มีข้อมูลเหมือนกันในบรรทัดที่ต่างกันได้อย่างไร
ฉันมีสองไฟล์มีข้อมูลเหมือนกัน แต่อยู่ในบรรทัดที่ต่างกัน ไฟล์ 1: <Identities> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> ไฟล์ 2: <Identities> <Identity> <Id>089612381523032011Comcast.USR1JR</Id> <UID>94701_account1</UID> <DisplayName>account1</DisplayName> <FirstName>account1</FirstName> <LastName>94701</LastName> <Role>S</Role> <LoginStatus>C</LoginStatus> </Identity> <Identity> <Id>048206031415072010Comcast.USR8JR</Id> <UID>ccp_test_79</UID> <DisplayName>JOSH CCP</DisplayName> <FirstName>JOSH</FirstName> <LastName>CCP</LastName> <Role>P</Role> <LoginStatus>C</LoginStatus> </Identity> </Identities> ถ้าฉันใช้diff file1 …

2
วิธีการทำกรณีที่มีข้อโต้แย้งซีดีไม่สำคัญ?
บางครั้งในขณะที่เข้าถึงไดเรกทอรีต่างๆมันเกิดขึ้นส่วนใหญ่เวลาที่ฉันจำชื่อหรืออย่างน้อยส่วนหนึ่งของชื่อของไดเรกทอรีภายใต้ระบบ Linux ของเรา แต่บางไดเรกทอรีมีชื่อเริ่มต้นด้วยตัวอักษรตัวแรกหรือหนึ่งในตัวละครที่อยู่ตรงกลางของชื่อตัวพิมพ์ใหญ่ ใครสามารถแนะนำฉันจะทำให้ข้อโต้แย้งดังต่อไปนี้cdกรณีคำสั่ง INSENSITIVE เช่นว่าถ้าฉันทำcd BackupDirectoryหรือcd backupdirectoryมันสามารถป้อนชื่อไดเรกทอรี BackupDirectory แน่นอนว่าฉันไม่ต้องการควงสิ่งต่าง ๆ สำหรับผู้ใช้รายอื่นดังนั้นหากเป็นไปได้ข้างต้นเป็นไปได้หรือไม่ว่าการเปลี่ยนแปลงนั้นสามารถนำไปใช้กับเซสชันที่ฉันกำลังใช้และไม่ส่งผลกระทบต่อผู้ใช้คนอื่น ๆ ? ตกลงฉันพยายาม set completion-ignore-caseแต่ก็ไม่ได้ผล มันช่วยได้ถ้าฉันพิมพ์cd bและTabหรือEsc Escเติมชื่อไดเรกทอรีโดยไม่สนใจขนาดตัวพิมพ์ แต่สิ่งที่ฉันต้องการคือถ้าฉันทำcd backupdirectoryมันก็แค่เพิกเฉยต่อคดีและเข้าไปBackupDirectoryในตัวของมันเอง

2
ทำไม --text =“ $ @” ผ่านคำแรกเท่านั้น
เมื่อฉันเรียกใช้สคริปต์ต่อไปนี้ด้วยข้อโต้แย้งบางอย่างเช่นarg1 arg2 arg3: #!/bin/bash zenity --entry --text="$@" Zenity สร้างกล่องโต้ตอบรายการด้วยข้อความนี้: "arg1" ในขณะที่ฉันคาดหวัง "arg1 arg2 arg3" ถ้าฉันใช้ตัวแปรเช่นสคริปต์ต่อไปนี้มันจะแสดงข้อโต้แย้งทั้งหมดสำหรับข้อความรายการ #!/bin/bash text="$@" zenity --entry --text="$text" ความแตกต่างระหว่างสคริปต์เหล่านี้คืออะไร? ทำไมคนแรกแทนที่$@ด้วยอาร์กิวเมนต์แรกเท่านั้น?
9 bash  shell  quoting 

2
การร้องขออินพุตของผู้ใช้ขณะอ่านบรรทัดไฟล์ตามบรรทัด
สำหรับคลาสฉันต้องเขียนสคริปต์ Bash ที่จะเอาท์พุทจากispellและเมื่อฉันลองและขอให้ผู้ใช้ป้อนข้อมูลในขณะที่ลูปมันก็แค่บันทึกบรรทัดถัดไปของไฟล์เป็นอินพุตของผู้ใช้ ฉันจะขอผู้ใช้ในขณะที่วนรอบได้อย่างไร? #!/bin/bash #Returns the misspelled words #ispell -l < file #define vars ISPELL_OUTPUT_FILE="output.tmp"; INPUT_FILE=$1 ispell -l < $INPUT_FILE > $ISPELL_OUTPUT_FILE; #echo a new line for give space between command #and the output generated echo ""; while read line; do echo "'$line' is misspelled. Press "Enter" to keep"; …

2
การบันทึกประวัติทุบตีจาก Konsole หลายอันทำงานไม่ถูกต้อง
ฉันใช้เทอร์มินัล Konsole หลายอัน และฉันต้องการให้คำสั่งทั้งหมดที่ฉันพิมพ์ในทุก ๆ เทอร์มินัลถูกบันทึกไว้ในประวัติคำสั่งดังนั้น konsole ที่ฉันเปิดถัดไปจะมีทั้งหมด เพื่อป้องกันไม่ให้แต่ละเทอร์มินัลเขียนทับคำสั่งประวัติเทอร์มินัลอื่นฉันได้ตั้งค่าต่อไปนี้ใน.bashrc # avoid duplicates and commands starting with space export HISTCONTROL=ignoredups:erasedups:ignorespace # append history entries.. shopt -s histappend #My machine reboots without warning sometimes.Hence to save commands instantaneously. export PROMPT_COMMAND="history -a" export HISTSIZE=1000 PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1 ฉันให้บรรทัดสุดท้ายเพื่อดูหมายเลขคำสั่งในพรอมต์ของฉัน หมายเลขคำสั่ง ไม่เคยไปเกิน 600 แต่ยังคงคำสั่งเก่าของฉันบางส่วนจะหายไปจากประวัติศาสตร์ มีหลายคำสั่งที่ให้ซ้ำ ๆ …

5
วิธีนับแถวที่เรียงลำดับโดยเขตข้อมูลแรกใน bash
นี่คือตัวอย่างจาก INPUT: ... #################### Bala Bela;XXXXXX12345;XXXXXX12345678;A SERVER345Z3.DOMAIN.com0 SERVER346Z3.DOMAIN.com0 SERVER347Z3.DOMAIN.com0 SERVER348Z3.DOMAIN.com0 ssh-dss ...pubkeyhere... #################### Ize Jova;XXXXXX12345;XXXXXX12345;A SERVER342Z3.DOMAIN.com0 SERVER343Z3.DOMAIN.com0 SERVER345Z3.DOMAIN.com0 ssh-rsa ...pubkeyhere... ... และนี่คือตัวอย่างจากผลลัพธ์ที่ฉันต้องการ: Bala Bela;XXXXXX12345;XXXXXX12345678;A 4 Ize Jova;XXXXXX12345;XXXXXX12345;A 3 ดังนั้นฉันต้องการ OUTPUT จาก INPUT เพื่อที่ฉันจะได้เห็นว่ามีกี่แถวที่ขึ้นต้นด้วย "SERVER" ไปถึงผู้ใช้ที่ให้ไว้ (เช่น: "Bala Bela; XXXXXX12345; XXXXXX12345678; A") ฉันจะทำสิ่งนี้ในทุบตีได้อย่างไร

2
ทำไม Bash ไม่พบคำสั่งแม้ว่าจะระบุ $ PATH อย่างถูกต้องหรือไม่
ฉันกำลังระบุพา ธ ไปยังคำสั่งของฉันในไฟล์/ etc / profile : export PATH=$PATH:/usr/app/cpn/bin คำสั่งของฉันอยู่ใน: $ which ydisplay /usr/app/cpn/bin/ydisplay ดังนั้นเมื่อฉันแสดงเอาต์พุต "echo $ PATH" ดูเหมือนว่า: $ echo $PATH ...:/usr/app/cpn/bin และทุกอย่างก็โอเค แต่เมื่อฉันพยายามที่จะเปิดคำสั่งของฉันผ่าน SSH ฉันได้รับข้อผิดพลาด: $ ssh 127.0.0.1 ydisplay $ bash: ydisplay: command not found แต่เส้นทางของฉันยังคงอยู่: $ ssh 127.0.0.1 echo $PATH ...:/usr/app/cpn/bin โปรดอธิบายฉันว่าเหตุใด Bash ไม่สามารถหา ydisplay ในระหว่างเซสชัน SSH …
9 linux  bash  shell  ssh  path 

2
SSH LocalCommand เมื่อออกจาก
ใน~/.ssh/configคุณสามารถใช้LocalCommandคำสั่งเพื่อดำเนินการคำสั่งท้องถิ่นเมื่อใดก็ตามที่คุณเชื่อมต่อกับเครื่องระยะไกลผ่าน SSH แต่ฉันจะรันคำสั่งได้อย่างไรเมื่อฉันออกจากการเชื่อมต่อ SSH ดูเหมือนว่าไฟล์ * .bashrc / .bash_profile * จะไม่ได้รับการจัดหาเมื่อการเชื่อมต่อสิ้นสุดลงหรือถูกปิด
9 bash  ssh  osx 

5
วิธีเพิ่มบรรทัดลงในไฟล์ที่มีสิทธิ์การเขียนรูทเท่านั้นและดำเนินการสคริปต์ต่อไป
ฉันพยายามเรียนรู้สคริปต์ทุบตี ฉันทำงานเกี่ยวกับปัญหาการปฏิบัติและ ณ จุดหนึ่งฉันต้องเพิ่มบรรทัดลงในไฟล์ที่ต้องrootได้รับอนุญาตในการเขียน รหัสมีลักษณะดังนี้: # some code echo "add this line to the code" >> fileName # some code เป็นไปได้ไหมที่สคริปต์จะขอรหัสผ่านรูทตรวจสอบรหัสผ่านและการรับรองความถูกต้องที่ประสบความสำเร็จในการแก้ไขไฟล์? สคริปต์ควรกลับสู่โหมดผู้ใช้และดำเนินการคำสั่งต่อไป

1
เล่นเสียง / การแจ้งเตือนเป็นภาษาฟินช์มากกว่า ssh บนเครื่องท้องถิ่นของฉัน
ดังนั้นฉันมีfinchไคลเอนต์บรรทัดคำสั่งการแชท (คิดว่าพิดจิ้น) ทำงานบนเครื่องระยะไกลที่ฉันsshเป็น มีการแจ้งเตือนเสียงและสามารถเรียกใช้คำสั่งเมื่อมีเหตุการณ์บางอย่างเกิดขึ้นให้คุณผ่านไฟล์เสียงในขณะที่finch %sเช่นmplayer %s จากเครื่องระยะไกลเมื่อมีการแจ้งเตือนเกิดขึ้นฉันสามารถเรียกใช้คำสั่งชนิดใดเพื่อเล่นสิ่งที่%sอยู่ในเครื่องท้องถิ่นของฉัน
9 ssh  bash  audio 

4
ค้นหาไฟล์ที่มีชื่อเหมือนกัน แต่มีเนื้อหาต่างกันหรือไม่?
ฉันต้องการสร้างรายการไฟล์ที่มี: ชื่อเดียวกัน เนื้อหาที่แตกต่าง ในไดเรกทอรี (รวมถึงไดเรกทอรีลูกและเนื้อหาทั้งหมด) วิธีการทำ? ทุบตี Perl อะไรก็ได้ ดังนั้นไฟล์สองไฟล์ที่มีชื่อเหมือนกันและเนื้อหาเดียวกันไม่ควรแสดงขึ้นมา

2
การลบไฟล์สคริปต์ออกจากภายในสคริปต์นั้นปลอดภัยหรือไม่
fooลองนึกภาพผมมีสคริปต์ ควรรันครั้งเดียวเมื่อผู้ใช้ลงชื่อเข้าใช้และไม่จำเป็นหลังจากเรียกใช้สำเร็จ คำถามของฉัน: ปลอดภัยไหมที่จะลบไฟล์สคริปต์ออกจากภายในสคริปต์? เช่น: #!/bin/bash # do something ... # if successful rm /path/to/foo exit 0

3
วิธีการแยกเอาท์พุทและเก็บไว้ในอาร์เรย์?
นี่คือผลลัพธ์: 3,aac-lc, 93.8, aaclc, 77.3, h.264, 1024.6, h.264, 1029.1, 31, 31, 0,0,0.000000,31,31,0,0,0.000000,7,0,0,0.000000,30,1280 720,10,0,0,0.000000,30,1280 720 ฉันลองกับสถานการณ์ 2: การจัดเก็บในอาร์เรย์ @arr=split(',',$stats); echo "statistics: $stats" การจัดเก็บในตัวแปร echo $stats | cut -d ',' -f | read s1 echo $s1 แต่สถานการณ์ไม่ทำงาน
9 bash 

2
Bash: ใช้นามแฝงในตัวแปร
ฉันกำลังเขียนสคริปต์ทุบตีที่เรียกใช้อาร์กิวเมนต์แต่ละตัวเป็นคำสั่ง สิ่งนี้ใช้ได้กับคำสั่งในของฉันPATHแต่ไม่ใช่สำหรับนามแฝง ฉันสามารถเรียกนามแฝงในสคริปต์โดยตรง แต่ฉันไม่สามารถเรียกนามแฝงที่ถูกส่งผ่านเป็นอาร์กิวเมนต์ได้ ปัญหา (ฉันถือว่า) เป็นนามแฝงที่จะขยายก่อนตัวแปร มีวิธีเรียกใช้นามแฝงจากตัวแปรหรือไม่? สคริปต์ตัวอย่าง: #!/bin/bash # File: runall shopt -s expand_aliases source ~/.aliases while (( "$#" )); do $1 shift done runall "echo test"ทำงานได้ แต่runall "myalias"ให้runall: line 8: myalias: command not found
9 bash  alias 

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