Unix & Linux

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

7
รวบรวมรหัสจาก apue
เพียงแค่ตอนนี้ฉันได้เริ่มอ่านหนังสือ: การเขียนโปรแกรมในUNIX®สิ่งแวดล้อมขั้นสูง ฉันต้องการลองใช้ตัวอย่างรหัสแรก ฉันใช้ Scientific Linux 6.4 ฉันดาวน์โหลดซอร์สโค้ดและตามที่ระบุใน README ของมันฉันรันmakeในไฟล์ที่ไม่มีการบีบอัด ฉันเขียนโปรแกรมแรก ( lsคำสั่งจำลอง) #include "./include/apue.h" #include <dirent.h> int main(int argc, char *argv[]) { DIR *dp; struct dirent *dirp; if(argc!=2) err_quit("usage: test directory_name"); if((dp=opendir(argv[1]))==NULL) err_sys("Can't open %s", argv[1]); while((dirp=readdir(dp))!=NULL) printf("%s\n", dirp->d_name); closedir(dp); return 0; } และวางไว้ในไฟล์ที่ไม่มีการบีบอัด ตามที่หนังสือแนะนำฉันก็วิ่งไป: gcc myls.c. แต่ฉันได้รับข้อผิดพลาดนี้: # …
12 compiling 

3
ทำไม Linux ไม่ให้ฉันเล่นด้วย / dev / dsp
ฉันทำงานผ่านตำรา Linux และมันบอกฉันเกี่ยวกับอุปกรณ์ มันบอกว่าถ้าฉันส่งออกที่เหมาะสมไป/dev/dspแล้วมันจะเล่นเสียง ตัวอย่างคือcat file.wav > /dev/dspโดยที่ file.wav เป็นเพียงไฟล์. wav ใด ๆ เมื่อฉันทำสิ่งนี้ฉันจะได้รับอนุญาตปฏิเสธ ถ้าฉันใช้สิ่งนี้ด้วย sudo ฉันยังคงได้รับอนุญาตปฏิเสธ ถ้าฉันsuแรกไม่มีเสียงเล่น ทำไมฉันถึงได้รับอนุญาตปฏิเสธด้วยsudo? ทำไมไม่มีเสียงเล่นแม้จะมีsu?

5
จุดตัดของสองอาร์เรย์ใน BASH
ฉันมีสองอาร์เรย์ดังนี้: A=(vol-175a3b54 vol-382c477b vol-8c027acf vol-93d6fed0 vol-71600106 vol-79f7970e vol-e3d6a894 vol-d9d6a8ae vol-8dbbc2fa vol-98c2bbef vol-ae7ed9e3 vol-5540e618 vol-9e3bbed3 vol-993bbed4 vol-a83bbee5 vol-ff52deb2) B=(vol-175a3b54 vol-e38d0c94 vol-2a19386a vol-b846c5cf vol-98c2bbef vol-7320102b vol-8f6226cc vol-27991850 vol-71600106 vol-615e1222) อาร์เรย์ไม่ถูกเรียงลำดับและอาจมีองค์ประกอบที่ซ้ำกัน ฉันต้องการสร้างจุดตัดของทั้งสองอาร์เรย์และเก็บองค์ประกอบไว้ในอาร์เรย์อื่น ฉันจะทำอย่างไร นอกจากนี้ฉันจะดูรายการองค์ประกอบที่ปรากฏใน B และไม่มีใน A ได้อย่างไร
12 bash  scripting  array 

