Unix & Linux

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

4
ทำไม cat x >> x loop
คำสั่ง bash ต่อไปนี้จะเข้าสู่วง infinte: $ echo hi > x $ cat x >> x ฉันเดาได้ว่าcatอ่านต่อไปxหลังจากเริ่มเขียนไปยัง stdout แล้ว อย่างไรก็ตามสิ่งที่น่าสับสนคือการทดสอบการใช้งานแมวของฉันแสดงพฤติกรรมที่แตกต่าง: // mycat.c #include <stdio.h> int main(int argc, char **argv) { FILE *f = fopen(argv[1], "rb"); char buf[4096]; int num_read; while ((num_read = fread(buf, 1, 4096, f))) { fwrite(buf, 1, num_read, stdout); fflush(stdout); …

3
การเรียกใช้สคริปต์ sh: «การอนุญาตถูกปฏิเสธ»แม้จะมีบิตและรูทที่สามารถเรียกทำงานได้
ฉันติดตั้ง Debian ในVirtualBox (สำหรับการทดลองต่าง ๆ ซึ่งโดยปกติแล้วระบบของฉัน) และพยายามที่จะเปิดตัวสคริปต์ addon ของแขก VirtualBox ฉันเข้าสู่ระบบในฐานะ root และพยายามที่จะเปิดตัวautorun.shแต่ฉันได้รับ«การอนุญาตถูกปฏิเสธ» ls -lแสดงให้เห็นว่าสคริปต์มีสิทธิ์ดำเนินการ ขออภัยที่ฉันไม่สามารถคัดลอกผลลัพธ์ - VirtualBox ไม่มีประโยชน์อย่างแน่นอนหากไม่มี addon ไม่ว่าจะเป็นไดเรกทอรีที่ใช้ร่วมกันหรือคลิปบอร์ดที่ใช้ร่วมกันไม่ได้ แต่เพื่อให้แน่ใจว่าฉันคัดลอกสิทธิ์ด้วยมือ: #ls -l ./autorun.sh -r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh ตอนแรกฉันคิดว่าอาจเป็นเพราะสคริปต์ดำเนินการบางอย่างที่ทำให้เกิดข้อผิดพลาด ฉันพยายามแทนที่/bin/shด้วยสิ่งที่ชอบ#/pathtorealsh/sh -xvแต่ฉันไม่ได้ผลลัพธ์ - ดูเหมือนว่าสคริปต์จะไม่สามารถดำเนินการได้ ฉันยังไม่ทราบเลยว่าอะไรจะทำให้เกิด

1
เปลี่ยนขนาดไอคอนในแอปพลิเคชัน Gtk + 3
ใช้Gtk+ 2ฉันสามารถใช้gtk-icon-sizesตัวเลือกเช่นนี้: gtk-icon-sizes = panel-menu=32,32:panel=32,32:gtk-menu=32,32:gtk-large-toolbar=64,64:gtk-small-toolbar=48,48:gtk-button=32,32 gtk-icon-sizesGtk+ 3ได้รับการยกเลิกและลบออกใน ฉันจะเปลี่ยนขนาดไอคอนได้Gtk+ 3อย่างไร
17 gtk3 

3
มีวิธีแปลง zip เป็น tar โดยไม่ต้องแตกไฟล์ไปยังระบบไฟล์หรือไม่?
มีวิธีแปลงzipไฟล์เก็บถาวรเป็นtarไฟล์เก็บถาวรโดยไม่แยกไปที่ไดเรกทอรีชั่วคราวก่อนหรือไม่? (และโดยไม่ต้องเขียนการใช้งานของฉันเองtarหรือunzip)
17 shell-script  tar  zip 

