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

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

3
ฉันจะบอกความสมบูรณ์ของการใช้แท็บให้ถูกต้องสำหรับการขัดแย้งกับสคริปต์ Python ของฉันได้อย่างไร
ว่าฉันมีโปรแกรม hello.py และมีข้อโต้แย้งที่ถูกต้องหนึ่งข้อคือ: ./hello.py autoawesomesauce เป็นไปได้ที่จะพิมพ์: ./hello.py auto[tab] ณ จุดนี้อาร์กิวเมนต์ที่เสร็จสมบูรณ์บางส่วนจะถูกส่งไปยัง hello ซึ่งรับรู้ว่ามันเป็นเช่นนั้น ./hello.py autoawesomesauce ฉันรู้ว่า git ทำอะไรแบบนี้ แต่มันสามารถทำได้สำหรับ Python script + Bash หรือไม่?

8
ฉันจะเปลี่ยนชื่อรูปภาพให้ข้อมูล EXIF ​​ได้อย่างไร
สมมติว่าฉันมีรูปภาพมากมายทุกอย่างที่มีข้อมูล EXIF ​​ที่ถูกต้องและรูปถ่ายนั้นมีชื่อแบบสุ่ม (เพราะปัญหาที่ฉันมี) ฉันมีโปรแกรมเล็ก ๆ ที่เรียกว่าjheadซึ่งให้ผลลัพธ์ด้านล่าง: $ jhead IMG_9563.JPG File name : IMG_9563.JPG File size : 638908 bytes File date : 2011:02:03 20:25:09 Camera make : Canon Camera model : Canon PowerShot SX210 IS Date/Time : 2011:02:03 20:20:24 Resolution : 1500 x 2000 Flash used : Yes (manual) Focal …
14 bash  rename  python  exif 

2
วิธีใช้ Bash สำหรับ sh ใน Ubuntu
ฉันกำลังติดตั้งโปรแกรมขนาดใหญ่ซึ่งมีทรัพยากรเป็นrpmไฟล์ มันติดอยู่ที่เส้นของ #!/bin/sh SCITEGICPERLBIN=`dirname $0` SCITEGICPERLHOME=`dirname $SCITEGICPERLBIN` if [ $SCITEGICPERLHOME == "." ] เห็นได้ชัดว่าshทำงานbashใน Red Hat Linux ด้วยไวยากรณ์นี้ แต่ให้ข้อผิดพลาดunexpected operatorใน Ubuntu ฉันไม่สามารถเปลี่ยนสคริปต์bashเป็นสคริปต์มาจากrpmแพ็คเกจ ฉันสามารถแยกและบรรจุหีบห่อใหม่rpmแต่อาจมีสคริปต์ดังกล่าวจำนวนมาก มีวิธีการเปลี่ยนค่าเริ่มต้นของเชลล์เพื่อใช้#!/bin/shเป็นbashหรืออย่างอื่นซึ่งสามารถจัดการกับ[โอเปอเรเตอร์ได้หรือไม่?


