Unix & Linux

คำถาม & คำตอบสำหรับผู้ใช้ Linux, FreeBSD และระบบปฏิบัติการ Un * x อื่น ๆ

3
มีวิธีหาแพ็คเกจไบนารีที่ติดตั้งซึ่งไม่มี manpages หรือไม่?
ฉันเพิ่งเห็นhttps://lintian.debian.org/tags/binary-without-manpage.htmlและมันแสดงให้เห็นประมาณ 14,000 manpages ที่หายไป ซึ่งหมายความว่าเป็นไปได้มากกว่าที่แพ็คเกจไบนารีบางส่วน (ไม่ใช่ไลบรารี) มี manpages ที่ขาดหายไป ฉันจะรับรายการแพคเกจไบนารี / แอปพลิเคชั่นที่ติดตั้ง (ไม่ใช่ไลบรารี) ที่ไม่มี manpages ได้อย่างไร ฉันอาจรู้จักและเริ่มมีส่วนร่วมบ้าง

1
สามารถซ้อนไดเรกทอรีได้กี่ไดเรกทอรี
ฉันอยากรู้อยากเห็นหลายโฟลเดอร์ที่ซ้อนกันได้และทำไม? มีข้อ จำกัด หรือไม่? สิ่งที่ฉันหมายถึงโดยซ้อนกันคือเมื่อโฟลเดอร์อยู่ในโครงสร้างนี้: folder |_ folder |_ folder |_ folder |_ ... ไม่เหมือน: folder |_ folder |_ folder |_ folder |_ ... หากมีข้อ จำกัด มันถูกกำหนดโดยระบบปฏิบัติการหรือโดยระบบไฟล์หรือไม่?

6
การตรวจสอบความถูกต้องของไบนารีคำสั่งก่อนดำเนินการ
มีวิธีการตรวจสอบสิ่งที่คุณกำลังดำเนินการจากสคริปต์ทุบตีจริง ๆ ? บอกว่าทุบตีสคริปต์ของคุณจะถูกเรียกหลายคำสั่ง (ตัวอย่างเช่น: tar, mail, scp, mysqldump) และคุณยินดีที่จะให้แน่ใจว่าtarเป็นจริงจริงtarซึ่งเป็นที่ระบุโดยrootผู้ใช้เป็นไฟล์และไดเรกทอรีแม่เจ้าของและเป็นคนเดียวที่มีสิทธิ์ในการเขียน และไม่ได้/tmp/surprise/tarมีwww-dataหรือapache2เป็นเจ้าของ แน่ใจว่าฉันรู้เกี่ยวกับPATHสภาพแวดล้อมและฉันอยากรู้ว่านี้สามารถตรวจสอบเพิ่มเติมจากสคริปต์ทุบตีทำงานและถ้าเป็นเช่นนั้นได้อย่างไร ตัวอย่าง: (หลอกรหัส) tarfile=$(which tar) isroot=$(ls -l "$tarfile") | grep "root root" #and so on...

2
คั่นเนมสเปซสำหรับฟังก์ชั่นและตัวแปรในเชลล์ POSIX
ในเส้นประฟังก์ชั่นและตัวแปรดูเหมือนจะอยู่ในเนมสเปซที่แยกต่างหาก: fn(){ fn="hello world" } fn; echo "The value is $fn!" #prints: The value is hello world! fn; echo "The value is $fn!" #prints: The value is hello world! #the fn variable doesn't conflict with the fn function นี่เป็นคุณลักษณะเฉพาะหรือการรับประกัน POSIX หรือไม่
13 shell  posix  dash 

8
การย้อนกลับเนื้อหาของตัวแปรด้วยคำพูด
ดังนั้นถ้าฉันมีตัวแปร VAR='10 20 30 40 50 60 70 80 90 100' และสะท้อนออกมา echo "$VAR" 10 20 30 40 50 60 70 80 90 100 อย่างไรก็ตามยิ่งสคริปต์ฉันต้องย้อนกลับลำดับของตัวแปรนี้จึงแสดงเป็นสิ่งที่ต้องการ echo "$VAR" | <code to reverse it> 100 90 80 70 60 50 40 30 20 10 ฉันพยายามใช้ rev และมันกลับด้านทุกอย่างดังนั้นมันจึงออกมาเป็น echo "$VAR" | rev 001 …
13 linux  bash  shell  variable 

