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

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

4
คือ `ทดสอบ 'builtin หรือโปรแกรม
ทดสอบ shell builtin หรือโปรแกรมจริงหรือไม่? bruce@Bruce:~$ type -a test test is a shell builtin test is /usr/bin/test bruce@Bruce:~$ bruce@Bruce:~$ file /usr/bin/test /usr/bin/test: ELF 64-bit LSB executable bruce@Bruce:~$ ระบบของฉันใช้ Ubuntu 13.04 และ BASH 4.2.45 (1) - ปล่อย
2 bash 

0
ย้ายระหว่างบานหน้าต่างใน tmux บน Windows
ฉันใช้ทุบตีบน Ubuntu บน Windows tmuxพยายามออก การกำหนดค่าของฉันจาก Ubuntuทำงานได้อย่างสมบูรณ์แบบที่สุดยกเว้นทางลัด Alt + ฉันเดาว่าหน้าจอเทอร์มินัลเป็นปัญหา - มันไม่ผ่านการกดปุ่ม "Alt" ไปยัง Bash มีวิธีแก้ไขปัญหานี้หรือไม่ฉันจะต้องเปลี่ยนการเชื่อมโยงของฉันเพื่อใช้ปุ่มอื่น ๆ (เช่น Ctrl, ฯลฯ ) หรือไม่
2 windows  bash 

2
ssh backspace ลบหนึ่งอักขระแทนสองตัว (สัญลักษณ์ utf-8)
ฉันกำลังเข้าถึงคอมพิวเตอร์ระยะไกลโดยใช้ ssh และใช้คำสั่ง bash เพื่อใส่สัญลักษณ์โดยใช้สตรีมอินพุตมาตรฐาน: อ่านการทดสอบ echo $ test การป้อนตัวอักษรภาษาอังกฤษและใช้ backspace เพื่อลบออกจากนั้นจึงป้อนตัวอักษรอื่น ๆ แล้ววนซ้ำขั้นตอนนี้ทุกครั้ง แต่มันกลายเป็นหายนะเมื่อฉันใช้สัญลักษณ์ utf-8 อื่น ๆ เช่นสัญลักษณ์รัสเซียซึ่งต้องใช้ 2 ไบต์แทน 1 เช่นที่คนอังกฤษใช้ เช่นฉันใส่: абвгдежз หลังจากนั้นฉันใช้ backspace 8 ครั้งแล้วใส่สัญลักษณ์อื่น ๆ : привет และกดปุ่ม Enter แต่แทนที่จะเป็นผลลัพธ์ที่จะเท่ากับข้อมูลล่าสุดของฉันฉันได้รับต่อไปนี้: абвгпривет ซึ่งหมายความว่า 8 backspace ลบเพียง 4 สัญลักษณ์ ฉันใช้ Linux linux ubuntu 12.04 พยายามใช้คอนโซลที่แตกต่าง: หนึ่งมาตรฐานเทอร์มินอล ตัวเลือก …
2 bash  ubuntu  encoding  utf-8  ssh 

1
Bash / Rsync: ซิงโครไนซ์ทางเดียวและปล่อยให้ไฟล์อยู่คนเดียวเมื่อมีการเปลี่ยนแปลงข้อมูลเมตาเท่านั้น
ฉันมีบางโปรแกรมที่อนุญาตให้ส่งออกไปยังรูปแบบที่แตกต่างกัน (เช่น html) แต่มีหลายโปรแกรมที่แบ่งปันปัญหา: การส่งออกมักจะทำ "ทั้งหมดเข้าด้วยกัน" เสมอเช่นสิ่งต่าง ๆ เช่นรูปภาพหรือไฟล์แนบจะถูกสร้างขึ้นใหม่ในโฟลเดอร์ส่งออก หากพวกเขาไม่ได้เปลี่ยนตั้งแต่การส่งออกครั้งล่าสุด นอกจากนี้โดยทั่วไปแล้วพวกเขาจะไม่ดูแลการลบไฟล์ที่เลิกใช้แล้วหรืออาจล้มเหลวเมื่อไดเรกทอรีมีไฟล์อยู่แล้ว ฉันเคยเห็นปัญหาที่คล้ายกันกับฟังก์ชันการส่งออกของโปรแกรมที่แตกต่างกันในปัจจุบันกรณีใช้ของฉันคือ ZIM Desktop Wiki ฉันคิดว่าฉันสามารถส่งออกไปยังไดเรกทอรีชั่วคราวแล้วใช้ rsync เพื่อซิงโครไนซ์ไฟล์ที่ส่งออกไปยังไดเรกทอรีส่งออกขั้นสุดท้ายเช่น Google Drive หรือ Dropbox อย่างไรก็ตามการใช้ rsync ฉันไม่สามารถหาวิธีที่จะรวมไฟล์ที่เปลี่ยนแปลงไปยังไดเรกทอรีเป้าหมายได้โดยไม่ต้องเปลี่ยนเวลาการแก้ไขของไฟล์ที่ไม่ได้เปลี่ยนไปจริง ๆ ซึ่งน่าจะทำให้การสำรองข้อมูลของไดเรกทอรีและ / หรือการซิงโครไนซ์ ก่อให้เกิดการรับส่งข้อมูลที่ไม่จำเป็นในบางกรณีไฟล์ที่ซ้ำกันในไดรฟ์ที่มีการสำรองข้อมูลที่เพิ่มขึ้นในอีกกรณีหนึ่งและเสียเวลามากในทั้งสองกรณี มีวิธีที่จะทำให้ rsync ทำการตรวจสอบโดยเนื้อหาไฟล์จริงและปล่อยให้เมตาดาต้าเพียงอย่างเดียวสำหรับไฟล์ที่เหมือนกันหรือบางโซลูชันที่มีอยู่นอกเหนือจาก rsync?
2 bash  sync  rsync  metadata 

1
เปิดเทอร์มินัลใหม่จากภายในเทอร์มินัล
เมื่อฉันทำงานฉันมักจะมีเทอร์มินัลที่เปิดแท็บจำนวนมาก ตัวอย่างเช่นแท็บแรกสำหรับเว็บเซิร์ฟเวอร์ของฉัน, ที่สองสำหรับคอนโซล, ที่สามสำหรับรุ่น ฯลฯ ทุกครั้งที่ฉันต้องเปิดแท็บใหม่ด้วยตนเอง (ฉันใช้ Ctrl + Shift + T) ฉันคลิกขวาที่ป้ายกำกับแท็บและเปลี่ยนชื่อ (เว็บเซิร์ฟเวอร์คอนโซลรุ่นเป็นต้น) อย่างไรก็ตามฉันต้องการจะทำสิ่งนี้โดยอัตโนมัติ แต่ฉันไม่พบคำสั่ง: เปิดแท็บใหม่จากภายในพรอมต์ปัจจุบัน เปลี่ยนชื่อ เนื่องจากฉันต้องการสร้างสคริปต์ BASH สำหรับสิ่งนั้นฉันจะใช้อะไรได้บ้าง

1
สร้างลำดับของตัวเลขจากอินพุตที่มนุษย์สามารถอ่านได้
ในทุบตีฉันมีโปรแกรมที่แสดงรายการตัวเลือกของไฟล์ที่จะดาวน์โหลดจากนั้นให้ผู้ใช้เลือกบางไฟล์ ฉันต้องการให้ผู้ใช้พิมพ์สิ่งที่ต้องการ1-6,8,11-12ดาวน์โหลดไฟล์ 1, 2, 3, 4, 5, 6, 8, 11 และ 12 ฉันจะสร้างลำดับของตัวเลขได้อย่างไร (เพื่อใส่forวนซ้ำ ) จากอินพุตที่มนุษย์อ่านได้ประเภทนี้หรือไม่
2 bash  unix 

2
คำสั่ง SSH ที่รันมายาวนาน - กลยุทธ์ที่ดีกว่า
ฉันมีคำสั่งที่ใช้เวลานานซึ่งถูกสั่งการผ่าน SSH บ่อยครั้งที่คำสั่งดูเหมือนว่าจะหยุดและหยุดรับเอาต์พุตใด ๆ คำสั่งยังคงทำงานบนเครื่องอื่น (อันที่จริงถ้าฉัน Ctrl + C ออกจากคำสั่ง SSH ก็ยังคงทำงานซึ่งไม่เป็นไร) ลูกค้าของฉันก็หยุดทำงาน คำสั่งของฉันใช้งานantเป้าหมายเช่นนี้: ssh -tt user@machine 'cd /thedir; export DISPLAY=:80; ant clean test' antคำสั่งอาจใช้เวลาถึงหนึ่งชั่วโมง ฉันคิดว่านี่เป็นกลยุทธ์ที่ไม่ดีเนื่องจากเครือข่ายใด ๆ ที่สามารถเกิดขึ้นได้และทำให้การเชื่อมต่อของฉันยุ่งเหยิง ทุกคนสามารถแนะนำวิธีการอื่นได้หรือไม่? เป้าหมายของฉันคือ: ลูกค้าของฉันรอให้คำสั่งเสร็จสิ้น ฉันยังคงได้รับผลลัพธ์จากคำสั่ง หากการเครือข่ายเกิดขึ้นฉันยังสามารถตรวจสอบและรอให้ความคิดเห็นสิ้นสุดลงได้ ความช่วยเหลือหรือข้อเสนอแนะใด ๆ ที่ชื่นชมอย่างมาก แก้ไข: ฉันใช้สคริปต์ทุบตีเต็มรูปแบบ ... ฉันไม่ต้องการซับในหรืออะไรแบบนั้น

1
ส่งผ่านอาร์กิวเมนต์ไปยัง osascript ผ่านฟังก์ชันเชลล์ใน OS X Mountain Lion
คำตอบค่ะ วิธีเปิดหน้าต่าง Firefox ใหม่พร้อมด้วยอาร์กิวเมนต์ URL เสียใน Mac OSX Mountain Lion (10.8.2) ฉันไม่สามารถแสดงความคิดเห็นกับคำตอบหรือคำถามนั้นได้ดังนั้นฉันต้องสร้างคำถามใหม่ มันล้มเหลวเช่นนี้: $ firefox-window http://www.yahoo.com dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/osascript) is code signed with entitlements หน้าต่างใหม่เปิดขึ้นเรียบร้อยแล้ว แต่ว่างเปล่า (เช่นตัวแปรสภาพแวดล้อมที่ส่งผ่านไปยัง AppleScript ในฟังก์ชัน bash จะถูกละเว้น) มีวิธีอื่นในการส่งผ่านตัวแปรไปยัง applescript จาก commandline หรือไม่ (อาจไม่ใช้ทุบตี?) อ้างอิง http://www.macworld.com/article/1165641/how_increased_mac_security_measures_will_impact_applescript.html "แอปแซนด์บ็อกซ์ไม่สามารถใช้ AppleScript เพื่อสื่อสารกับแอปอื่นใน Mac …

1
เซสชัน bash ที่ทำงานต่อได้พร้อมการบำรุงรักษาสาขา
มียูทิลิตี้ที่ช่วยเพิ่มความคล่องตัวในการจัดเก็บและกู้คืนเซสชัน bash หรือไม่? ฉันต้องการทำ EG $ KUNG=pao $ foo commit # saves the current environment # as an anonymous changeset from the previous savepoint $ SCHNICKENS="What's up, doc?" $ SCHNICKENS="$(echo Schmoove)" $ unset KUNG $ foo diff HEAD # outputs a $(set) of commands # which comprise the current changeset …
1 linux  bash  git  session  bashrc 

1
การสร้างสคริปต์ทุบตีเพื่อรวบรวม / ดำเนินการ C ++
ฉันพยายามสร้างสคริปต์ง่ายๆที่จะรวบรวม test.cpp แต่ฉันไม่สามารถใช้งานได้ ฉันใช้งานสคริปต์เช่นนี้: > bash make.sh และได้รับข้อผิดพลาดต่อไปนี้: : No such file or directory g++: no input files make.sh: line 3: ./test.out: No such file or directory นี่คือ make.sh: #!/bin/sh g++ -o ./test.out ./test.cpp ./test.out ฉันลองแล้วโดยไม่ใช้ "./" และมันยังใช้งานไม่ได้ ฉันกำลังใช้งาน Cygwin บน Windows 7 พร้อมกับแพ็คเกจที่เหมาะสมทั้งหมดที่ติดตั้ง (ฉันสามารถรวบรวมและเรียกใช้จากเชลล์เองไม่ใช่จากสคริปต์)
1 bash  shell 

1
ย้ายไฟล์หลาย ๆ ไฟล์ซ้อนกันจนกว่าพวกเขาจะมีเพียงไดเรกทอรีเดียว
ฉันมีหลายไฟล์ในหลายไดเรกทอรีบางฝังอยู่ภายใต้ไดเรกทอรีย่อย ฉันต้องการที่จะสามารถย้ายไฟล์ทั้งหมดจนกว่าพวกเขาจะมีเพียง 1 ไดเรกทอรีลึก ตัวอย่างเช่น: /home/folder/subfolder/file1.txt /home/folder2/file2.txt /home/folder3/subfolder/subfolder/subfolder/file3.txt กลายเป็น: /home/folder/file1.txt /home/folder2/file2.txt /home/folder3/file3.txt ฉันพบว่าฉันสามารถใช้ find ./*/ -type f เพื่อค้นหาไฟล์ทั้งหมด แต่ฉันไม่แน่ใจว่าจะย้ายพวกเขาอย่างไรเพื่อให้พวกเขามีเพียงไดเรกทอรีเดียว
1 linux  bash  find  mv 

0
การเรียกใช้ `pip` จะให้ 'ไม่พบคำสั่ง' หลังจากติดตั้ง Python homebrew สำเร็จ
เพื่อเป็นการชี้นำฉันไม่ดีกับเทอร์มินัลโปรดอดทนกับฉัน เมื่อฉันวิ่ง pip ฉันเข้าใจ: zsh: command not found: pip ฉันได้ติดตั้ง Python 2.7.11 กับ brew แล้วซึ่งควรอนุญาตให้ pip ทำงานได้ เมื่อฉันวิ่ง echo $PATH ฉันเข้าใจ /usr/local/sbin /Users/Nicolas/.composer/vendor/bin /Library/Frameworks/Python.framework/Versions/3.4/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin ฉันสังเกตเห็นว่า / usr / local / bin / อยู่ในนั้นซึ่งฉันเข้าใจว่าเป็นที่ที่ปฏิบัติการปฏิบัติการเชื่อมโยง เมื่อฉันวิ่ง which -a python ฉันเข้าใจ /usr/local/bin/python /usr/bin/python ดังนั้น - Python สองตัวติดตั้ง ฉันเดาว่าหนึ่งคือ …

1
ไฟล์มีอยู่ไม่ทำงานในสคริปต์ที่คาดหวัง
ฉันพยายามตรวจสอบว่ามีบรรทัดใดบรรทัดหนึ่งอยู่ในชื่อไฟล์ของโฮสต์หรือไม่ ดังนั้นหากพบรูปแบบเฉพาะจากคำสั่ง grep dummy.txt จะถูกสร้างขึ้น จากนั้นฉันต้องการตรวจสอบว่า dummy.txt มีเงื่อนไขและดำเนินการต่อหรือไม่ แต่แม้ว่า dummy.txt จะถูกสร้างขึ้นโดยไม่พบคำสั่ง if: if {[file exists $fileName] } และการควบคุมจะถูกโอนไปยังบล็อกอื่น อะไรคือเหตุผล? มีวิธีใดที่ง่ายกว่าในการบรรลุสิ่งที่ฉันต้องการหรือไม่ set Host [lindex $argv 0 ] spawn ssh -o StrictHostKeyChecking=no userid@$Host expect "*assword*" send "password\n" expect "+" send "cd path/that/contains/filename\n" expect "*$*" send "pwd\n" set fileName dummy.txt send {grep '\[abc\]' …

1
เครื่องหมายคำพูดคู่ในสคริปต์ Linux
ฉันกำลังพยายามสร้างสคริปต์ที่ย้ายไปยังโฟลเดอร์เฉพาะแล้วเปลี่ยนชื่อและย้ายไฟล์ทั้งหมดไปยังตำแหน่งอื่น อย่างไรก็ตามฉันได้รับข้อผิดพลาดในตอนท้ายของคำสั่ง JHEAD เนื่องจากช่องว่างระหว่างการจัดรูปแบบวันที่และเวลา ฉันลองใช้เครื่องหมายคำพูดคู่อัญประกาศรอบ ๆ พื้นที่ ฯลฯ ไม่ทำงาน ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม cd /home/fitur/Backup/Temp/ jhead_cmd='jhead -norot -ft -n/home/fitur/Pictures/Photos/%Y/%Y-%m-%d_%H:%M:%S {}' find . -type f -name "*.JP*" -exec $jhead_cmd \; find . -type f -name "*.jp*" -exec $jhead_cmd \;
1 linux  bash 

1
การล้างค่าพารามิเตอร์ URL มวลจากไฟล์ txt
ฉันมีไฟล์พร้อมรายการ URL ดังนี้: www.dell.com/any=abc&anyone=bcd www.google.co.in www.yahoo.com/abc=fgh ฉันต้องการล้างพวกเขาเนื่องจากพวกเขาแสดงเฉพาะข้อมูลที่เท่ากับเครื่องหมายเท่ากัน ตัวอย่างข้างต้นควรเป็น: www.dell.com/any= www.dell.com/any=abc&anyone= www.google.co.in www.yahoo.com/abc= มีคำแนะนำสคริปต์สำหรับการล้างรหัสเช่นนี้ในหลามหรือทุบตี ฯลฯ ?

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