Unix & Linux

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

3
วิธีการขยายนามแฝง bash
วิธีสร้างนามแฝงที่ขยายชื่อแทนอีกชื่อหนึ่งใน Bash จริง ๆ ทำไม: ผมเคยได้GREP_OPTIONSตั้งอยู่บน.bashrcบางสิ่งบางอย่างเช่นนี้ GREP_OPTIONS="-I --exclude=\*~" ฉันยังมีสคริปต์ (ให้เราพูดsetup-java.sh) ซึ่งฉันจะโทรก่อนทำงานกับโปรเจ็กต์ Java บางตัว มันจะมีบรรทัด: GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=classes" ถ้าฉันใช้ Sass ด้วยฉันจะโทรหาsetup-sass.shซึ่งมีบรรทัด: GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=\*/.sass-cache" แต่GREP_OPTIONSเลิกใช้แล้วและเห็นได้ชัดว่าโซลูชันมาตรฐานคือสร้างนามแฝงหรือสคริปต์บางอย่าง ...
11 bash  grep  alias 

11
วิธีรับอาร์กิวเมนต์สุดท้ายไปยังฟังก์ชัน / bin / sh
เป็นวิธีที่ดีกว่าในการใช้งานprint_last_argอะไร #!/bin/sh print_last_arg () { eval "echo \${$#}" # this hurts } print_last_arg foo bar baz # baz (ถ้าเป็นแบบนี้ให้บอกว่า#!/usr/bin/zshแทนที่จะ#!/bin/shรู้ว่าจะทำอย่างไรปัญหาของฉันคือการหาวิธีที่เหมาะสมในการใช้สิ่งนี้เพื่อ#!/bin/sh) แก้ไข: ข้างต้นเป็นเพียงตัวอย่างที่โง่ เป้าหมายของฉันคือไม่พิมพ์อาร์กิวเมนต์สุดท้าย แต่มีวิธีอ้างถึงอาร์กิวเมนต์ล่าสุดภายในฟังก์ชันเชลล์ EDIT2: ฉันขอโทษสำหรับคำถามที่มีคำพูดที่ไม่ชัดเจน ฉันหวังว่าจะทำให้ถูกต้องในครั้งนี้ หากนี่เป็น/bin/zshแทนที่จะ/bin/shฉันสามารถเขียนสิ่งนี้ #!/bin/zsh print_last_arg () { local last_arg=$argv[$#] echo $last_arg } การแสดงออก$argv[$#]เป็นตัวอย่างของสิ่งที่ผมอธิบายไว้ในแก้ไขครั้งแรกของฉันในฐานะที่เป็นวิธีการที่จะอ้างถึงอาร์กิวเมนต์สุดท้ายภายในฟังก์ชั่นเชลล์ ดังนั้นฉันควรเขียนตัวอย่างดั้งเดิมของฉันเช่นนี้: print_last_arg () { local last_arg=$(eval "echo \${$#}") # but this hurts even …

1
คำเตือน MySQL Workbench เมื่อเชื่อมต่อกับ MariaDB
เมื่อใช้ MySQL Workbench 6.3 บน Kubuntu 15.10 และเซิร์ฟเวอร์ MariaDB เวอร์ชัน: 10.0.22-MariaDB-0ubuntu0.15.10.1 (Ubuntu) ฉันได้รับคำเตือนดังต่อไปนี้ คาดหวังหรือไม่ ตรวจพบเวอร์ชันเซิร์ฟเวอร์ที่เข้ากันไม่ได้ / ไม่ได้มาตรฐานหรือโปรโตคอลการเชื่อมต่อ สามารถสร้างการเชื่อมต่อกับฐานข้อมูลนี้ได้ แต่ฟีเจอร์ MySQL Workbench บางอย่างอาจทำงานไม่ถูกต้องเนื่องจากฐานข้อมูลไม่รองรับ MySQL รุ่นที่รองรับได้อย่างสมบูรณ์ MySQL Workbench ได้รับการพัฒนาและทดสอบสำหรับเซิร์ฟเวอร์ MySQL รุ่น 5.1, 5.5, 5.6 และ 5.7 ทำการเชื่อมต่อ mysql สำเร็จ ข้อมูลที่เกี่ยวข้องกับการเชื่อมต่อนี้: โฮสต์: localhost พอร์ต: 0 ผู้ใช้: serg SSL: ไม่เปิดใช้งาน การเชื่อมต่อ MySQL ที่ประสบความสำเร็จทำกับพารามิเตอร์ที่กำหนดไว้สำหรับการเชื่อมต่อนี้