2
วิธีการเรียกใช้บริการผู้ใช้ systemd เพื่อทริกเกอร์ในโหมดสลีป (aka. suspend, hibernate)
จากแหล่งข้อมูลต่าง ๆ ที่ฉันได้เรียนด้วยกัน~/.config/systemd/user/screenlock.service: [Unit] Description=Lock X session Before=sleep.target [Service] Environment=DISPLAY=:0 ExecStart=/usr/bin/xautolock -locknow [Install] WantedBy=sleep.target systemctl --user enable screenlock.serviceผมได้เปิดใช้งานได้โดยใช้ แต่หลังจากรีบูตเครื่องเข้าสู่ระบบระงับและดำเนินการต่อ (ทดสอบทั้งกับsystemctl suspendและโดยการปิดฝา) หน้าจอจะไม่ถูกล็อคและไม่มีอะไรjournalctl --user-unit screenlock.serviceมา ผมทำอะไรผิดหรือเปล่า? กำลังDISPLAY=:0 /usr/bin/xautolock -locknowล็อคหน้าจอตามที่คาดไว้ $ systemctl --version systemd 215 +PAM -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ +SECCOMP -APPARMOR $ awesome --version awesome v3.5.5 (Kansas …

2
จะเรียกนามแฝงที่หายไปได้อย่างไร
ฉันสร้างคำสั่ง echo ไปที่ไฟล์. bash_aliases ของฉันและลบนามแฝงทั้งหมดของฉันยกเว้น alias ทดสอบ อย่างไรก็ตามฉันยังคงเปิดเซสชันที่มีชื่อแทนโหลดไว้ (ใน tcl?) ฉันสามารถดึงพวกมันออกจากเซสชั่นนี้ได้หรือไม่?

1
การเปลี่ยนลำดับของพื้นที่ทำงานใน Gnome Shell
ใน Gnome Shell เป็นไปได้ไหมที่จะเปลี่ยนลำดับของพื้นที่ทำงานโดยใช้การลากแล้วปล่อย ตัวอย่างเช่นเป็นไปได้หรือไม่ที่จะทำให้พื้นที่ทำงาน 2 เป็นพื้นที่บนสุดโดยการลากเหนือพื้นที่ทำงาน 1 (ซึ่งปัจจุบันเป็นพื้นที่บนสุด)? โปรดดูภาพเพื่อดูสิ่งที่ฉันหมายถึง:

2
ฉันจะใช้สีใน MOTD ได้อย่างไร?
ฉันแก้ไขค่าเริ่มต้น/etc/update-motd.d/00-headerเพิ่มสีเพื่อให้อ่านง่ายขึ้น: printf "Welcome to \e[1;34m%s\e[0m \e[2m(%s %s %s)\e[0m\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)" ฉันสามารถเรียกใช้บรรทัดของรหัสนั้นได้ดีในเทอร์มินัล แต่เมื่อฉันแก้ไข00-headerด้วยข้อมูลนี้ฉันจะได้รับรหัสหลบหนีที่พิมพ์ออกมาในแบบธรรมดา: Welcome to \e[1;36mUbuntu 13.10\e[0m \e[2m(GNU/Linux 3.11.0-23-generic i686)\e[0m ฉันจะเพิ่มสีสันลงในข้อความประจำวันได้อย่างไร
17 shell  ubuntu  colors  motd 

1
การอัปเกรดแบบไม่ต้องใส่ข้อมูลและไฟล์กำหนดค่าที่แก้ไข
เรามีแพ็คเกจอัพเกรดที่ไม่ต้องใส่ข้อมูลอัพเกรดเซิร์ฟเวอร์ของเราด้วยการอัพเกรดความปลอดภัยทุกวันจันทร์และใช้งานได้ดี วันนี้แม้ว่ามันจะอัพเกรดเซิร์ฟเวอร์ทั้งหมดของเราด้วย PHP5 เวอร์ชั่นใหม่ เนื่องจากเราได้ย้ายไฟล์กำหนดค่าเริ่มต้นของ PHP5-FPM ไปแล้ว apt จึงบ่นว่าไฟล์นั้นถูกย้ายไปแล้วและสิ่งที่เราต้องการจะทำ (ติดตั้งเวอร์ชันใหม่, เก็บเวอร์ชันเก่า, แสดงความแตกต่าง, เริ่มเชลล์) เกี่ยวกับมัน เนื่องจากการอัพเกรดแบบไม่รู้ตัวไม่ทราบวิธีจัดการกับสิ่งนี้มันถูกยกเลิกและเราถูกทิ้งไว้กับเครื่องหลายสิบเครื่องจนกระทั่ง PHP5-FPM ถูกรีสตาร์ทโดยการตรวจสอบ ดังนั้นคำถามคือ - เราจะแน่ใจได้อย่างไรว่าการอัปเกรดแบบไม่ต้องใส่ข้อมูลสามารถจัดการกับสถานการณ์นี้ได้ในครั้งต่อไป เราต้องการเก็บเวอร์ชันที่ติดตั้งไว้ในปัจจุบันเสมอ ฉันลอง googling แต่ก็ว่างเปล่า
17 apt  upgrade  dpkg 

3
ความแตกต่างระหว่าง 'setf' และ 'setaf' ของ tput คืออะไร?
คำสั่งtputมีสองตัวเลือกที่แตกต่างกันสำหรับการตั้งค่าสีsetfและsetafทั้งคู่ดูเหมือนจะทำงานได้ดีบนคอมพิวเตอร์ของฉัน: $ tput setf 2 && echo 'Hello world!' $ tput setaf 2 && echo 'Hello world!' ดูเหมือนจะเป็นคู่ที่คล้ายกันด้วยและsetbsetab ความแตกต่างระหว่างสองตัวเลือกคืออะไร?
17 tput 

1
start-stop-daemon ไม่ทำงานตามที่คาดไว้ไม่มีการเขียนไฟล์ pid
ฉันพยายามควบคุมโปรแกรมที่ใช้ python (ซึ่งไม่แยกตัวเองออกจากคอนโซล) #!/bin/bash user=nobody pid=/var/run/xx.pid name=xx prog=/xx.py case $1 in start) /sbin/start-stop-daemon --start -b --oknodo --user "$user" --name "$name" --pidfile "$pid" --startas "$prog" --chuid nobody -- --daemon ;; stop) /sbin/start-stop-daemon --stop --oknodo --user "$user" --name "$name" --pidfile "$pid" --retry=TERM/5/KILL/1 ;; restart) ;; *) ;; esac ส่วนเริ่มต้นทำงานได้ดี ฉันเห็นสคริปต์ทำงานและทำงานได้ แต่ส่วนหยุดไม่ทำงาน มันก็พูดว่าNo …

3
ฉันจะส่งต่อเสียงผ่าน VNC ได้อย่างไร
ฉันใช้ TightVNC และ Remmina Remote Desktop เพื่อเชื่อมต่อ Raspberry Pi ของฉันกับแล็ปท็อป Ubuntu ผ่าน VNC มันใช้งานได้ดีส่วนใหญ่ยกเว้นความจริงที่ว่าไม่มีเสียง ฉันไปทั่วสถานที่ค้นหาเสียงส่งต่อผ่าน VNC, ส่งเสียงผ่าน VNC ผ่านอุโมงค์ SSH, ส่งต่อเสียงผ่าน PulseAudio Network Transparency ฉันหาวิธีทำไม่ได้ ไม่มีใครรู้วิธีรับเสียงผ่าน VNC หรือไม่

2
วิธีรับชื่อของผู้ใช้ที่รันสคริปต์ bash เป็น sudo
ฉันต้องการสร้างสคริปต์ทุบตีที่ต้องดำเนินการด้วย sudo แต่ควรคำนึงถึงชื่อของผู้ใช้ที่ไม่ใช่ sudo ที่ดำเนินการ ดังนั้นหากผู้ใช้bobรันsudo ./myscript.shฉันอยากmyscript.shรู้bobเป็นผู้ดำเนินการ ลองดูข้างในmyscript.sh: USER=$(whoami) # Do something that takes into account the username. ฉันจะทราบชื่อของผู้ใช้ที่วางกระบวนการได้อย่างไร โดยเฉพาะอย่างยิ่งสิ่งที่ฉันควรใช้แทนที่จะwhoamiได้รับbobและไม่root?

1
หมายเลขนำหน้าในไฟล์กำหนดค่าจากไดเรกทอรี. d คืออะไร
ไฟล์กำหนดค่ายูนิกซ์จำนวนมากในxx.dโฟลเดอร์มีตัวเลขนำหน้าเช่น: $ ls /etc/grub.d/ 00_header 10_linux 30_os-prober 40_custom 05_debian_theme 20_linux_xen 30_uefi-firmware 41_custom มีการประชุมเกี่ยวกับจำนวนนี้หรือไม่? มันหมายความว่าอะไร? อาจจะหลีกเลี่ยงการปะทะกันของชื่อ แต่ฉันอยากรู้ว่ามีอะไรมากกว่านี้

7
แปลงข้อความทั้งหมดจากตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็กและในทางกลับกัน
คำถามของฉันคือฉันจะแปลงข้อความทั้งหมดจากตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็กและในทางกลับกันได้อย่างไร นั่นคือการเปลี่ยนแปลงกรณีของตัวอักษรทั้งหมด มันจะต้องมีการsedเปลี่ยนอย่างใด
17 sed 

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