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

เชลล์คือซอฟต์แวร์ที่ช่วยให้ผู้ใช้โต้ตอบกับระบบปฏิบัติการโดยปกติแล้วพิมพ์ที่บรรทัดคำสั่ง

3
เชลล์สคริปต์การวนลูปผ่านโฟลเดอร์
ฉันมีโฟลเดอร์ย่อยจำนวนมากบน Mac ของฉันพร้อมไฟล์ csv จำนวนสุ่มในแต่ละไฟล์ สิ่งที่ฉันต้องการทำคือรวมไฟล์เหล่านี้เป็นไฟล์เดียวสำหรับแต่ละไดเรกทอรี จนถึงตอนนี้ฉันรู้ว่าฉันสามารถรวมไฟล์เหล่านี้ด้วยcat * > mergedfile.csvแต่ฉันมีปัญหาซ้ำผ่านโฟลเดอร์ทั้งหมด ฉันพยายามรวมสิ่งต่าง ๆ เข้าด้วยกัน แต่ฉันไม่สามารถทำให้สิ่งนี้เป็นสิ่งที่ฉันต้องการได้อย่างแน่นอน มีความคิดเกี่ยวกับวิธีที่ดีที่สุดในการทำเช่นนี้? for DIR in ./subfolder/* do cat $dir/* > merged.csv done
1 bash  shell 

0
มีวิธีการกู้คืนไดเรกทอรีจาก (พลังงานต่ำ) เชื่อมต่อไดรฟ์หรือไม่
ก่อนอื่นให้ฉันอธิบายปัญหา ฉันทำงานบน Macbook Air และเชื่อมต่อ pendrive อย่างถาวรสำหรับข้อมูลงานที่มีค่ามากมาย เกิดขึ้นกับฉันสัปดาห์ละครั้งพลังงานต่ำ - หลังจากฉันเชื่อมต่อพลังงานฉันได้รับข้อความว่า USB ถูกตัดการเชื่อมต่ออย่างไม่ถูกต้อง สถานการณ์ปกติกำลังทำงานบนรถไฟเป็นเวลาสองชั่วโมงปิด macbook เพื่อไปที่สำนักงานเข้าสู่ระบบที่สำนักงาน - หรือวิธีอื่น ๆ - ดังนั้นการแก้ปัญหาเพื่อให้พลังงานเชื่อมต่อไม่ได้มีประโยชน์ และไม่ฉันไม่ได้ลบออกโดยไม่ได้ตั้งใจ - เป็นหนึ่งในไดรฟ์เหล่านี้ที่เกือบจะไม่ยื่นออกมาในกรณีที่คุณต้องการเครื่องมือในการลบออก หลังจากเข้าสู่ระบบไดรฟ์จะถูกติดตั้งอีกครั้งในโฟลเดอร์เดียวกัน น่ารำคาญกว่าอยู่ใน terminal ทุกที่ที่ฉันอยู่ในโฟลเดอร์บนไดรฟ์นี้ shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory <E> fish: getcwd() failed with errno 2/No such …
1 mac  usb  shell  power 

2
ความแตกต่างระหว่าง“ ls -lh” และ“ ls -lh | tail -n +2”
ฉันกำลังอ่านsplitบทความคำสั่งบนอินเทอร์เน็ตและเจอคำสั่ง Linux นี้ls -lh | tail -n +2เพื่อแสดงรายการไฟล์ ดีกว่าls -ltrh(ซึ่งแสดงเกือบเป็นรายการเดียวกันหรือไม่) มีคนช่วยบอกความแตกต่างระหว่างls -lh&ls -lh | tail -n +2 PS: ฉันได้ตรวจสอบหน้าคน แต่ยังคงสับสน

2
วัตถุประสงค์ของการส่งออกฟังก์ชั่นในทุบตี
ถ้าเราดูตัวอย่างต่อไปนี้: # testing(){ echo hello;} # testing hello # echo $(testing) hello # echo testing >script # ./script ./script: line 1: testing: command not found # source ./script hello # export -f testing # ./script hello ปรากฎว่าbashฟังก์ชั่นจะต้องส่งออกเฉพาะในกรณีที่คุณต้องการใช้ในสคริปต์ที่ไม่ได้มา ฉันลองใช้หลายระดับของ subshells พฤติกรรมเหมือนกัน บางคนสามารถยืนยันสิ่งนี้ได้เพราะฉันพบว่ามันขัดแย้งกับการอ้างว่าตัวแปรท้องถิ่นไม่มีอยู่ใน subshells
1 linux  bash  shell 

2
ทำไมเสียงก้อง * | rm -f ไม่ทำงานเหรอ
ทำไมecho * | rm -fไม่ทำงาน ตามความเข้าใจของฉันecho *ควรแสดงรายการไฟล์ทั้งหมดในไดเรกทอรีและไปป์ควรส่งรายการนี้เป็นอาร์กิวเมนต์ไปยังrm -fคำสั่งซึ่งควรลบไฟล์ ฉันพลาดอะไรไป
1 linux  bash  shell 

0
ไม่สามารถเรียกใช้ GAP ใน cygwin ได้
ฉันมีGAPซึ่งฉันต้องการหนีจากภายใน emacs มีบางสิ่งที่เรียกว่าโหมดช่องว่างสำหรับ emacs ที่ฉันติดตั้ง เห็นได้ชัดว่าพบปฏิบัติการที่ถูกต้องในการรัน GAP เนื่องจากเริ่มต้นด้วยข้อความเริ่มต้น GAP ┌───────┐ GAP 4.8.10, 15-Jan-2018, build of 2018-01-15 14:36:25 (GMTST) │ GAP │ https://www.gap-system.org └───────┘ Architecture: i686-pc-cygwin-gcc-default32 Libs used: gmp, readline Loading the library and packages ... อย่างไรก็ตามทันทีหลังจากที่มันบอกว่า Error opening terminal: dumb. และหยุด จากนั้นฉันก็ค้นพบว่าสิ่งเดียวกันนี้เกิดขึ้นได้ถ้าฉันเรียกใช้สคริปต์เริ่มต้น GAP จากเชลล์ cygwin GAP ยังมาพร้อมกับไฟล์แบตช์เพื่อเรียกใช้ในรูปแบบต่าง ๆ บน Windows …

1
เชลล์, เชลล์ย่อย, แหล่งที่มา, กระบวนการพื้นหลัง, PID == ความสับสน
ฉันพยายามทำให้ใจของฉันตรงไปตรงมาว่าสิ่งเหล่านี้มารวมกันอย่างไร ตัวอย่างเช่นกับสคริปต์นี้: #!/bin/bash . script1 ./script2 . script3 & ./script4 & sleep 5 PID มีลักษณะอย่างไร กระบวนการแยกต่างหากคืออะไรและไม่มีอะไร กระบวนการพื้นหลังเหมือนกับ subshell หรือไม่
1 bash  shell  pid 

1
ไม่สามารถส่งออกหรือตั้งค่าตัวแปรในเปลือกใหม่
ฉันพบสิ่งแปลก ๆ เมื่อทำงานกับปัญหา ดูเหมือนว่าคำสั่งนี้จะไม่ทำงาน (การใช้ `เพื่อเติมบรรทัดว่าง) เมื่อใช้การส่งออก > /bin/bash -c "echo $FOO; export FOO=BAR; echo $FOO" ` ` อย่างไรก็ตามคำสั่งนี้ทำงานตามที่คาดไว้ > echo $FOO; FOO=BAR; export FOO=BAR; echo $FOO ` BAR ปัญหาเดียวกันเมื่อตั้งค่าด้วย = > /bin/bash -c "echo $FOO; FOO=BAR; echo $FOO" ` ` อย่างไรก็ตามคำสั่งนี้เป็น wokrs ตามที่คาดไว้ > echo $FOO; FOO=BAR; FOO=BAR; echo …
1 bash  shell  export 

1
การจัดหา bash_prompt (สคริปต์ทุบตี) เมื่อรัน zsh (oh-my-zsh)
ฉันมีชุดรูปแบบที่เขียนด้วยbash(ฉันคิดว่า) อย่างไรก็ตามฉันได้ตัดสินใจที่จะใช้zshเปลือกของฉัน โดยเฉพาะอย่างยิ่งฉันใช้ oh-my-zsh ( zshฉันเชื่อว่ากำหนดเอง) รูปแบบที่ฉันต้องการใช้ขณะนี้อยู่ในไฟล์ที่เรียกว่า.bash_promptซึ่งถูกที่มาจากกลับมาเมื่อเปลือกเริ่มต้นคือ.bash_profilebash มีอยู่ฉันสามารถบอก oh-my-zsh ให้ใช้พรอมต์นี้ได้หรือไม่ ฉันเข้าใจว่าzshมีไวยากรณ์ / ภาษาแตกต่างกันเล็กน้อยbashดังนั้นการจัดหาโดยตรงจากการ.zshrcโยนข้อผิดพลาดค่อนข้างมาก
1 bash  shell  zsh  oh-my-zsh 

1
การเข้ารหัส / ถอดรหัสไฟล์อัตโนมัติ: ไฟล์ตรวจจับถูกปิดในแอปพลิเคชัน Mate / Gnome
ฉันกำลังเขียนสคริปต์ทุบตีเพื่อถอดรหัสไฟล์โดยอัตโนมัติสำหรับการแก้ไขและเข้ารหัสกลับหลังจากปิดไฟล์ ประเภทของไฟล์อาจเป็นอะไรก็ได้: ข้อความธรรมดาเอกสารสำนักงาน ฯลฯ ฉันใช้ Linux Mint กับ Mate ฉันติดอยู่: ไม่สามารถตรวจสอบได้อย่างน่าเชื่อถือว่าไฟล์ถูกปิดในแอปพลิเคชันหรือไม่เพื่อให้สคริปต์สามารถดำเนินการเข้ารหัสกลับคืนและลบเวอร์ชันที่ถอดรหัสได้ เวอร์ชันแรกของสคริปต์นั้นใช้ vim พร้อมกับไฟล์ข้อความ สคริปต์กำลังเรียกใช้งานโดยตรงและไม่ได้ดำเนินการใด ๆ อีกจนกว่าจะปิดเป็นกลุ่ม ตอนนี้ที่ฉันต้องการจะทำเช่นนั้นกับไฟล์อื่น ๆ ฉันลองสิ่งต่อไปนี้: xdg-open: ออกทันทีหลังจากเรียกใช้งานแอปพลิเคชันที่เกี่ยวข้องกับประเภทไฟล์ ดังนั้นสคริปต์จึงดำเนินต่อไปและไม่ดี ฟังก์ชั่นที่ปรับเปลี่ยนแล้วของ xdg-open สำหรับเรียกแอปที่เกี่ยวข้อง: เรียกใช้ภายในสคริปต์ปัจจุบันดังนั้นตอนนี้ฉันเห็นโปรแกรมออก ใช้งานได้เฉพาะเมื่อแอปพลิเคชันยังไม่ได้ทำงาน หากมีแล้วกระบวนการใหม่จะเสร็จสิ้นและสคริปต์ดำเนินการต่อ ดังนั้นสิ่งที่ฉันพยายามทำตอนนี้คือดูว่าไฟล์นั้นถูกปิดในแอปพลิเคชันที่รันอยู่แล้ว กำลังทดลองกับ pluma / gedit และ inotifywait มันไม่ทำงานเช่นกัน - ทันทีที่เปิดไฟล์มันจะตรวจพบเหตุการณ์ CLOSE_NOWRITE, CLOSE เป็นไปได้หรือไม่ที่จะตรวจจับสิ่งนี้โดยไม่ใช้ hooks เฉพาะสำหรับแอปพลิเคชันอื่น เป็นไปได้ที่จะมี X hooks บางอัน? ขอขอบคุณ.

3
แยกและลบส่วนของสตริงระหว่างตัวคั่น
ฉันต้องการผ่านไฟล์และลบลำดับบางอย่างระหว่างตัวคั่น ตัวอย่างเช่น drw---- 00000000 11111111 0 ./a/ drw---- 00000000 11111111 0 ./b/ d------ 00000000 11111111 0 ./c/ d------ 00000000 11111111 0 ./d/k/ d------ 00000000 11111111 0 ./e/l/r/ d------ 00000000 11111111 0 ./f/m/s/x/ ------- 00000000 11111111 89 ./g/n/t/y/C.xml dr----- 00000000 11111111 0 ./h/o/u/z/ dr-r--- 00000000 11111111 0 ./i/p/v/A/D/ d--r--- 00000000 11111111 …
1 shell  cygwin  regex  sed 

1
หน้าคนไม่ตัดบรรทัดอย่างถูกต้อง
บางครั้งการรันmanข้อความที่มีการพันบรรทัดไม่ถูกต้อง ถ้าฉันเรียกใช้manออกจากนั้นปรับขนาดหน้าต่างเทอร์มินัลและเรียกใช้manอีกครั้งมันจะจัดรูปแบบตามความกว้างของหน้าต่างใหม่ แต่ถ้าฉันเรียกใช้manปรับขนาดหน้าต่าง (ข้อความยุ่งเหยิง) ออกแล้วเรียกใช้คนอีกครั้งก็ยังคงฟอร์แมตมันไม่ดีเหมือนเดิม แต่บางครั้งมันจะไม่เกิดขึ้นแม้ว่าฉันจะปรับขนาดหน้าต่างในขณะที่manกำลังทำงานอยู่และบางครั้งมันก็เกิดขึ้นแม้ว่าฉันจะสร้างเทอร์มินัลใหม่ที่ปรับขนาดแล้วก่อนที่จะทำงาน manเป็นครั้งแรกในหน้าต่างนั้น จะแก้ไขได้อย่างไร? ฉันได้ลองใช้man -cตัวเลือกและ R, r, ⌃R และ ⌃L เพื่อ "ทาสีใหม่" หน้าจอขณะที่ดู manpage (การmanใช้งานของฉันless) ฉันไม่ได้ตั้งค่า MANWIDTH ฉันใช้ iTerm2
1 bash  shell  man 

2
ปิดการใช้งาน zsh prezto "เสร็จสมบูรณ์" โมดูลแก้ไขอัตโนมัติ
ฉันใช้ prezto กับ zsh และโมดูล "เสร็จสมบูรณ์" มีบางสิ่งที่แก้ไขอัตโนมัติซึ่งฉันไม่ต้องการ ฉันต้องการไฮไลต์การเติมข้อความอัตโนมัติและเมนูไฮไลต์ แต่ไม่มีการแก้ไขอัตโนมัติ (ซึ่งเป็นอันตรายและควรถูกห้ามตามกฎหมาย!: P) ตัวอย่างเช่นฉันมีไดเรกทอรีดังต่อไปนี้: src / project / opensrc / library / เมื่อฉันพิมพ์ "src / li" มันจะเปลี่ยนเป็น "opensrc / li" ฉันไม่ต้องการหรืออย่างน้อยก็ไม่มีโดยอัตโนมัติ (ay / n prompt จะดี) มีวิธีการปิดการใช้งานโดยไม่ปิดการใช้งานโมดูลเสร็จสมบูรณ์หรือมีพร้อมท์ (y / n)?
1 shell  zsh 

0
การกำหนดค่า zsh เดียวกันทำหน้าที่แตกต่างกันในเครื่องที่แตกต่างกัน
ฉันมีการกำหนดค่าต่อไปนี้สำหรับ zsh ที่ฉันใช้ทั้งบนแล็ปท็อปและเครื่องระยะไกล ฉันมีไฟล์ปรับแต่งทั้งหมดของฉันอยู่ในที่เก็บ git ที่ถูกโคลน~/.zshและเชื่อมโยงเข้า~ด้วยกัน autoload -Uz promptinit promptinit HISTFILE=~/.histfile HISTSIZE=1000 SAVEHIST=1000 setopt appendhistory autocd extendedglob nomatch notify zstyle :compinstall filename '/home/pkhorsand/.zshrc' autoload -Uz compinit compinit -i -u -C # load antigen source $HOME/.zsh/antigen.zsh # Load the oh-my-zsh's library. antigen use oh-my-zsh # Bundles from the default repo (robbyrussell's …
1 shell  zsh 

1
ไปป์และดู piped output หรือไม่
ฉันต้องการสร้างเชลล์ไพพ์เช่นนี้: producer | analyser > report.txt และดูผลลัพธ์producerในขณะที่กำลังสร้างข้อมูล (ไฟล์บันทึกขนาดใหญ่) สำหรับการวิเคราะห์ ฉันจะทำสิ่งนั้นได้อย่างไร

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