2
ค้นหาและลบรายการที่ซ้ำในไดเรกทอรี
ฉันมีไดเรกทอรีที่มีไฟล์ img หลายไฟล์และบางไฟล์เหมือนกัน แต่มีชื่อแตกต่างกัน ฉันต้องการลบรายการที่ซ้ำกัน แต่ไม่มีเครื่องมือภายนอกที่มีbashสคริปต์เท่านั้น ฉันเป็นผู้เริ่มต้นใน Linux ฉันลองซ้อนสำหรับ loop เพื่อเปรียบเทียบmd5ผลรวมและขึ้นอยู่กับผลการลบ แต่มีบางอย่างผิดปกติกับไวยากรณ์และมันไม่ทำงาน ความช่วยเหลือใด ๆ สิ่งที่ฉันพยายามคือ ... for i in directory_path; do sum1='find $i -type f -iname "*.jpg" -exec md5sum '{}' \;' for j in directory_path; do sum2='find $j -type f -iname "*.jpg" -exec md5sum '{}' \;' if test $sum1=$sum2 ; …

5
ฉันควรใช้คำสั่งอะไรหลังจากทำการเปลี่ยนแปลงไฟล์ / etc / passwd
ฉันได้ทำการเปลี่ยนแปลงบางอย่างกับไฟล์ / etc / passwd ตอนนี้ฉันต้องการที่จะดูว่าผลของการเปลี่ยนแปลงที่เกิดขึ้นหรือไม่คำสั่งสิ่งที่ฉันควรใช้สำหรับการที่ ตัวอย่างเช่นหลังจากทำการเปลี่ยนแปลงไฟล์ / etc / ssh / ssh_config ฉันจะรันคำสั่ง /etc/init.d/sshd
12 users  password  etc 

2
เหตุใด 666 การอนุญาตให้สร้างไฟล์เริ่มต้น
ในฐานะที่ผมเคยพบเมื่อใช้ umask สิทธิ์สูงสุดที่คุณสามารถให้ไฟล์เป็น 666 umask 0000ซึ่งจะกระทำโดย นั่นเป็นเพราะสิทธิ์การสร้างไฟล์เริ่มต้นซึ่งดูเหมือนจะเป็น 666 ในทุกระบบที่ฉันรู้ ฉันรู้สำหรับไฟล์ที่เราต้องการสิทธิ์ในการปฏิบัติการเพื่อแสดงเนื้อหา แต่ทำไมเรา จำกัด สิทธิ์การสร้างไฟล์เริ่มต้นใน 666

5
sed ทำงานแตกต่างกันใน FreeBSD และบน Linux?
ผมใช้ทั้ง Linux และ FreeBSD (โดยเฉพาะผมใช้ Debian Linux และ PC-BSD) sedและฉันพบบางสิ่งบางอย่างเกี่ยวกับแปลก ฉันมักจะต้องแปลงไฟล์ "ค่าที่คั่นด้วยแท็บ" เป็น "ค่าที่คั่นด้วยเครื่องหมายจุลภาค" วิธีที่ง่ายที่สุดที่ฉันรู้คือใช้sedเช่นนี้ sed 's/\t/,/g' inputFile.txt > outputFile.csv มันใช้งานได้ดีบน Linux: มันแทนที่ทุกแท็บด้วยเครื่องหมายจุลภาค ... แต่บน FreeBSD มันไม่ได้แทนที่อะไรเลย !!! ฉันพลาดอะไรไปรึเปล่า? มีไวยากรณ์กับ FreeBSD sedที่แตกต่างจากหนึ่งบน Linux หรือไม่
12 sed  freebsd 