2
ตั้งค่าตัวแปรสภาพแวดล้อมสำหรับ gnome บน wayland และ bash บนเทอร์มินัลเสมือน (หรือ ssh)
Gnome 3.22 ใช้ Wayland เป็นค่าเริ่มต้น Gnome บน wayland ไม่ได้อ่าน~/.profile(หรือ~/.bash_profileหรือ/etc/profile) ดูhttps://bugzilla.gnome.org/show_bug.cgi?id=736660 ฉันมีไฟล์เริ่มต้นของฉันตั้งค่าดังต่อไปนี้: .bash_profileไม่ทำอะไรเลยนอกจากแหล่ง.profileและ.bashrc .profileตั้งค่าตัวแปรสภาพแวดล้อมเช่นPATHและเท่านั้นLC_MESSAGES .bashrcชุดการตั้งค่าบางทุบตีที่เฉพาะเจาะจงและชื่อแทนและตัวแปรสภาพแวดล้อมสำหรับการใช้งานเช่นการและlessgrep ผลกระทบ (ก่อน wayland) มีดังต่อไปนี้: เมื่อฉันเข้าสู่ระบบกราฟิก.profileถูกอ่านและตัวแปรสภาพแวดล้อมเช่นPATHและLC_MESSAGESถูกตั้งค่า เมื่อฉันเปิด bash ภายในเทอร์มินัลอีมูเลเตอร์แล้ว.bashrcอ่าน เมื่อฉันเข้าสู่ระบบภายใต้ terminal เสมือนแล้ว.bash_profileได้อ่านซึ่งในการเปิดอ่านและ.profile.bashrc เมื่อฉันเข้าสู่ระบบโดยใช้ ssh พฤติกรรมนั้นคล้ายกับเทอร์มินัลเสมือน ในทุกกรณี.profileและ.bashrcถูกอ่านและสภาพแวดล้อมของฉันถูกตั้งค่า ดังนั้นตอนนี้ gnome 3.22 ใช้ Wayland และ Wayland .profileไม่ได้อ่าน ฉันจะตั้งค่าไฟล์เริ่มต้นได้อย่างไรเพื่อให้ฉันมีลักษณะพิเศษตามที่อธิบายไว้ข้างต้นอีกครั้ง โปรดทราบว่าฉันไม่ได้ยืนยันว่าอ่านไฟล์บางไฟล์ (ชอบ.profile) สิ่งที่ฉันต้องการคือการตั้งค่าสภาพแวดล้อมของฉันอย่างเหมาะสม นั่นหมายความว่าฉันต้องการเก็บการตั้งค่าเฉพาะของ bash ไว้ในไฟล์กำหนดค่าเริ่มต้น bash และการตั้งค่าอื่น ๆ ไปยังไฟล์เริ่มต้นอื่น ๆ นอกจากนี้ฉันไม่ต้องการคัดลอกการตั้งค่าไปยังไฟล์อื่น …

4
ดำเนินการคำสั่งในการเชื่อมต่อ SFTP ผ่านสคริปต์
นี่เป็นคำถามพื้นฐานที่ฉันเพิ่งจะค่อนข้างใหม่ในการทุบตีและไม่สามารถหาวิธีการทำเช่นนี้ได้ Googling น่าเสียดายที่ไม่ได้รับฉันทุกที่ เป้าหมายของฉันคือการเชื่อมต่อกับ sftp ไปยังเซิร์ฟเวอร์อัปโหลดไฟล์แล้วตัดการเชื่อมต่อ ฉันมีสคริปต์ต่อไปนี้: UpdateJar.sh #!/bin/bash sftp -oPort=23 kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins #Change directory on server #cd /home/kalenpw/TestWorld/plugins #Upload file put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar exit ปัญหาคือสคริปต์นี้จะสร้างการเชื่อมต่อ SFTP แล้วไม่ทำอะไรเลย เมื่อฉันพิมพ์ exit ในการเชื่อมต่อด้วยตนเองพยายามที่จะดำเนินการคำสั่ง put แต่เนื่องจากเซสชั่น sftp ถูกปิดเพียงแค่พูดว่า put: ไม่พบคำสั่ง ฉันจะทำให้เรื่องนี้ทำงานได้อย่างถูกต้องได้อย่างไร? ขอบคุณ