2
การติดตั้ง PHP7.0 จาก sid บน jessie
ฉันต้องการลอง PHP7.0 บน Debian Jessie และฉันพยายามติดตั้งจาก sid อย่างไรก็ตามphp7.0ขึ้นอยู่กับphp7.0-commonว่าขึ้นอยู่กับในphp-common > 18ขณะที่php-commonsid อยู่ที่ 17 นี่หมายความว่ามันเป็นไปไม่ได้เลยที่จะติดตั้งphp7.0จากการกระจายในขณะนี้? ทำไมถึงเป็นอย่างนั้น? ฉันรู้ว่ามันเป็นไปได้ที่จะติดตั้งจากแหล่งที่อธิบายไว้เช่นที่นี่ฉันแค่ถามเกี่ยวกับแพคเกจอย่างเป็นทางการ หมายเหตุ : แพคเกจใน sid ได้รับการแก้ไขและเป็นไปได้ที่จะติดตั้งจากที่นั่น (6 มกราคม 2016)

1
ทุบตีนามแฝงที่มีช่องว่างเป็นส่วนหนึ่งของคำสั่ง
ฉันพยายามที่จะสร้างนามแฝงทุบตีที่ชื่อแทนตัวเองมีช่องว่างในนั้น ความคิดคือนามแฝง (คือcon) sudo openvpn --config /path/to/my/openvpn/configs/ย่อมาจาก ซึ่งส่งผลให้คำสั่งอ่านได้เมื่อใช้conนามแฝง เช่น: `con uk.conf` == `sudo openvpn --config /path/to/my/openvpn/configs/uk.conf` con ="sudo openvpn --config /path/to/my/openvpn/configs/"ฉันเข้าใจว่าฉันไม่สามารถประกาศนามแฝงเช่นนี้ ฟังก์ชั่นทุบตีจะทำงานในสถานการณ์นี้หรือไม่ ฉันไม่เคยได้ยินเรื่องนี้มาก่อน แต่เมื่อค้นคว้าวิธีแก้ปัญหาสำหรับปัญหาเล็กน้อยนี้

1
ทำไมเสียงก้องจับคู่ไฟล์บางไฟล์สองครั้ง?
$ touch file{1..12} $ echo *e{1..12} file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12 $ echo *{1..12} file1 file11 file12 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12 ฉันไม่เข้าใจว่าทำไมสิ่งนี้จึงเกิดขึ้น กรุณาช่วยอธิบายหน่อยได้ไหม

2
อะไรคือ "บทความ 2001" สำหรับการปิดกั้น "โปรแกรมดึงข้อมูลอัตโนมัติ" ที่อ้างถึงโดยหน้าคน wget?
wgetหน้าคนกล่าวนี้ภายใต้หัวข้อสำหรับ--random-waitพารามิเตอร์: Some web sites may perform log analysis to identify retrieval programs such as Wget by looking for statistically significant similarities in the time between requests. [...] A 2001 article in a publication devoted to development on a popular consumer platform provided code to perform this analysis on the fly. …

