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

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

1
ทำให้ PS1 ของ Bash แสดงชื่อไดเรกทอรีดั้งเดิมไม่ใช่ symlink ใช่ไหม
ฉันมี PS1='\W' แต่เมื่ออยู่ในไดเรกทอรีลิงก์สัญลักษณ์สัญลักษณ์จะแสดงชื่อ symlink ฉันจะทำให้ PS1 แสดงชื่อไดเรกทอรีดั้งเดิมได้อย่างไร

1
การทดแทนประวัติ Bash alias คล้ายกับ \! * ใน csh
คำถามของฉันคล้ายกับคำถามของ โพสต์เก่านี้ . ฉันต้องการทำสิ่งที่คล้ายกัน: วางในนามแฝงอาร์กิวเมนต์สุดท้ายที่พิมพ์บนบรรทัดคำสั่งปัจจุบัน นี้จะเทียบเท่ากับ csh \!* ซึ่งสามารถใช้ในนามแฝง อ้างอิงจากการอ้างอิงโพสต์ดูเหมือนว่าปัญหาคือการขยายประวัติของทุบตีซึ่งเป็นเหตุผลที่ใช้ fc แทน ความคิดจะให้การแทนที่ทำงานกลางสตริงของคำสั่งเช่น alias cat='cat -n !!:* && echo ""' (เป็นตัวอย่างแบบย่อซึ่งไม่ทำงานเนื่องจากปัญหาการขยาย) อย่างไรก็ตามสิ่งนี้แตกต่างจากโพสต์อ้างอิงในแง่ที่ว่าฉันต้องการคว้าเฉพาะอาร์กิวเมนต์ที่อยู่เหนือคำสั่งแรก (เช่นในโพสต์พวกเขาคว้าทั้งบรรทัดแทนที่จะเป็นทั้งบรรทัดยกเว้นอาร์กิวเมนต์ zero-th คำสั่ง ตัวเอง) วิธีที่ดีที่สุดในการทำเช่นนี้ในนามแฝงทุบตีคืออะไร? (หมายเหตุ: การค้นหาเพื่อเก็บสิ่งนี้เป็นนามแฝงไม่ใช่การค้นหาสคริปต์หรือฟังก์ชัน)

2
จะทำการสำรอง dotfiles ปัจจุบันได้อย่างไร?
ฉันเพิ่งซื้อ Mac และติดตั้ง dotfiles จากแหล่งภายนอกซึ่งทำให้การตั้งค่า terminal ของฉันแย่ โชคดีที่ฉันได้ทำการสำรองข้อมูลระบบของฉันด้วยไทม์แมชชีนดังนั้นฉันเพียงแค่ติดตั้งทั้งระบบใหม่ อย่างไรก็ตามมันจะเหมาะสมกว่าถ้าเพียงแค่ทำการสำรองข้อมูล dotfiles ดั้งเดิมของระบบเพื่อทำการติดตั้งใหม่หากมีปัญหากับตัวแบบกำหนดเอง มีสิ่งเช่น 'dotfiles ดั้งเดิม' หรือไม่? ถ้าเป็นเช่นนั้นพวกเขาอยู่ที่ไหนและฉันจะสำรองพวกเขาให้ดีที่สุดได้อย่างไร? ถ้าไม่ฉันจะย้อนกลับการเปลี่ยนแปลงที่ทำโดยคนใหม่ได้อย่างไร
3 macos  bash  dotfiles 

2
สับสนเกี่ยวกับ jq parser
ฉันพยายามใช้ ตัวแยกวิเคราะห์ jq ในสคริปต์ทุบตีของฉันและฉันสับสนเกี่ยวกับวิธีการทำงานบางคนสามารถอธิบายสิ่งที่ฉันทำผิดหรือเปล่า? นี่คือไฟล์ต้นฉบับจากบริการภายนอกและฉันต้องได้รับ value จากมัน: root@test ~ # cat test.json {"sensors":[{"id":34585,"value":-3.06,"time":1457031003}]} พยายามส่งไปที่ jq: root@test ~ # cat narod.json | jq { "sensors": [ { "id": 34585, "value": -3.06, "time": 1457031003 } ] } พยายามที่จะรับ sensors: root@test ~ # cat narod.json | jq '.sensors' [ { "id": 34585, "value": …