3
จะบอก Firefox ให้ใช้อุปกรณ์ ALSA อื่นได้อย่างไร
ฉันมีการ์ดเสียงออนบอร์ดและยังมีชุดหูฟังบลูทู ธ ที่เชื่อมต่อด้วย ฉันได้กำหนดค่าอุปกรณ์บลูทู ธ ใน/etc/asound.conf: # cat /etc/asound.conf pcm.bluetooth { type bluetooth device 12:34:56:78:9a:bc profile "auto" } ctl.bluetooth { type bluetooth } โดยค่าเริ่มต้นการ์ดออนบอร์ดจะใช้สำหรับเสียงทั้งหมด (เห็นได้ชัดว่าการ์ดออนบอร์ดที่เป็นค่าเริ่มต้นไม่จำเป็นต้องมีการระบุไว้ใน asound.conf) เมื่อฉันต้องการให้แอปพลิเคชันใช้อุปกรณ์บลูทู ธ ของฉันฉันต้องระบุเช่น: mplayer -ao alsa:device=bluetooth file.mp3 ไม่เป็นไรสำหรับฉัน แต่ฉันต้องการวิธีบอกเบราว์เซอร์ของฉันให้ใช้อุปกรณ์ Bluetooth alsa ด้วย ฉันพบวิธีเริ่ม Chromium โดยใช้--alsa-output-deviceตัวเลือก commandline: chromium --alsa-output-device=bluetooth ฉันต้องการวิธีคล้ายกันเพื่อเริ่ม Firefox แต่ฉันไม่สามารถหาได้ ฉันจะบอก firefox ให้ใช้อุปกรณ์บลูทู …
13 audio  firefox  alsa  browser 

2
ฉันควรส่งชื่อโปรแกรมเมื่อคำเตือนหรือข้อผิดพลาดเกิดขึ้นหรือไม่
หากฉันเขียนสคริปต์หรือโปรแกรมฉันควรส่งออกไปยังชื่อ stderr พร้อมกับคำเตือนหรือข้อความแสดงข้อผิดพลาดหรือไม่? ตัวอย่างเช่น: ./script.sh: Warning! Variable "var" lowered down to 10. หรือ: ./prog.py: Error! No such file: "file.cfg". ฉันเข้าใจว่าโดยทั่วไปแล้วมันเป็นเพียงเรื่องของรสนิยม (โดยเฉพาะถ้าคุณเขียนของคุณเองเพื่อตัวเอง) แต่ฉันสงสัยว่ามีอะไรที่ธรรมดาบ้างไหม? ฉันเชื่อว่ายูทิลิตี UNIX / Linux ส่วนใหญ่เขียนชื่อของตัวเองเมื่อมีบางสิ่งเกิดขึ้นดังนั้นจึงเป็นเรื่องที่ดี แต่มีแนวทางหรือกฎที่ไม่ได้พูดวิธีการทำเช่นนั้นและไม่ทำอย่างไร ตัวอย่างเช่นไม่แนะนำให้ติดตั้งไบนารีภายใต้/usr/bin/แทน/usr/local/bin/หรืออย่างอื่น มีกฎที่คล้ายกันเกี่ยวกับการส่งออกไปยัง stderr? ฉันควรเขียนชื่อตามด้วยโคลอนหรือไม่? หรือเพียงแค่ "เตือน!" และ "ผิดพลาด!" คำ? ฉันไม่พบอะไรเลย แต่อาจมีบางคนบอกให้ฉันรู้ได้ คำถามนี้เป็นคำถามเล็กน้อยเกี่ยวกับวิธีปฏิบัติในการเขียนโปรแกรม แต่ฉันคิดว่ามันเหมาะสมกว่าที่นี่มากกว่าในstackoverflowเนื่องจากเป็นเรื่องเกี่ยวกับประเพณี UNIX / Linux และไม่ใช่โปรแกรมทั่วไป

