Unix & Linux

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


1
อะไรคือความแตกต่างที่สำคัญระหว่าง BSD และ GNU / Linux userland?
ฉันได้อ่าน Unix & Linux เกี่ยวกับ BSD และ GNU เป็นจำนวนมาก แต่ฉันก็ยังไม่เข้าใจว่าความแตกต่างที่เกิดขึ้นจริงในทางปฏิบัติระหว่าง BSD และ GNU คืออะไรแม้ว่าจะมีการกล่าวถึงบ่อยครั้งก็ตาม ใครบางคนสามารถทำอย่างละเอียด? เมื่อตอบโปรดอธิบายการเชื่อมต่อทางประวัติศาสตร์โดยละเอียดโปรดจำไว้ว่าฉันไม่ได้มีชีวิตอยู่นานพอที่จะมีประสบการณ์เมื่อ GNU / Linux ไม่ใช่ UNIX หลัก (ยกเว้น OS X)
37 bsd  gnu 

4
คลายซิปไฟล์เนื้อหา แต่ไม่สร้างโฟลเดอร์เก็บถาวร
ฉันมีไฟล์ myarchive.zip ที่มีหลายไดเรกทอรีไฟล์ ฯลฯ สมมติว่าไฟล์ myarchive.zip นี้อยู่ในไดเรกทอรีที่เรียกว่า "b" เมื่อฉันใช้คำสั่ง "unzip myarchive.zip" ระบบจะสร้างไดเรกทอรีโดยค่าเริ่มต้นที่เรียกว่า "myarchive" ด้วยเนื้อหาของไฟล์ zip ฉันไม่ต้องการให้ระบบสร้างไดเรกทอรี "myarchive" นี้ - ฉันต้องการให้เนื้อหาถูกแยกไปยังไดเรกทอรี "b" เป็นไปได้ไหม สิ่งที่ฉันทำตอนนี้คือการออกคำสั่ง "cp" เพื่อคัดลอกไฟล์จากไดเรกทอรีที่สร้างขึ้นใหม่ (ในกรณีนี้ "myarchive" เป็น "b") ไปยังตำแหน่งที่ฉันต้องการ
37 cp  zip 

5
ทำไมฉันต้องตั้งค่า env vars ใน tmux อีกครั้งเมื่อฉันแนบใหม่?
ฉันทำงานบน mac และ ssh / tmux เป็นหลักแนบกับเครื่อง Linux เพื่อทำงานของฉัน ฉันมี ssh-agent กำลังทำงานบนเครื่อง Linux ฉันมี set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY" .tmux.confในของฉัน แต่เมื่อใดก็ตามที่ฉันแนบมากับเซสชั่นนี้ฉันต้องทำงาน tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK เพื่อให้หน้าต่าง tmux ใหม่$SSH_AUTH_SOCKตั้งค่าไว้ถูกต้อง ฉันไม่ต้องการทำเช่นนี้ ความคิดใด ๆ ปรับปรุง ฉันคิดว่าฉันอธิบายไม่ได้ดี นี่คือฟังก์ชั่นเชลล์ของฉันเพื่อเปิดเชลล์บนเครื่องระยะไกล: sshh () { tmux -u neww -n ${host} "ssh -Xt ${host} $*" } …