3
ในเชลล์ลินุกซ์ทำไมแบ็กสแลช - นิวไลน์จึงไม่แนะนำช่องว่าง?
เมื่อใช้เปลือก Linux ฉันเจอสถานการณ์ต่อไปนี้: $ A=B\ > C $ echo $A BC ในใจของฉันเมื่อขึ้นบรรทัดใหม่พบตัวละครหนีมันไม่สามารถเป็นตัวละคร CR แต่มันก็ยังเป็นบรรทัดใหม่ echo $A ควรตีความว่าเป็น echo B newline C และขึ้นบรรทัดใหม่ควรเป็น IFS สำหรับ echo. ดังนั้นผลลัพธ์ควรเป็น B C แทน BC. เหตุใดฉันจึงได้รับผลลัพธ์ที่ฉันทำ
3 linux  bash  shell 

3
จะลองเริ่มบริการได้อย่างไรถ้าไม่ได้ทำงานอยู่? (Linux)
ฉันรู้ว่าฉันต้องนับจำนวนอินสแตนซ์ที่กำลังทำงาน: ps x | grep apache2 | wc -l ผลถ้ามันทำงาน: 2, หรืออื่น ๆ: 1 ฉันก็รู้ว่ามีคำสั่งที่เรียกว่า test ที่ฉันสามารถใช้เพื่อทำการตรวจสอบ แต่ฉันไม่รู้วิธีใช้ test กับ wc
3 linux  bash 

