คำถามติดแท็ก shell

เชลล์เป็นอินเตอร์เฟสบรรทัดคำสั่งของ Unix คุณสามารถพิมพ์คำสั่งในเชลล์แบบโต้ตอบหรือเขียนสคริปต์เพื่อทำงานอัตโนมัติ ใช้แท็กนี้สำหรับคำถามที่ใช้กับ / bin / sh และเชลล์ที่เข้ากันได้มากที่สุด (ash, bash, ksh, zsh, …) สำหรับเชลล์สคริปต์ที่มีข้อผิดพลาดโปรดตรวจสอบใน http://shellcheck.net ก่อนโพสต์ที่นี่

4
เมื่อสร้างไฟล์ว่างเหตุใดจึงอาจต้องการ 'ไฟล์สัมผัส' มากกว่า ': >> ไฟล์'
ไม่เคยรู้เลยว่าคุณสามารถทำได้จนถึงตอนนี้: : >> file ดูเหมือนว่าจะมีฟังก์ชันคล้ายกับ: touch file มีเหตุผลที่ทรัพยากรส่วนใหญ่ดูเหมือนจะชอบมากกว่าการสัมผัสเปลือกนี้ในตัว?
33 shell  files  touch 

4
ฉันจะทราบได้อย่างไรว่าฉันอยู่ในตำแหน่ง symlink จากบรรทัดคำสั่ง
สมมติว่าฉันมีโฟลเดอร์: cd /home/cpm135/public_html และสร้างลิงก์สัญลักษณ์ ln -s /var/lib/class . ต่อมาฉันอยู่ในไดเรกทอรีนั้น: cd /home/cpm135/public_html/class pwdจะบอกฉันฉันอยู่ใน/home/cpm135/public_html/class มีวิธีใดบ้างที่จะรู้ว่าฉันเป็น "จริง ๆ " เข้าไป/var/lib/class? ขอบคุณ

1
เหตุใดเชลล์ในตัวของเชลล์จึงไม่สามารถทำงานด้วยตัวพิมพ์ใหญ่ แต่คำสั่งอื่นสามารถทำได้
ทำไมนี้ เมื่อฉันทำเช่นนี้ CD ~/Desktop ไม่ได้พาฉันไปที่เดสก์ท็อป แต่นี่: echo "foo bar" | GREP bar ให้ฉัน: bar