5
การติดตั้งบน GUI ทำงานอย่างไร "ภายใต้ประทุน"
UPDATE กรุณาแก้ไขให้ฉันถ้าฉันผิด : สำหรับการทำงานกับคอมพิวเตอร์ของฉันด้วยการกระจาย GNU / Linux ชื่อ Debian ฉันรู้สองวิธีในการป้อนคำสั่งเริ่มแอปพลิเคชันเปิดไฟล์ ฯลฯ : บรรทัดคำสั่งอินเตอร์เฟซที่ฉันป้อนข้อความ Graphical User Interface [aka GUI ]: อินเตอร์เฟซที่ให้บริการ "หน้าต่าง" สัญลักษณ์ ฯลฯ มีบางอย่างเกิดขึ้นในชื่อ "Window Manager" เมื่อฉันใช้ GNU / Linux ฉันทำงานบนระบบX-Window [เท่าที่ฉันรู้] โพสต์ต้นฉบับ สถานการณ์ : ฉันปิดใช้งานการเมานท์อัตโนมัติ/etc/fstabสำหรับ USB Sticks [เช่น/dev/sdb1] การติดตั้งจะต้องเป็นrootหรืออย่างน้อยsudoรายการในบรรทัดคำสั่ง แต่ไม่ได้อยู่ในผู้จัดการหน้าต่าง (!) ฉันไม่ได้หมายความว่าautomountฉันหมายถึง "การคลิกที่สัญลักษณ์" ในเครื่องมือจัดการหน้าต่างเปิดอุปกรณ์บน GUI โดยไม่มีคำถามใด ๆ ซึ่งใน CLI …

2
ดูเฉพาะการตรวจสอบผลลัพธ์ที่มองเห็นได้หรือไม่?
ไม่watchเพียง แต่การตรวจสอบการส่งออกมองเห็นได้จากคำสั่งหรือไม่? สมมติว่าฉันอยู่ในไดเรกทอรีที่มีเนื้อหาดังต่อไปนี้: $ ls a b c d e f g h i j k l m n ถ้าฉันเรียกใช้watch -g ls -1ฉันคาดหวังว่ามันจะออกหากมีการเพิ่มหรือลบไฟล์ สิ่งที่เกิดขึ้นจริงคือมันจะออกก็ต่อเมื่อไฟล์ดังกล่าวปรากฏในเทอร์มินัลเอาท์พุตของwatch: $ watch -g ls -1 Every 2.0s: ls -1 Wed Nov 13 16:35:03 2013 a b c d e f การลบไฟล์mซึ่งไม่สามารถมองเห็นได้เพราะขนาดของเทอร์มินัลของฉันไม่ได้ทำอะไรเลย การลบไฟล์ที่มองเห็นได้ว่าdทำให้เกิดwatchการออกตามที่คาดไว้ -gมีการอธิบายการตั้งค่าสถานะในmanหน้าของฉัน: -g, --chgexit Exit …
12 watch 

6
การเรียงบล็อกของเส้น
ฉันมีไฟล์ที่มี 4n บรรทัด นี่คือข้อความที่ตัดตอนมาจากมันมี 8 บรรทัด 6115 8.88443 6116 6.61875 6118 16.5949 6117 19.4129 6116 6.619 6117 16.5979 6118 19.4111 6115 8.88433 สิ่งที่ฉันต้องการจะทำคือจัดเรียงบล็อกโดยแต่ละบล็อกประกอบด้วย 4 บรรทัดตามคอลัมน์แรก ผลลัพธ์ของข้อความที่ตัดตอนมาควรมีลักษณะที่แสดงด้านล่าง 6115 8.88443 6116 6.61875 6117 19.4129 6118 16.5949 6115 8.88433 6116 6.619 6117 16.5979 6118 19.4111

1
การอนุญาตของไฟล์มีผลกับไฟล์ที่สร้างใหม่อย่างไร
ฉันมีไดเรกทอรีที่มีการอนุญาตดังต่อไปนี้: drwxr-s---. user group folder foo.txtบนเดสก์ทอปผมเข้าถึงโฟลเดอร์นี้และคลิกขวาเพื่อสร้างการเรียกไฟล์ใหม่ แล้วใช้ terminal, $ touch bar.txtฉันสร้างไฟล์อื่นโดยใช้คำสั่ง เมื่อฉันตรวจสอบการอนุญาตสำหรับไฟล์เหล่านี้ฉันมี: -rw-r--r--. user group foo.txt -rw-rw-r--. user group bar.txt -rw-r-----. user groupผมคาดหวังว่า สิทธิ์ในการเขียนพิเศษสำหรับกลุ่มและการอนุญาตให้อ่านสำหรับผู้อื่นเกิดขึ้นได้อย่างไร