2
ฉันสามารถตรวจจับว่ามีการแสดงผลที่สองในเชลล์สคริปต์หรือการตั้งค่า Conky ได้หรือไม่?
ฉันต้องการแก้ไขตำแหน่งที่สะดวกสบายของฉันขึ้นอยู่กับว่าฉันทำงานกับแล็ปท็อปของฉันในรอบ (หน้าจอเดียว) หรือวางไว้ที่โต๊ะทำงานของฉันติดกับจอภาพขนาดใหญ่ (จอแสดงผลคู่) ปัญหาคือฉันต้องการให้มันปรากฏที่ด้านล่างซ้ายของหน้าจอแล็ปท็อปของฉันไม่ว่าจะเกิดอะไรขึ้น แต่ด้วยการตั้งค่าการแสดงผลคู่ของฉัน "ด้านล่างซ้าย" จะเกิดขึ้นบนจอภาพภายนอกของฉัน ดูเหมือนว่ามีสองวิธี: เพิ่มคำสั่ง if / else ให้กับสคริปต์ที่ฉันใช้เพื่อเรียกใช้ conky (conky.sh) ที่เรียกใช้ไฟล์กำหนดค่าอื่นตามการจัดเรียงจอแสดงผลของฉัน เพิ่มคำสั่ง if / else ให้กับ conky config ของฉันที่ตั้งค่าการจัดตำแหน่งหรือค่าการเยื้องขึ้นอยู่กับการจัดเรียงการแสดงผล (และใช่ฉันรู้ว่าอย่างน้อยรุ่น shell นั้นจะทำงานได้ก็ต่อเมื่อฉันเสียบปลั๊ก / ถอดปลั๊กเมื่อเปิด conky ฉันสามารถอยู่กับมันได้ แต่ ... ฉันไม่รู้ด้วยซ้ำว่าจะตรวจจับการแสดงผลสองจอหรือจอที่สองในแบบทุบตีหรือทะลึ่ง

1
เปิดเทอร์มินัลหลายเครื่องใน a for loop in bash
เมื่อเร็ว ๆ นี้ฉันเปลี่ยนเป็น lxde บน Ubuntu. และหลังจากเปลี่ยนมันเปลี่ยนฉัน x-terminal-emulator ไปยัง lxterm. สคริปต์ของฉันกำลังทำสิ่งต่อไปนี้: ผ่าน for for loop และเปิดหน้าต่างเทอร์มินัลใหม่จากนั้นเรียกใช้สคริปต์ในเทอร์มินัลนั้น มันจะเปิดเทอร์มินัลหลายเครื่องในเวลาเดียวกันในการรันสคริปต์นั้นในหน้าต่างที่แตกต่างกันทั้งหมด หลังจากเปลี่ยนมาเป็น lxde มันจะวนซ้ำและรอให้แต่ละหน้าต่างเทอร์มินัลสิ้นสุดสคริปต์ก่อนที่จะเปิดหน้าต่างเทอร์มินัลถัดไป ฉันต้องการให้ทำสิ่งที่ทำ ฉันแก้ไขปัญหานี้โดยการเปลี่ยนของฉัน x-terminal-emulator กลับไป gnome-terminal. ตอนนี้มันใช้งานได้ดี อย่างไรก็ตาม นี่คือระบบสคริปต์ที่มีผู้ใช้เพียงไม่กี่คนและทุกคนใช้สภาพแวดล้อมที่แตกต่างกันและเทอร์มินัลอีมูเลเตอร์ ฉันจะแน่ใจได้อย่างไรว่านี่ใช้งานได้กับเทอร์มินัลอีมูเลเตอร์ต่าง ๆ หรืออย่างน้อยที่สุด xterm หรืออะไรก็ตามที่ทุกคนจะมี ขอบคุณ ข้อมูลโค้ด: for blah in something do x-terminal-emulator -e bash my_script.sh done
3 linux  bash  terminal 

1
คำสั่งที่อนุญาตพิเศษที่ผู้ใช้สามารถใช้ได้กับ sudo
ฉันพยายามตั้งค่าบัญชีขาวของคำสั่งที่ผู้ใช้สามารถเรียกใช้บนระบบของฉัน เซิร์ฟเวอร์ที่ฉันใช้กำลังเรียกใช้ CentOS 7 ไวยากรณ์ที่ควรใช้เพื่ออนุญาตให้กลุ่มคำสั่งและอาร์กิวเมนต์บางกลุ่มสามารถเรียกใช้เป็น sudo สำหรับผู้ใช้ได้อย่างไร ฉันต้องการให้ sudo ไม่ต้องใช้รหัสผ่านเมื่อเรียกใช้คำสั่งเหล่านี้ ฉันได้ลองแล้ว: ผู้ใช้ ALL = / bin / cmd1 arg1 arg2, / bin / cmd2 arg1 arg2, / bin / cmd3 arg1 arg2 NOPASSWD: ทั้งหมด ผู้ใช้ ALL = (ผู้ใช้: กลุ่ม) / bin / cmd1 arg1 arg2, / bin / cmd2 arg1 …
3 linux  bash  centos  sudo  centos-7 

1
Bash Shell ค้างบน + Tab-complete
ฉันมักจะใช้ความสมบูรณ์ของแท็บใน Bash เมื่อทำไดเรกทอรี แต่ฉันพบว่ามันค้างในเวลาที่ไม่สามารถยอมรับได้หากฉันใส่เครื่องหมายคำถามลงในไดเรกทอรีโดยไม่ตั้งใจ ฉันต้องการทราบสาเหตุและวิธีการป้องกันหากเป็นไปได้ นี่คือสถานการณ์: ฉันเริ่มคำสั่งและใช้~กุญแจเพื่อเป็นตัวแทนของบ้าน: ls ~?Desktop/co อ๊ะ! ฉันค้างไว้Shiftนานเกินเสี้ยววินาที ฉันได้มีไว้สำหรับการที่จะเป็น? /แต่หน่วยความจำกล้ามเนื้อ (โอ้ไม่!) ได้เตะไปแล้วฉันได้กดปุ่มTabก่อนที่จะสังเกตเห็นความผิด ตอนนี้ฉันติดอยู่รอให้เปลือกส่งเสียงบี๊บอย่างโกรธฉัน ปกติหนึ่งหรือสองนาที เกิดอะไรขึ้น? ทำไมเครื่องหมายคำถามทำให้เกิดการหยุดและในที่สุดก็ส่งเสียงบี๊บ มีวิธีใดบ้างที่จะหยุดมันไม่ให้แขวน

1
อิมเมจของ Docker และชื่อคอนเทนเนอร์เสร็จสมบูรณ์ใน Bash สำหรับ Windows
ฉันมีนักเทียบท่าสำหรับ Windows และฉันเพิ่งเริ่มใช้งาน Bash สำหรับ Windows ฉันจัดการเพื่อให้นักเทียบท่าใน bash show container และรูปภาพจาก windows ของฉันโดยเพิ่มบรรทัดต่อไปนี้ใน.bashrcไฟล์ของฉัน: PATH="$HOME/bin:$HOME/.local/bin:$PATH" PATH="$PATH:/mnt/c/Program\ Files/Docker/Docker/resources/bin" (ดังนั้นฉันไม่ได้ใช้apt-get install) และฉันก็ประกาศชื่อแทน.bashrcเช่นนั้น:alias docker='docker.exe' ตอนนี้เมื่อฉันพิมพ์docker psมันจะแสดงคอนเทนเนอร์ที่ทำงานบนหน้าต่างของฉัน ตอนแรกฉันยังไม่เสร็จสิ้นคำสั่งเลย การพิมพ์docker loตามด้วยการกดแท็บไม่ได้ทำอะไรเลย (แทนที่จะทำจนจบdocker logsยกตัวอย่างดังนั้นฉันจึงไปและสะดุดตามคำสั่งต่อไปนี้: sudo curl -L https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker -o /etc/bash_completion.d/docker ตอนนี้ฉันมีคำสั่งเสร็จสิ้นแล้ว แต่ยังไม่เสร็จสมบูรณ์สำหรับชื่ออิมเมจและคอนเทนเนอร์ มีวิธีใดที่จะทำให้มันใช้งานได้? ฉันควรติดตั้ง docker โดยตรงบนระบบย่อย ubuntu หรือไม่? (ฉันไม่แน่ใจว่านี่คือ stackexchange ที่ถูกต้องสำหรับสิ่งนี้หรือ askubuntu ถ้าฉันควรถามที่อื่นโปรดแจ้งให้เราทราบ)
3 linux  bash 

1
คัดลอกไฟล์ X ครั้งที่เปลี่ยนชื่อด้วยตัวอักษรทั้งหมด
ฉันมีไฟล์ sqlite ฐานข้อมูลชื่อ "a.db" ฉันต้องการคัดลอก 25 ครั้ง (หนึ่งครั้งสำหรับตัวอักษรแต่ละตัว) ที่จะมี: b.db, c.db, d.db ... ... ... z.db ฉันจะทำสิ่งนี้ใน Bash shell ได้อย่างไร
3 linux  bash 

1
ดาวน์โหลดชุด URL จากบรรทัดคำสั่งแบบมัลติเธรด
ฉันมี 100,000 ไฟล์ URL ขนาดเล็กสำหรับดาวน์โหลด ต้องการใช้ 10 เธรดและต้องมีการวางท่อ ฉันเชื่อมผลลัพธ์เป็นไฟล์เดียว แนวทางปัจจุบันคือ: cat URLS | xargs -P5 -- curl >> OUTPUT มีตัวเลือกที่ดีกว่าที่จะแสดงความคืบหน้าของการดำเนินการทั้งหมดหรือไม่ จะต้องทำงานจากบรรทัดคำสั่ง

1
ติดตั้ง git บน Bash บน Ubuntu บน Windows 10 ที่ติดตั้ง git bash สำหรับ Windows แล้ว?
ฉันใช้ git bash shell บน Windows 10 มาระยะหนึ่งแล้ว แต่ฉันเพิ่งติดตั้ง WSL / Bash สำหรับ Ubuntu บน Windows BUW มีระบบไฟล์ทั้งหมดแยกต่างหากจากไฟล์ Windows ของฉันและแพ็คเกจของตัวเอง ดังนั้นคำถาม: ถ้าฉันติดตั้ง git บน BUW (โดยใช้apt-get install git) นั่นคือซ้ำซ้อน (ดังนั้นฉันควรติดกับ gash bash shell ที่ฉันมีอยู่แล้วและรู้) หรือว่าเป็นรุ่น BUW ที่ดีกว่าในทางใดทางหนึ่ง (และฉันควรถอนการติดตั้ง git ตามที่ฉันมีตอนนี้)? หากฉันติดตั้งทั้งคู่พวกเขาจะขัดแย้งกันไหม (โปรดทราบว่าฉันใช้ git ในไฟล์ Windows ของฉัน - ไม่แน่ใจว่าจะยังใช้งานได้หรือไม่หากฉันถอนการติดตั้ง gash bash …

2
วิธีเลือกเครื่องพิมพ์ใน emacs บน Mac OSX
ฉันยังใหม่กับทั้ง emacs และยังไม่ได้มีประสบการณ์มากกับการทุบตี ฉันมีคำถามสองสามข้อที่เกี่ยวข้อง? (1) ฉันสามารถตั้งค่า emacs ที่ฉันสามารถเลือกเครื่องพิมพ์ที่ฉันพิมพ์ได้หรือไม่? ฉันสามารถเข้าถึงเครื่องพิมพ์หนึ่งเครื่องที่เชื่อมต่อด้วย USB และเครื่องพิมพ์เครือข่ายสองเครื่องและฉันไม่ต้องการพิมพ์ไปยังเครื่องพิมพ์เครื่องเดียวกันเสมอไป (2) ฉันจะค้นหาชื่อที่แน่นอนของเครื่องพิมพ์เหล่านี้ (จำเป็นสำหรับการตั้งค่าด้วย emacs) ได้อย่างไร เหล่านี้เป็นชื่อเดียวกับที่ปรากฏในSystem Preferences -> Print & FaxMac OSX (3) มีคำสั่งหรือบางอย่างในการค้นหาชื่อเครื่องพิมพ์ (เชื่อมต่อด้วย USB และเครื่องพิมพ์เครือข่าย) ที่มีการเข้าถึงหรือไม่? ขอบคุณผู้เชี่ยวชาญทุกคนที่นี่ซึ่งเป็นประโยชน์เสมอ
3 macos  bash  emacs 

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