2
เหตุใดราคาจึงจำเป็นสำหรับอาร์กิวเมนต์ไฟล์เมื่อเรียกสคริปต์ Bash นี้
ฉันค่อนข้างใหม่กับการเขียนสคริปต์ Bash ฉันมี "testcript" ซึ่งฉันใช้เป็นพื้นฐานสำหรับสคริปต์ขั้นสูง / มีประโยชน์มากขึ้น: #!/bin/bash files=$1 for a in $files do echo "$a" done เมื่อฉันเรียกสิ่งนี้โดยไม่ใส่เครื่องหมายอัญประกาศมันก็แค่หยิบไฟล์หนึ่งไฟล์ในไดเรกทอรี: testscript *.txt แต่เมื่อฉันเรียกมันด้วยเครื่องหมายคำพูดมันทำงานได้อย่างถูกต้องและเลือกไฟล์ข้อความทั้งหมด: testscript '*.txt' เกิดขึ้นที่นี่คืออะไร?

2
มีวิธีใดบ้างที่เชลล์สคริปต์จะรู้ว่าโปรแกรมใดทำงานหรือไม่
ใน * nix world มีวิธีใดที่เชลล์สคริปต์จะมีข้อมูลเกี่ยวกับโปรแกรมที่เรียกใช้งานหรือไม่ ตัวอย่าง: /path/to/script1 /path/to/script_xyz ในสถานการณ์สมมตินี้script_xyzจะมีข้อมูลเส้นทาง ( /path/to/script1) หรือ ประมวลผล PID ของนิติบุคคลที่ได้ดำเนินการ หมายเหตุ: ฉันอยากรู้เกี่ยวกับการแก้ปัญหาและแนวทางที่แตกต่างกันฉันไม่คาดหวังว่าสิ่งนี้จะเป็นไปได้จริง


1
ตัวเลือกเทียบเท่า '-z' ของ gnu-netcat ใน nmap-ncat คืออะไร?
ฉันจะตรวจสอบพอร์ตฟังบนบริการก่อนที่จะเรียกใช้สคริปต์โดยใช้สิ่งนี้: until nc -z $HOST $PORT do echo "waiting for service to be available..." sleep 0.5 done exec "/my/script" มันเคยทำงานกับ gnu-netcat แต่ตอนนี้ฉันได้อัพเกรดการกระจาย Linux และใช้ nmap-ncat สำหรับ/usr/bin/ncคำสั่ง ฉันต้องการทราบวิธีแก้ปัญหาที่เทียบเท่าเพื่อใช้กับnmap-ncatแพ็คเกจ
13 netcat  nmap 


2
วิธีใช้ตัวละครพิเศษเป็นตัวละครธรรมดา
คำถามมากมายเช่น 'วิธีพิมพ์อักขระสองคำพูด (") ได้อย่างไร กำลังถูกถามและเราไม่ต้องการให้ชุมชนของเรามีคำตอบเหมือนกัน (พิมพ์เป็น\"ถ้าไม่อยู่ใน's, "ถ้าอยู่ใน's) ดังนั้นคำถามอยู่ที่นี่ คุณไม่สามารถพิมพ์ตัวอักษรพิเศษลงในเทอร์มินัลแบบปกติเช่นคำสั่งนี้จะล้มเหลว: echo Updates (11) ดังนั้นวิธีการพิมพ์ในตัวอักษรเหล่านี้ใน terminal เช่นถ้าพวกเขาเป็นคนปกติ? !#$^&*?[](){}<>~;'"\|<space><tab><newline>

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