4
ฉันจะลบเลขศูนย์นำออกจากผลลัพธ์ของ 'วันที่' หรือหลีกเลี่ยงการตีความเลขฐานแปดของเลขทศนิยมดังกล่าวได้อย่างไร
ฉันมีสิ่งนี้: date +"%H hours and %M minutes" ฉันใช้เทศกาลเพื่อบอกว่ามัน .. แต่มันบอกว่า: "ศูนย์เก้าชั่วโมง" .. ฉันอยากให้มันพูดว่า "เก้าชั่วโมง"! แต่วันที่ให้ฉัน 09 เสมอ ... ดังนั้นฉันสงสัยว่า bash สามารถทำให้กลายเป็นเพียงแค่ 9 ได้หรือไม่? ในสคริปต์ที่ซับซ้อนฉันพยายาม printf %d 09 แต่มันล้มเหลว .. ไม่ใช่เลขฐานแปด :( ความคิดใด ๆ
37 bash  shell  date  arithmetic 

3
Modeless vs modal editors
ฉันเพิ่งเริ่มเรียนรู้ Linux และประสบการณ์การเขียนโปรแกรมทั้งหมดก่อนหน้านี้ของฉันใช้แพลตฟอร์ม Windows ฉันเจอ Vim editor และอ่านว่ามันเป็น modal editor ซึ่งแตกต่างจาก notepad ซึ่งเรียกว่าเป็น modeless editor คุณช่วยอธิบายความแตกต่างระหว่างโมเดอเรเตอร์และโมดัลทั่วไปได้อย่างไร?

4
การดูข้อมูล Linux Library / รุ่นที่ทำงานได้
ใน Windows EXE และ DLL มีข้อมูลรุ่นรวมถึงอย่างน้อยฟิลด์ต่อไปนี้: เวอร์ชันไฟล์ รุ่นผลิตภัณฑ์ ชื่อภายใน ชื่อผลิตภัณฑ์ ลิขสิทธิ์ ในห้องสมุด Linux / ปฏิบัติการ: มีเขตข้อมูลใดบ้าง วิธีการดูข้อมูลดังกล่าว? เครื่องมืออะไร / ห้องสมุดที่จะอ่าน

2
กรอก avfs directory ปลอมใน zsh
ฉันจะปรับแต่งระบบความสมบูรณ์ของ zsh เพื่อให้ไฟล์ "ปลอม" สมบูรณ์ในบางสถานการณ์ได้อย่างไร แม่นยำยิ่งขึ้นระบบไฟล์AVFSทำให้ไฟล์เก็บถาวรเป็นไดเรกทอรีโดยการสร้าง "ไดเรกทอรีปลอม" ถัดจากไฟล์เก็บถาวร โดยค่าเริ่มต้นมันทำซ้ำลำดับชั้นของไดเรกทอรีทั้งหมดภายใต้จุดเชื่อมต่อของ~/.avfsมัน นอกจากนี้ภายใต้~/.avfsสำหรับทุกไฟล์เก็บถาวรเช่น/tmp/foo.zipนอกเหนือจากไฟล์เก็บถาวรตัวเอง~/.avfs/tmp/foo.zipมีไดเรกทอรีที่เรียกว่า~/.avfs/tmp/foo.zip#ซึ่งแสดงเนื้อหาของไฟล์เก็บถาวร อย่างไรก็ตามไดเรกทอรีพิเศษนี้ไม่ปรากฏในรายชื่อของ~/.avfs/tmp: มันมีอยู่เฉพาะเมื่อมีการร้องขออย่างชัดเจน (สิ่งนี้คล้ายกับการทำงานของเคาน์เตอร์อัตโนมัติ) mountavfs cd ~/.avfs/tmp/foo.zip\# เมื่อฉันพิมพ์คำสั่งเหมือนคำสั่งด้านบนfoo.zip#จะไม่ปรากฏเป็นความสำเร็จที่สมบูรณ์~/.avfs/tmp/เนื่องจากไม่มีไดเรกทอรีดังกล่าว วิธีที่ฉันสามารถบอก zsh ว่าเมื่อใดก็ตามที่มีไฟล์ที่มีเส้นทางแบบเต็ม$arcแมตช์~/.avfs/**/*.(tgz|zip)¹ก็ควรทำเป็นว่ามีไดเรกทอรีที่เรียกว่า${arc}#? (โปรดทราบว่าฉันต้องการความสมบูรณ์ในการทำงานกับการเรียกทุกครั้ง_filesหรือ_dirsไม่ใช่เฉพาะสำหรับcdคำสั่งฉันไม่ต้องการให้ทำซ้ำรหัสของ_filesฟังก์ชันหากเป็นไปได้) ¹ และส่วนที่เหลือทั้งหมดของส่วนขยาย

4
ฉันจะค้นหาประกาศนามแฝงปลอมได้อย่างไร
ฉันพยายามที่จะหาที่เฉพาะเจาะจงaliasได้รับการประกาศ ฉันได้ค้นหาสถานที่ตามปกติทั้งหมดที่ฉันรู้ว่าจะหาชื่อแทน: ~ / .bashrc ~ / .bash_profile / etc / bashrc / etc / รายละเอียด โดยไม่มีโชค ฉันรู้ว่ามันเป็นaliasเพราะเมื่อฉันทำwhich COMMANDฉันได้รับ: alias COMMAND='/path/to/command' /path/to/command มีวิธีการค้นหาไฟล์ที่ประกาศaliasเพียงรู้aliasชื่อหรือไม่?
37 bash  alias  bashrc 

4
วิธีเปิดใช้งานการเติมข้อความอัตโนมัติสำหรับเส้นทางระยะไกลเมื่อใช้ scp?
ฉันรีโมตคัดลอกไฟล์ไปยังแล็ปท็อปของฉันโดยใช้: scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here ฉันต้องการที่จะเติมข้อความอัตโนมัติเส้นทางระยะไกลโดยการกดปุ่มแท็บ
37 bash  ssh  autocomplete 

4
ssh ผ่านหลายโฮสต์
ในการไปยังเครื่องของฉันในสำนักงานของฉันในขณะนี้ฉันกำลังทำสิ่งนี้: me@home:~$ ssh unix.university.com me@unix:~$ ssh unix.department.univeristy.com me@unix.department:~$ ssh office-machine.department.university.com me@office-machine:~$ echo "This is very annoying" มีวิธีง่าย ๆ ในการทำให้กระบวนการนี้เป็นอัตโนมัติหรืออาจเป็นคำสั่งเดียวที่ฉันสามารถใช้ได้เมื่อสิ้นสุด

3
ทำไมบางแอปพลิเคชันใช้ ~ / .config / appname สำหรับข้อมูลการกำหนดค่าของพวกเขาในขณะที่คนอื่นใช้ ~ / .appname?
ฉันสังเกตเห็นว่าบางแอปพลิเคชันนำไฟล์การตั้งค่าไปใช้~/.config/appnameขณะที่บางแอปพลิเคชันใช้~/.appname(ในแบบคลาสสิก AFAIK) สำหรับสิ่งนี้ ความรู้สึกในความแตกต่างนี้และสิ่งที่จะดีกว่าที่จะพิจารณาสำหรับการใช้งานของฉัน? อัปเดต: ดูเหมือนว่า (ค่าเริ่มต้น XUbuntu 11.10) ของฉัน $ XDG_CONFIG_HOME ถูกตั้งค่าเป็น~/และแอปพลิเคชั่นส่วนใหญ่ในระบบของฉัน (เช่น Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine, ฯลฯ ) ปฏิบัติตามสิ่งนี้ แต่ยังมีแอปพลิเคชั่นมากมาย (เช่น Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE และอื่น ๆ ) ที่ใช้~/.config/แทน อีกสิ่งที่น่าสงสัยก็คือไดเรกทอรีที่อยู่ใน~/.config/นั้นไม่ถูกซ่อน (ไม่มีจุดในชื่อ) - ไม่ใช่แอปพลิเคชันที่คาดว่าจะมีชื่อคงที่โดยไม่ขึ้นอยู่กับตำแหน่ง (ค่า $ XDG_CONFIG_HOME)

1
หลีกเลี่ยง“ BASH-isms” ในเชลล์สคริปต์
มีเครื่องมือที่คล้ายกับPerl :: Critic หรือไม่ที่จะตรวจสอบเชลล์สคริปต์ของคุณและชี้ให้เห็นข้อบกพร่องปัญหาเกี่ยวกับการพกพาการใช้งานโปรแกรมที่ไม่ได้มาตรฐานโดยไม่มีข้อผิดพลาด ฉันรู้ว่าset -o posixจะปิดใช้งานการใช้งานที่ไม่ใช่ POSIX แต่จะไม่บอกสิ่งที่ฉันต้องการทราบเช่นอาร์เรย์เชลล์ดัชนี zsh เริ่มต้นที่ 1 และทุบตีจาก 0 และเถ้าไม่สนับสนุนอาร์เรย์เลย
37 bash  shell  zsh  ash 

12
วิธีการจัดเก็บและเข้าถึงคำสั่งที่ใช้บ่อยอย่างรวดเร็ว?
ฉันมีคำสั่งจำนวนมากที่ฉันต้องเรียกใช้งานเป็นประจำบ่อยครั้งที่มีความแปรปรวนน้อยที่สุด ตอนนี้ฉันกำลังเก็บพวกมันทั้งหมด.bash_historyและใช้CTRL- Rเพื่อเข้าถึงพวกเขา แต่ฉันสงสัยว่ามีวิธีที่ดีกว่านี้ไหม สิ่งที่ฉันกำลังมองหา: ง่ายต่อการเพิ่มคำสั่งใหม่ ง่ายต่อการค้นหาและดำเนินการคำสั่งที่ต้องการอีกครั้ง หลีกเลี่ยงคำสั่งที่ไม่ต้องการในคำแนะนำ แต่น่าเสียดายที่ Bash_history ไม่เป็นเช่นนั้นที่แข็งแกร่งในความต้องการที่สาม: ถ้าผมทำไม่กี่cdและlsก็เติมแฟ้มประวัติได้อย่างรวดเร็ว ฉันเพิ่งเรียนรู้เกี่ยวกับHIST_SIZEและคุณสามารถกำหนดค่าประวัติเพื่อหลีกเลี่ยงการทำซ้ำหรือคำสั่งบางอย่าง แต่ก่อนที่จะกำหนดค่าทั้งหมดที่ฉันต้องการเพื่อให้แน่ใจว่ามันเป็นวิธีที่ดีที่สุด

3
ขีดกลางใน printf
ฉันพยายามใช้ printf เพื่อจัดรูปแบบเอาต์พุตสวย ๆ ในสคริปต์ทุบตี เช่น: ----------------------- | This is some output | ----------------------- แต่ฉันได้พบพฤติกรรมบางอย่างที่ฉันไม่เข้าใจ $ printf "--" ทำให้ฉันมีข้อผิดพลาด printf: usage: printf [-v var] format [arguments] และ $ printf "-stuff"ผลลัพธ์ใน-bash: printf: -s: invalid option เห็นได้ชัดว่า printf คิดว่าฉันกำลังพยายามผ่านข้อโต้แย้งบางอย่างในขณะที่ฉันไม่ได้ ในขณะเดียวกันโดยบังเอิญฉันพบวิธีแก้ปัญหานี้: $ printf -- "--- this works now ----\n"ให้ฉัน--- this works now ---- …
37 bash 

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