1
ขนาดคอนโซล Debian ใน VirtualBox
ฉันติดตั้ง Debian 7.2.0 เป็นระบบปฏิบัติการเกสต์บน VirtualBox 4.2.18 (ระบบปฏิบัติการโฮสต์คือ Windows 7) ฉันติดตั้ง Debian โดยไม่มีส่วนต่อประสานกราฟิกกับผู้ใช้ เมื่อฉันเริ่มใช้ Debian ขนาดของคอนโซลนั้นเล็กมาก ฉันจะเปลี่ยนสิ่งนั้นได้อย่างไร

2
ตรวจสอบว่าทำงานใน terminal เสมือนหรือไม่
ฉันต้องการที่จะautologinไปtty1เมื่อเข้าสู่ระบบแล้วใช้vlockเพื่อล็อค ฉันจะตรวจจับจาก Bash ได้อย่างไรถ้าเทอร์มินัลปัจจุบันเป็นคอนโซลเทอร์มินัลเสมือน (เช่นtty1) เพื่อที่ฉันจะสามารถวางvlockสายเข้า.bash_profileและทำงานได้ก็ต่อเมื่อลงชื่อเข้าใช้ผ่านtty1เท่านั้น

4
สุ่มไฟล์โดยมีข้อ จำกัด เพิ่มเติม
ฉันมีรายการเพลงขนาดใหญ่และในขณะที่ศิลปินบางคนมีหลายอัลบั้มคนอื่น ๆ มีเพียงเพลงเดียว ฉันต้องการเรียงลำดับเพลย์ลิสต์เพื่อให้ศิลปินคนเดียวกันไม่เล่นสองครั้งติดต่อกันหรือเพลงของเขาจะไม่จบลงส่วนใหญ่ในตอนต้นหรือตอนท้ายของเพลย์ลิสต์ ตัวอย่างเพลย์ลิสต์: $ cat /tmp/playlist.m3u Anna A. - Song 1 Anna A. - Song 2 I--Rock - Song 1 John B. - Song 1 John B. - Song 2 John B. - Song 3 John B. - Song 4 John B. - Song 5 Kyle C. - …

1
ข้อผิดพลาดของไดรเวอร์ไร้สาย b43
ฉันเพิ่งติดตั้ง Arch และฉันสังเกตเห็นว่าช่วง wifi ของฉันแย่มาก ฉันต้องอยู่ห่างจากเราเตอร์ประมาณ 10 ฟุตเพื่อให้ทำงานได้ ฉันยังสังเกตเห็นว่าเมื่อฉันบูตฉันได้รับข้อความนี้: การสนับสนุนสำหรับการแก้ไขแกน 0x17 และ 0x18 allhwsupport=0ปิดใช้งานโดยพระรามโมดูล ลองb43.allhwsupport=1 ฉันยังใหม่กับ Linux อย่างสมบูรณ์และฉันก็ไม่รู้ว่ามันหมายถึงอะไร ฉันจะสมมติว่าฉันจะติดตั้งหรืออัปเดตไดรเวอร์อีกครั้ง แต่ฉันไม่รู้ว่าจะทำอย่างไร ฉันดูประมาณ 3 ชั่วโมงบน Arch wiki แต่ไม่มีที่ไหนในนั้นที่บอกว่าจะอัพเดทไดรเวอร์อย่างไร มันเหมือนกับว่ามันสันนิษฐานว่าฉันรู้วิธีที่จะทำ ฉันกำลังใช้ชิป Broadcom และฉันต้องการทราบว่าเป็นปัญหาที่ง่ายหรือฉันจะอัพเดตหรือติดตั้งไดรเวอร์ใหม่ผ่านเทอร์มินัลได้ มันทำกับ Pacman ได้ไหม? ฉันไม่รู้.

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