8
ลบบรรทัดแบบแทนที่ในระบบไฟล์แบบเต็ม?
เนื่องจากข้อผิดพลาดของแอปพลิเคชั่นที่ยังไม่ได้ถูกเปิดเผยฉันมีเซิร์ฟเวอร์หลายร้อยเครื่องพร้อมดิสก์เต็มรูปแบบ มีไฟล์หนึ่งไฟล์ที่เต็มไปด้วยบรรทัดที่ซ้ำกันไม่ใช่ไฟล์บันทึก แต่เป็นไฟล์สภาพแวดล้อมผู้ใช้ที่มีคำจำกัดความของตัวแปร (ดังนั้นฉันจึงไม่สามารถลบไฟล์ได้) ฉันเขียนsedคำสั่งง่ายๆเพื่อตรวจสอบหาบรรทัดที่เพิ่มผิดและลบออกแล้วทดสอบในสำเนาของไฟล์ มันทำงานได้ตามที่ตั้งใจไว้ อย่างไรก็ตามเมื่อฉันลองบนเซิร์ฟเวอร์ด้วยดิสก์เต็มฉันได้รับข้อผิดพลาดดังต่อไปนี้ (มาจากหน่วยความจำไม่ใช่คัดลอกและวาง): sed: couldn't flush /path/to/file/sed8923ABC: No space left on deviceServerHostname แน่นอนฉันรู้ว่าไม่มีพื้นที่เหลือ นั่นเป็นเหตุผลที่ฉันพยายามลบเนื้อหา! ( sedคำสั่งที่ฉันใช้จะลดไฟล์บรรทัด 4000+ เป็นประมาณ 90 บรรทัด) sedคำสั่งของฉันเป็นเพียงsed -i '/myregex/d' /path/to/file/filename มีวิธีที่ฉันสามารถใช้คำสั่งนี้แม้จะมีดิสก์เต็มหรือไม่? (ต้องเป็นแบบอัตโนมัติเนื่องจากฉันต้องใช้กับเซิร์ฟเวอร์หลายร้อยเครื่องเพื่อแก้ไขปัญหาอย่างรวดเร็ว) (เห็นได้ชัดว่าข้อผิดพลาดของแอปพลิเคชันจะต้องได้รับการวินิจฉัย แต่ในขณะเดียวกันเซิร์ฟเวอร์ก็ทำงานไม่ถูกต้อง .... ) อัปเดต:สถานการณ์ที่ฉันเผชิญได้รับการแก้ไขโดยการลบสิ่งอื่นที่ฉันพบว่าฉันสามารถลบได้ แต่ฉันยังต้องการคำตอบสำหรับคำถามนี้ซึ่งจะเป็นประโยชน์ในอนาคตและสำหรับคนอื่น ๆ /tmpคือไม่ต้องไป มันอยู่ในระบบไฟล์เดียวกัน ก่อนที่ผมจะอิสระขึ้นพื้นที่ดิสก์ที่ผมได้ทดสอบและพบว่าฉันสามารถลบบรรทัดในviโดยการเปิดไฟล์และทำงานแล้วประสบความสำเร็จในการบันทึกการเปลี่ยนแปลงด้วย:g/myregex/d :wqดูเหมือนว่าเป็นไปได้ที่จะทำสิ่งนี้โดยอัตโนมัติโดยไม่ต้องใช้ระบบไฟล์แยกต่างหากเพื่อเก็บไฟล์ temp .... (?)


3
วิธีปิดใช้งานรายการบันทึกการตรวจสอบสำเร็จใน dmesg
เวอร์ชั่นย่อ: จะปิดการใช้งานข้อความตรวจสอบ (dmesg) ในระบบ Fedora ได้อย่างไร? ระบบ Fedora ยังคงบันทึกข้อความ "การตรวจสอบ: ความสำเร็จ" ใน dmesg - ในแบบสุดขั้วที่ dmesg ไม่สามารถใช้งานได้เพราะเต็มไปด้วยข้อความเหล่านี้ ( dmesg | grep -v auditว่างเปล่า) ข้อความเหล่านี้ไร้ประโยชน์อย่างสมบูรณ์เนื่องจากต้องการแจ้งให้ผู้ใช้ทราบว่ากระบวนการภายในทุกวันประสบความสำเร็จ (ซึ่งอาจเป็นที่สนใจเมื่อทำการดีบั๊ก แต่เป็นเพียงเสียงรบกวนในกรณีนี้) แม้แต่อินเตอร์เฟสบรรทัดคำสั่ง (เมื่อเปลี่ยนเป็น non-X tty ด้วยCtrl+ Alt+ F2) ก็ไม่สามารถใช้งานได้เนื่องจากมันยุ่งเหยิงกับข้อความตรวจสอบเหล่านี้อยู่เสมอมันเป็นไปไม่ได้ที่จะอ่านเอาต์พุตของคำสั่งที่รันโดยผู้ใช้จริง ตัวอย่างเช่นหลังจากป้อนชื่อผู้ใช้ (เข้าสู่ระบบ) ข้อความตรวจสอบจะถูกพ่นออกมา (บอกผู้ใช้ว่าสิ่งที่จัดรูปแบบ / พิมพ์สำเร็จ): audit: type = 1131 audit (1446913801.945: 10129): pid = 1 …

1
จะเข้าใจเอาต์พุต modinfo ได้อย่างไร?
ฉันแค่พยายามที่จะเข้าใจmodinfoผลลัพธ์ที่อธิบายถึงโมดูลเคอร์เนล ตัวอย่างเช่นในกรณีของโมดูลi915เอาต์พุตจะมีลักษณะดังนี้: $ modinfo i915 filename: /lib/modules/4.2.0-1-amd64/kernel/drivers/gpu/drm/i915/i915.ko license: GPL and additional rights description: Intel Graphics author: Intel Corporation [...] firmware: i915/skl_dmc_ver1.bin alias: pci:v00008086d00005A84sv*sd*bc03sc*i* [...] depends: drm_kms_helper,drm,video,button,i2c-algo-bit intree: Y vermagic: 4.2.0-1-amd64 SMP mod_unload modversions parm: modeset:Use kernel modesetting [KMS] (0=DRM_I915_KMS from .config, 1=on, -1=force vga console preference [default]) (int) [...] ฉันสามารถเข้าใจบางฟิลด์ได้ …