3
Bash script พร้อม `set -e` ไม่ได้หยุดอยู่ที่คำสั่ง` … && …… '
ฉันใช้set -eเพื่อหยุดทุบตีสคริปต์ในข้อผิดพลาดครั้งแรก ทำงานได้ดีทั้งหมดเว้นแต่ฉันจะใช้คำสั่งด้วย&&: $ cat script set -e cd not_existing_dir && echo 123 echo "I'm running! =P" $ $ ./script ./script: line 2: cd: not_existing_dir: No such file or directory I'm running! =P $ เมื่อเทียบกับ: $ cat script set -e cd not_existing_dir echo "I'm running! =P" $ $ ./script ./script: …

3
ต้องใช้อักขระใดในการหลบหนีในอาร์กิวเมนต์บรรทัดคำสั่ง
ใน Bash เมื่อระบุอาร์กิวเมนต์บรรทัดคำสั่งให้กับคำสั่งจำเป็นต้องใช้อักขระใดในการหลีกเลี่ยง พวกเขาจะถูก จำกัด ให้ metacharacters ของทุบตี: พื้นที่แท็บ |, &, ;, (, ), <และ>?
14 bash  shell  quoting 

4
ฉันจะทำให้สคริปต์ใช้อาร์กิวเมนต์หลายตัวได้อย่างไร
นี่เป็นสคริปต์ที่ง่ายมาก #!/usr/local/bin/bash set -e if [ "$#" -lt 1 ] then echo "Please insert at least one argument" exit else echo -e "\c" fi if [ -h "$1" ] then echo "$1 is a symbolic link" else echo "$1 in not a symbolic link" fi ~ คำถามของฉันคือ: วิธีการเปลี่ยนสคริปต์สำหรับการรับรู้มากกว่า 1 ข้อโต้แย้ง? …

2
ใช้ bash's `/ dev / udp` ฉันจะรู้ได้อย่างไรว่าพอร์ตนั้นเปิดอยู่
ฉันไม่สามารถเข้าถึงnetcatหรือnmapดังนั้นฉันพยายามใช้bashและ/dev/udp/ไฟล์พิเศษเพื่อทดสอบพอร์ต ฉันสามารถทำสิ่งที่ชอบ: echo "" > /dev/udp/example.com/8000 แต่$?จะเป็นเสมอ0เมื่อใช้ UDP ฉันสมมติว่านั่นเป็นเพราะค่าส่งคืนของecho ""คำสั่งถูกต้องหรือไม่ โดยทั่วไปฉันพยายามทำซ้ำสิ่งที่ฉันสามารถทำได้ด้วยnmapและnetcat: nmap -sU -p 8000 example.com | grep open >/dev/null && echo 'open' nc -z -u example.com 8000 && echo 'open' ฉันจะทำสิ่งนี้ด้วยได้/dev/udpอย่างไร

2
ลบไฟล์ที่เก่ากว่าไฟล์ที่ระบุ
ฉันจำเป็นต้องลบไฟล์ทั้งหมดที่เก่ากว่าไฟล์เฉพาะจากโฟลเดอร์ ใช้ bash บน CentOS 7 ฉันมีทางออกสำหรับสิ่งนี้ แต่ฉันคิดว่าควรมีวิธีที่หรูหรากว่านี้: reference_file=/my/reference/file get_modify_time() { stat $1 | grep -Po "Modify: \K[0-9- :]*" } pit=$(get_modify_time $reference_file) for f in /folder/0000* ; do [[ "$pit" > "$(get_modify_time $f)" ]] && rm $f ; done

5
ไฟล์ grep จากรายการ
ฉันกำลังพยายามเรียกใช้ grep กับรายการของไฟล์สองสามร้อย: $ head -n 3 <(cat files.txt) admin.php ajax/accept.php ajax/add_note.php อย่างไรก็ตามแม้ว่าฉันกำลังค้นหาสตริงที่ฉันรู้ว่าพบในไฟล์ต่อไปนี้จะไม่ค้นหาไฟล์: $ grep -i 'foo' <(cat files.txt) $ grep -i 'foo' admin.php The foo was found ฉันคุ้นเคยกับการ-fตั้งค่าสถานะซึ่งจะอ่านรูปแบบจากไฟล์ แต่จะอ่านไฟล์อินพุตได้อย่างไร? ฉันได้พิจารณาวิธีแก้ปัญหาที่น่ากลัวของการคัดลอกไฟล์ไปยังไดเรกทอรีชั่วคราวตามที่cpดูเหมือนว่าจะสนับสนุน<(cat files.txt)รูปแบบและจากนั้นมีการ grepping ไฟล์ เชอร์ลี่ย์มีวิธีที่ดีกว่า

1
ไวยากรณ์ HISTTIMEFORMAT
มีจำนวนมากมีbashคำแนะนำที่รวมถึงการเพิ่มเส้นดังกล่าวเป็นHISTTIMEFORMAT='%d/%m/%y %T 'หรือHISTTIMEFORMAT="%F %T "ไปหรือ~/.bashrc/etc/bash.bashrc มีช่องว่างเสมอก่อนที่จะพูดสุดท้าย HISTTIMEFORMAT='%d/%m/%y %T'เช่นไม่เคย ทำไมนี้

3
ฉันจะเริ่มต้นกระบวนการด้วยชื่อใด ๆ ที่ไม่ทำอะไรได้บ้าง?
ฉันต้องการเริ่มต้นกระบวนการที่ไม่ทำอะไรเลย แต่ยังคงทำงานอยู่ ว่าฉันเริ่มกระบวนการที่เรียกว่าsadhadxkและเมื่อฉันเรียกใช้pgrep -x "sadhadxk"ฉันจะได้รับหมายเลข PID กลับเช่นกระบวนการปกติใด ๆ ทำงาน ดังนั้นมีวิธีใดบ้างที่จะเริ่มกระบวนการหลอกตา?
14 bash  process 

1
ฉันจะหยุดหน้าจอจากการปิดบังชื่อของฉันได้อย่างไร
ฉันใช้bashและ GNU screenใน centos7 ผมสังเกตเห็นว่าถ้าผม ssh ไปยังเซิร์ฟเวอร์อื่นเปลี่ยนชื่อ (ผ่านctrl+ a+ A) USER@HOST:~และออกจากระบบของเซิร์ฟเวอร์ที่ชื่อใหม่ของฉันถูกเขียนทับโดย ฉันจะหยุดมันจากการทำเช่นนี้ได้อย่างไร ฉันได้ตรวจสอบชื่อเรื่องแบบไดนามิกและได้พิจารณาแล้วว่าเป็นอะไรที่เล่น แต่ฉันไม่แน่ใจว่าจะปิดการใช้งานคุณลักษณะนี้ได้อย่างไร ...

3
ไฟล์ ~ / .inputrc ไม่ได้รับการจัดหาอย่างถูกต้อง
ฉันมีไฟล์ ~ / .inputrc ที่ฉันสร้างขึ้นสำหรับการเชื่อมโยงคีย์บางอย่าง # mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving "\e[1;5C":forward-word "\e[1;5D":backward-word "\e[5C":forward-word "\e[5D":backward-word "\e\e[C":forward-word "\e\e[D":backward-word เมื่อใดก็ตามที่ฉันพยายามเรียกใช้source ~/.inputrcมันทำให้ฉันมีข้อผิดพลาดต่อไปนี้: \ e [1; 5C: ไปข้างหน้าคำ: ไม่พบคำสั่ง \ e [1; 5D: คำย้อนหลัง: ไม่พบคำสั่ง \ e [5C: ไปข้างหน้าคำ: ไม่พบคำสั่ง \ e [5D: ย้อนหลังคำ: ไม่พบคำสั่ง \ e \ e [C: ไปข้างหน้าคำ: …
14 bash  tcsh  readline 

3
ตั้งค่าการตั้งค่าพร็อกซีระบบ Ubuntu โดยไม่ต้องรีสตาร์ทจาก commandline
Ubuntu 14.04ฉันใช้ ฉันต้องการเปลี่ยนการhttp proxyตั้งค่าจากบรรทัดคำสั่ง นี้ควรจะเทียบเท่ากับการเปลี่ยนแปลงใน GUI (ทุกการตั้งค่า> Network-> พร็อกซี่เครือข่าย) Apply System Wideและคลิกที่ปุ่ม ฉันไม่ต้องการรีสตาร์ท / ออกจากระบบเนื่องจากฉันวางแผนที่จะเปลี่ยนการตั้งค่าแบบไดนามิกจากสคริปต์ ( bash)

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