6
คำสั่งที่ชัดเจนทำงานอย่างไร
ฉันเพิ่งพยายามเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของเชลล์และดูว่าclearคำสั่งทำงานอย่างไร ไฟล์เรียกทำงานอยู่ใน/usr/bin/clearและดูเหมือนว่าจะพิมพ์กลุ่มของบรรทัดว่าง (เท่ากับความสูงของเทอร์มินัล) และวางเคอร์เซอร์ที่ด้านบนซ้ายของเทอร์มินัล เอาต์พุตของคำสั่งจะเหมือนกันเสมอโดยไม่คำนึงถึงขนาดของเทอร์มินัล: $ clear | hexdump -C 00000000 1b 5b 48 1b 5b 32 4a |.[H.[2J| 00000007 และสามารถทำซ้ำกับเสียงสะท้อนที่มีผลเหมือนกันแน่นอน: $ /bin/echo -e "\x1b\x5b\x48\x1b\x5b\x32\x4a\c" ฉันอยากรู้จริงๆว่าผลลัพธ์ของคำสั่งนี้แปลเป็นการล้างคอนโซลอย่างไร
33 shell  terminal 

8
ฉันจะสลับระหว่างฮาร์ดแวร์เอาต์พุตเสียงอื่นโดยใช้เชลล์ได้อย่างไร
ฉันใช้แล็ปท็อปกับจอภาพภายนอกที่มีลำโพง เมื่อเชื่อมต่อจอภาพผ่าน HDMI ฉันสามารถสลับ (โดยใช้ GUI: การตั้งค่าเสียง -> ฮาร์ดแวร์) ระหว่างสัญญาณเสียงแล็ปท็อปปกติและเอาต์พุตของจอภาพ ฉันทำตามขั้นตอนนี้ซ้ำหลายครั้งและฉันเริ่มสงสัยว่าฉันสามารถทำให้มันเป็นแบบอัตโนมัติได้หรือไม่หรือเรียกใช้มันด้วยวิธีที่รวดเร็วกว่าโดยใช้เชลล์ distro ของฉันคือ Ubuntu 12.04 กับ gnome 3 แก้ไข: ฉันพยายามใช้ pacmd แต่ list-sinks ให้เฉพาะอุปกรณ์ที่ฉันใช้อยู่ในปัจจุบัน: pacmd list-sinks | grep name: name: <alsa_output.pci-0000_00_1b.0.hdmi-stereo> หลังจากเปลี่ยนจาก GUI: pacmd list-sinks | grep name: name: <alsa_output.pci-0000_00_1b.0.analog-stereo> และถ้าฉันพยายามเปลี่ยนฉันจะได้รับ: pacmd set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo Welcome to PulseAudio! Use "help" for …

9
คำสั่ง Bash ภายใน vi
เป็นไปได้ไหมที่จะพิมพ์คำสั่ง bash ภายใน vi และรับ stdout? ฉันพบว่ามันน่าเบื่อที่จะปิดและเปิดใหม่อีกครั้งเพียงเพราะฉันต้องการค้นหาบางอย่างในเปลือก
33 bash  shell  vim  vi 


3
เครื่องมือเชลล์เพื่อ“ ป้อนข้อมูล” tablify
นานมาแล้วฉันจำได้ว่าใช้คำสั่งที่ทำให้มันเข้าสู่ตารางในรูปแบบที่ดี ตัวอย่างเช่นสำหรับอินพุตนี้ apple 1 100 orange 20 19 pineapple 1000 87 avocado 4 30 ผลลัพธ์จะคล้ายกับสิ่งนี้: apple 1 100 orange 20 19 pineapple 1000 87 avocado 4 30 ฉันต้องการทราบชื่อของเครื่องมือนี้
33 shell 

3
ฉันจะบอกสคริปต์เพื่อรอให้กระบวนการเริ่มยอมรับการร้องขอบนพอร์ตได้อย่างไร
ฉันต้องการคำสั่งที่จะรอให้กระบวนการเริ่มยอมรับการร้องขอบนพอร์ตเฉพาะ มีอะไรใน linux หรือเปล่า? while (checkAlive -host localhost -port 13000 == false) do some waiting ...

15
ฉันจะรันคำสั่ง linux เดียวกันในแท็บ / เชลล์มากกว่าหนึ่งรายการพร้อมกันได้อย่างไร
มีเครื่องมือ / คำสั่งใน Linux ที่ฉันสามารถใช้เพื่อเรียกใช้คำสั่งในมากกว่าหนึ่งแท็บพร้อมกันหรือไม่ ฉันต้องการรันคำสั่งเดียวกัน: ./myprog argument1 argument2พร้อมกันในเชลล์มากกว่าหนึ่งอันเพื่อตรวจสอบว่า mutex ทำงานได้ดีในโปรแกรม threaded หรือไม่ ฉันต้องการเพิ่มจำนวนอินสแตนซ์ของโปรแกรมนี้เพื่อใส่รหัสของฉันภายใต้ความเครียดในภายหลัง ฉันกำลังมองหาบางอย่างที่กำแพงทำ ฉันสามารถนึกถึงการใช้ tty ได้ แต่มันก็ดูเหมือนจะเจ็บปวดมากถ้าฉันต้องไต่ระดับนี้ให้มากขึ้น

4
ฉันจะใช้ตัวแปร $ ในการขยายเชลล์ของลำดับได้อย่างไร
ฉันต้องการที่จะใช้$var inการขยายตัวของเปลือกหอยกับช่วงในทุบตี แค่วาง{$var1..$var2}ไม่ได้ดังนั้นฉันจึงไป "ด้านข้าง" ... ผลงานต่อไปนี้ แต่มันเป็น kludge เล็กน้อย # remove the split files echo rm foo.{$ext0..$extN} rm-segments > rm-segments source rm-segments มีวิธี "ปกติ" มากกว่านี้ไหม?

8
การคว้าส่วนขยายในชื่อไฟล์
ฉันจะรับนามสกุลไฟล์จาก bash ได้อย่างไร นี่คือสิ่งที่ฉันพยายาม: filename=`basename $filepath` fileext=${filename##*.} โดยการทำที่ฉันจะได้รับการขยายตัวของbz2จากเส้นทางแต่ฉันมีปัญหากับเส้นทาง/dir/subdir/file.bz2/dir/subdir/file-1.0.tar.bz2 ฉันต้องการโซลูชันที่ใช้ bash เท่านั้นโดยไม่มีโปรแกรมภายนอกถ้าเป็นไปได้ extract path_to_fileเพื่อให้คำถามของฉันล้างผมก็สร้างสคริปต์ทุบตีเพื่อแยกเก็บใดก็ตามเพียงแค่คำสั่งเดียวของ วิธีการแตกไฟล์จะถูกกำหนดโดยสคริปต์โดยดูประเภทการบีบอัดหรือการเก็บถาวรซึ่งอาจเป็น. tar.gz, .gz, .bz2 เป็นต้นฉันคิดว่านี่ควรเกี่ยวข้องกับการจัดการสตริงตัวอย่างเช่นถ้าฉันได้รับการขยาย.gzแล้ว ควรตรวจสอบว่ามันมีสตริง.tarก่อน.gz- .tar.gzถ้าเป็นเช่นนั้นส่วนขยายที่ควรจะเป็น
33 bash  shell  filenames 

5
การสกัดน้ำมันดินขึ้นอยู่กับชื่อไฟล์?
ฉันมักจะดาวน์โหลด tarballs ด้วย wget จาก sourceforge.net ไฟล์ที่ดาวน์โหลดจะถูกตั้งชื่อเช่น SQliteManager-1.2.4.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F&ts=1305711521&use_mirror=switch เมื่อฉันพยายาม tar xzf SQliteManager-1.2.4.tar.gz\?r\=http\:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F\&ts\=1305711521\&use_mirror\=switch ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: tar (child): Cannot connect to SQliteManager-1.2.4.tar.gz?r=http: resolve failed gzip: stdin: unexpected end of file tar: Child returned status 128 tar: Error is not recoverable: exiting now หลังจากเปลี่ยนชื่อไฟล์ไปยังfoo.tar.gzการแยกการทำงานที่สมบูรณ์แบบ มีวิธีที่ฉันไม่ได้บังคับให้เปลี่ยนชื่อทุกครั้งที่ไฟล์เป้าหมายก่อนที่จะแตก?
33 shell  tar  gzip 

6
วิธีการตั้งค่าขนาดหน้าต่างและตำแหน่งของแอพพลิเคชั่นบนหน้าจอผ่านทางบรรทัดคำสั่ง?
ฉันต้องการให้เปิดหน้าต่าง Firefox ในขนาดเฉพาะและตำแหน่งบนหน้าจอโดยใช้คำสั่ง shell ตัวอย่างเช่น: firefox myfile.html size 800x600 location bottom-left มีคำสั่งดังกล่าวหรือไม่?
33 shell  firefox  window 

5
วิธีเปลี่ยนเส้นทาง stdout ไปยังไฟล์และ stdout + stderr ไปยังไฟล์อื่นได้อย่างไร
ฉันจะประสบความสำเร็จได้อย่างไร cmd >> file1 2>&1 1>>file2 นั่นคือ stdout และ stderr ควรเปลี่ยนเส้นทางไปที่หนึ่งไฟล์ (file1) และ stdout เท่านั้น (file2) ควรเปลี่ยนเส้นทางไปที่อื่น (ทั้งในโหมดต่อท้าย)?

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