5
ทดสอบว่าไฟล์ถูกแก้ไขหลังจากวันที่ในชื่อไฟล์
ฉันมีไฟล์ชื่อYYYYMMDDในชื่อไฟล์เช่น file-name-20151002.txt ฉันต้องการตรวจสอบว่าไฟล์นี้ถูกแก้ไขหลังจาก 2015-10-02 หมายเหตุ: ฉันสามารถทำได้โดยดูที่ผลลัพธ์ของlsแต่ฉันรู้ว่าการแยกวิเคราะห์ผลลัพธ์lsเป็นความคิดที่ไม่ดี ฉันไม่จำเป็นต้องค้นหาไฟล์ทั้งหมดที่ลงวันที่หลังจากวันที่ที่ระบุเพียงแค่ต้องทดสอบไฟล์หนึ่งไฟล์ในแต่ละครั้ง ฉันไม่กังวลเกี่ยวกับไฟล์ที่ถูกแก้ไขในวันเดียวกันหลังจากที่ฉันสร้างมันขึ้นมา นั่นคือฉันแค่อยากรู้ว่าไฟล์นี้ด้วย20151002ในชื่อมีการแก้ไขในวันที่ 3 ตุลาคม 2015 หรือหลังจากนั้น ฉันใช้ MacOs 10.9.5
11 bash  files  osx  timestamps 

4
ตัวจัดการหน้าจอ / ตัวจัดการหน้าต่างใดที่สามารถรองรับจอภาพหลายตัวที่มีความแตกต่างของ dpi
ไม่มีการเปลี่ยนแปลงที่ฉันได้พบกับตัวจัดการหน้าต่าง / ตัวจัดการการแสดงผลที่ปรับขนาดหน้าต่างและแอปพลิเคชั่นอย่างถูกต้องบนจอภาพที่แตกต่างกันสองตัวด้วย DPI ที่แตกต่างกันสองตัว ฉันมีจอภาพขนาด 40 นิ้ว 4k ที่ทำงานประมาณ 110 dpi เสียบเข้ากับโน้ตบุ๊ก hidpi ของ Dell ที่ประมาณ 240 dpi ฉันต้องยอมรับทรัพย์สินขนาดเล็กเกินไปใน hidpi หรือใหญ่เกินไปบนจอภาพขนาดใหญ่ มันดูไม่ดีเลย ใช่มี "จุดกึ่งกลาง" ที่ค่อนข้างใช้งานได้และ Unity อนุญาตให้ปรับขนาดสินทรัพย์แยกจากจอภาพเป็นระดับหนึ่ง แต่ฉันยังคงพบปัญหาในแอปพลิเคชันด้วยตนเอง ฉันลองชุดค่าผสม Unity / Gnome 3 / KDE / I3 ที่แตกต่างกันและแม้กระทั่ง e17 ตัวจัดการการแสดงเวลาส่วนใหญ่ (ฉันคิดว่า) เป็น lightdm เนื่องจาก distro นั้นเป็น Ubuntu แต่ฉันได้ลอง Fedora …

4
การเปลี่ยนเส้นทางเอาต์พุตโปรแกรม
เมื่อพยายามเปลี่ยนเส้นทางผลลัพธ์ของโปรแกรมโดยใช้ "ตัวเลขบางส่วนที่มากกว่า" ไวยากรณ์ (เช่นfoo 2> myfile) ตัวเลขที่เป็นไปได้ที่นี่คืออะไรและเป็นตัวแทนของอะไร ผมเชื่อว่า 1 /dev/stdout, /dev/stderr2 แล้ว 5 และ 6 ล่ะ มี 3, 4 หรือจำนวนมากกว่า 6?

2
ใน xterm“ ชื่อไอคอน” คืออะไร?
ทำงานใน xterm (หรือ gnome-terminal) คำสั่งต่อไปนี้ตั้งค่าที่เรียกว่า "ชื่อไอคอน": echo -en "\e]1;some_value\a" สิ่งนี้ทำอะไร โปรดทราบว่าเป็นไปได้ที่จะตั้งค่า "ชื่อหน้าต่าง" และ "ชื่อไอคอน" เป็นค่าเดียวกันด้วยคำสั่งเดียวกันดังนั้นฉันจึงไม่เข้าใจว่า "ชื่อไอคอน" อาจเป็นเส้นทางไปยังรูปภาพพูดได้อย่างไร

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