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

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

1
จัดเรียงไฟล์ตามวันที่และคัดลอกไฟล์ไปยังโฟลเดอร์ใหม่
ฉันสงสัยว่าสิ่งใดจะเป็นวิธีที่รัดกุมที่สุดในการจัดเรียงไฟล์ตามวันที่แล้วคัดลอกไฟล์ไปยังโฟลเดอร์ใหม่ ปัญหาของฉัน: ฉันมีไฟล์ที่ถูกเปลี่ยนชื่ออย่างที่เรียก file1 (101) file2 (103) file3 (110) . . . โดยที่การกำหนดหมายเลขไม่ได้บ่งบอกถึงความแตกต่างของไฟล์ภายใน สิ่งเดียวที่แตกต่างกันอย่างแท้จริงระหว่างสองประเภทไฟล์ที่ฉันต้องการเรียงลำดับคือวันที่สร้างสำรองของพวกเขาดังนั้นฉันค่อนข้างจะซับซ้อนกว่าข้อความชี้แจงปัญหา
1 macos  bash  shell 

1
VIM ในเชลล์เรียกคีย์ d แต่ GVIM ทำงานได้
ฉันมีปัญหาแปลกกับเสียงเรียกเข้าของฉัน ในเชลล์เมื่อฉันแก้ไขไฟล์ทริกเกอร์ VIM ของฉัน ( อาจ ) ปุ่ม d (กำลังทำงาน vim test.txt ) เมื่อฉันกด j เขาจะลบ 2 บรรทัดแรก ทุกอย่างใช้ได้ดีเมื่อฉันรันโดยไม่มีไฟล์. vimrc ของฉัน (ดังนั้นฉันคิดว่านั่นเป็นความผิดของฉัน) หรือเมื่อฉันรัน gvim ไฟล์. vimrc ของฉัน ไดเรกทอรี. vim ของฉัน (ไฟล์ vimrc ถูกแมปเป็น symlink ในระบบ)
1 linux  vim  shell 

2
SSH ออกจากระบบโดยอัตโนมัติ
ฉันใช้เวลาหลายชั่วโมงกับงาน "ง่ายและสนุก" บนแพลตฟอร์มการเรียนรู้ออนไลน์ ตามเว็บไซต์: เมื่อ Bash (เชลล์ Linux ที่เป็นที่นิยม) เริ่มขึ้นมันจะรันคำสั่งใน ความหลากหลายของสคริปต์ที่แตกต่างกัน เมื่อ Bash ถูกเรียกใช้เป็นแบบโต้ตอบ ล็อกอินเชลล์มันจะอ่านและเรียกใช้ '/ etc / profile' จากไฟล์ก่อน หากไฟล์นั้นมีอยู่ หลังจากอ่านไฟล์ดังกล่าวแล้วจะค้นหา '~ / .bash_profile, ~ / .bash_login' และ '~ / .profile' ตามลำดับนั้นจะอ่านและดำเนินการคำสั่งจาก คนแรกที่มีอยู่และสามารถอ่านได้ เมื่อเชลล์ล็อกอินออกจาก Bash จะอ่านและดำเนินการคำสั่งจาก ไฟล์ '~ / .bash_logout' หากมีอยู่ เมื่อมีการโต้ตอบกันนั่นก็คือ ไม่ใช่เชลล์การล็อกอินที่เริ่มต้น, Bash อ่านและดำเนินการคำสั่งจาก '~ / .bashrc' หากไฟล์นั้นมีอยู่ …

2
วาดแบบโต้ตอบจากประวัติทุบตีเพื่อสร้างคำสั่งทั้งหมด?
ที่พร้อมท์ bash ประวัติคำสั่งสามารถสำรวจได้โดยใช้ปุ่มลูกศรขึ้นและลง (ฉันมักจะใช้ CTRL + R) เป็นไปได้ไหมที่จะทำเช่นนี้โดยไม่ต้องเปลี่ยนสตริงอักขระทางซ้ายของเคอร์เซอร์ ตัวอย่างเช่นฉันอาจพบไฟล์สองไฟล์โดยใช้ ls: $ ls ../../blah/foo/bar/CMakeLists.txt $ ls /usr/include/c++/4.7.2/armv7l-unknown-linux-gnueabihf/bits/c++config.h ตอนนี้ฉันต้องการปัดเส้นทางที่สองไปสู่ไฟล์แรก ฉันเริ่มต้นด้วยการกดลูกศรขึ้น จากนั้น CTRL + A; และลบ ls จากจุดเริ่มต้นโดยใช้การลบ: $ /usr/include/c++/4.7.2/armv7l-unknown-linux-gnueabihf/bits/c++config.h ตอนนี้ฉันต้องการใช้ & gt; & gt; เพื่อผนวกเส้นทางนี้ไปยังไฟล์ CMakeLists.txt ซึ่งฉันจะแก้ไขในภายหลังจากภายในตัวแก้ไขข้อความ คำสั่งที่ฉันต้องการสร้างคือ: $ echo /usr/include/c++/4.7.2/armv7l-unknown-linux-gnueabihf/bits/c++config.h >> ../../blah/foo/bar/CMakeLists.txt มันจะดีถ้าฉันสามารถเลื่อนผ่านการโต้ตอบเพื่อค้นหาเส้นทาง CMakeLists.txt ในขณะที่ออกจากส่วน ... / c ++ config.h ส่วนไม่มีการแตะต้อง …

1
-o: ไม่พบคำสั่ง
ฉันพยายามดาวน์โหลดไฟล์โดยใช้ curl แต่ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ -o: ไม่พบคำสั่ง คำสั่งของฉันคือ curl http://lab.test.com/test/test/down.php?c=redsoul&bbs_no=236513&file_num=7061013&filename=%EC%95%84%EC%9D%B4%EC%96%B8%EB%A7%A8%2003%ED%99%94%20%28ANIMAX%201280x720%20x264%20AAC%29.SMI&size=25485 -o 'saveas.smi' ฉันมีข้อผิดพลาดกับคำสั่งของฉัน
1 bash  shell 

0
ทำลายเส้นที่ดีขึ้นในเทอร์มินัล
ฉันไม่แน่ใจว่าคำขอของฉันถูกต้องสามารถทำได้หรือดีกว่าตัวเลือกเริ่มต้น แต่ฉันจะให้มันต่อไป การพันคำในเทอร์มินัลมักทำให้ฉันรำคาญเพราะมันอยู่ตรงกลางคำ เมื่อเร็ว ๆ นี้ฉันค้นพบตัวเลือกสำหรับเสียงเรียกว่า linebreak ซึ่งทำให้มีเหตุผลห่อคำ: การแบ่งบรรทัดจะไม่แทรกกลางคำ มีตัวเลือกในการตัดคำให้มีสติมากขึ้นในเทอร์มินัลไหม? มีวิธีแก้ปัญหาที่ดีกว่านี้ไหม?
1 terminal  shell 

1
อุโมงค์ ssh พื้นหลังถูกหล่นทันที
ฉันพยายามสร้างอุโมงค์ ssh ต่อไปนี้: ssh -A -t gatewayuser@gatewayserver 'ssh -N -A -t -R 55520:127.0.0.1:55520 user@dbserver' & นี่เป็นส่วนหนึ่งของเชลล์สคริปต์ฉันต้องการให้ช่องสัญญาณถูกสร้างเป็นพื้นหลังเพื่อให้เชลล์สคริปต์สามารถทำงานต่อไปได้ เชลล์สคริปต์ใช้: trap 'kill $(jobs -p)' EXIT เพื่อฆ่า procs เด็กทั้งหมดเมื่อออกจาก เมื่อ ssh ทำงานข้างต้นกระบวนการจะถูกสร้างขึ้น แต่ดูเหมือนว่าอุโมงค์ย้อนกลับถูกล่ามโซ่จะถูกทิ้งทันที (เช่นไม่มีอะไรฟัง 55520 บน dbserver) ฉันจะทำสิ่งนี้ภายในข้อกำหนดด้านบนได้อย่างไร

1
วิธีตั้งค่าการเตือน RTC จากสคริปต์หรือเทอร์มินัลใน OSX
ฉันมี iMac mini ที่ใช้ OSX สำหรับ powerpc ซึ่งฉันต้องการใช้สำหรับการสำรองข้อมูลระยะไกล การสำรองข้อมูลจะทำงานผ่านสคริปต์ทุบตีกับ rsync กว่า ssh เพื่อเป็นการประหยัดพลังงานคอมพิวเตอร์จะเข้าสู่โหมดสลีปโดยอัตโนมัติและตื่นขึ้นมาด้วยนาฬิกาปลุก RTC (ซึ่งสามารถตั้งค่าในการตั้งค่าพลังงานผ่านการตั้งค่าระบบ) ตอนนี้ฉันต้องการที่จะสามารถกำหนดเวลาเริ่มต้นของการสำรองข้อมูลพีซีจากสคริปต์สำรองของฉันแทนที่จะต้องทำสิ่งนี้จากเชลล์กราฟิก ในเคอร์เนล linux สามารถทำได้โดยการเขียน wakuptime ไปที่ sys / / ระดับ / RTC / rtc0 / wakealarm หรือโดยใช้ nvram-wakeup ฉันกำลังมองหาวิธีแก้ปัญหาที่สามารถทำได้ใน OSX แต่ถึงตอนนี้ไม่สามารถหาได้ การตั้งค่า Nvram สามารถอ่านและเขียนได้โดยใช้คำสั่ง nvram แต่ในรายการตัวแปรทั้งหมดไม่มีการตั้งค่าเวลาปลุก นอกจากนี้ฉันพบแอพ Alarm Clock Pro ที่อ้างว่าสามารถทำสิ่งนี้ได้ แต่นี่เป็นแอปพลิเคชั่นที่ต้องจ่ายเงินขนาดใหญ่ซึ่งสำหรับฉันแล้วมันไม่สมเหตุสมผลเลยที่จะเขียนเพียงบางไบท์ถึงนาฬิกาปลุก rtc ใคร?
1 macos  shell  boot  alarm 

2
สีเอาต์พุตพรอมต์ของ Bash จะเปลี่ยนไปหลังจากเอาท์พุท 2 บรรทัดแรก
ฉันปรับแต่ง bash PS1prompt ของฉันด้วยไฟล์ ~ / .bashrcนี้ ฉันไม่สามารถหาเหตุผลได้ว่าทำไมสีเอาต์พุตของฉันเปลี่ยนไปหลังจากเอาต์พุต 2 บรรทัดแรก ความคิดเห็นใดที่อาจเป็นสาเหตุของปัญหา
1 bash  shell  prompt 

1
Linux เปลี่ยนชื่อไฟล์แบบเรียกซ้ำเท่านั้น
ฉันพยายามเปลี่ยนชื่อไฟล์ทั้งหมดซ้ำภายในไดเรกทอรีและไดเรกทอรีย่อยเป็นตัวพิมพ์เล็ก แต่เปลี่ยนชื่อไดเรกทอรีไม่เปลี่ยนแปลง ตัวอย่างทั้งหมดที่ฉันได้พบเปลี่ยนชื่อทั้งไฟล์และไดเรกทอรีเป็นตัวพิมพ์เล็กเช่น: find ./ -depth -exec rename -n 'y/[A-Z]/[a-z]/' {} ";" และ find . -type f|while read f; do mv "$f" "$(echo $f|tr '[:upper:]' '[:lower:]')"; done ฉันจะเก็บไดเรคทอรีไม่เปลี่ยนแปลง แต่เปลี่ยนชื่อไฟล์ทั้งหมดได้อย่างไร?

2
พิมพ์คำสั่งเรียกใช้โดยเชลล์
ฉันพยายามคัดลอกไฟล์ที่ไม่มีอยู่ในไดเรกทอรีหนึ่งไปยังไดเรกทอรีอื่นโดยใช้ awk diff -r dir1 dir2 | grep dir1 | awk '{$1=$2=$3 =""; print "cp \"./dir1/" substr($0,4) "\" ./dir2/"}' | sh ทำงานได้ดียกเว้นว่าฉันต้องการพิมพ์ไฟล์ที่กำลังคัดลอก สิ่งที่ต้องการcp ./dir1/file1.txt ./dir2/ในstdout ฉันจะทำสิ่งนี้ได้อย่างไร ฉันรู้ว่ามันง่าย แต่ฉันไม่สามารถเข้าใจได้ ฉันพยายามteeและechoคำสั่ง แต่ไร้ประโยชน์
1 linux  bash  shell  awk 

6
จับคู่สตริงใน awk
ฉันจะค้นหาไฟล์เพื่อค้นหาบรรทัดที่มี SRC = ได้จากที่นี่ได้อย่างไร ฉันหมายถึงฉันจะหาที่อยู่ IP ต้นทางในไฟล์นี้โดยใช้ awk ได้อย่างไร Mar 10 03:17:12 ubuntu kernel: [11045.721649] Type=ScanXMASIN=eth0 OUT= MAC=00:0c:29:a1:51:1c:00:0c:29:23:9d:e4:08:00 SRC=192.168.1.28 DST=192.168.1.27 LEN=40 TOS=0x00 PREC=0x00 TTL=47 ID=6603 PROTO=TCP SPT=47301 DPT=53 WINDOW=1024 RES=0x00 URG PSH FIN URGP=0 Mar 10 03:17:12 ubuntu kernel: [11045.721702] Type=ScanXMASIN=eth0 OUT= MAC=00:0c:29:a1:51:1c:00:0c:29:23:9d:e4:08:00 SRC=192.168.1.30 DST=192.168.1.27 LEN=40 TOS=0x00 PREC=0x00 TTL=42 ID=6802 …
1 bash  shell  awk 

2
ไฟล์ mv ที่มีหลาย `. 'ในชื่อไฟล์
ฉันมีไฟล์บางไฟล์ที่ฉันได้รับพร้อมชื่อเช่น (สำหรับหลาย ๆ คนที่ต้องทำด้วยตนเองทุกวัน): AA.B.txt WW.C.txt และฉันต้องการเปลี่ยนชื่อพวกเขาเป็นAA_B.txtและWW_C.txtเพื่อให้รหัส SQL ที่มีอยู่ยังคงทำงานตามที่คาดไว้ ตอนนี้ไฟล์เหล่านี้จะถูกละเว้นเนื่องจากรูปแบบ filename.letter.txt ls ใช้งานได้และแสดงไฟล์เหล่านี้ให้ฉัน: $ ls -a *.*.txt AA.B.txt* ABR.A.txt* ABR.B.txt* ABR.C.txt* ACT.A.txt* อย่างไรก็ตามmvคำสั่งที่คล้ายกันล้มเหลว: $ mv *.*.txt *_*.txt usage: mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory ฉันจะจับคู่รูปแบบที่ฉันมีกับสิ่งที่ฉันต้องการได้อย่างไร

2
Modern Shell For Unix - บางอย่างเช่น Powershell
ฉันกำลังมองหาเชลล์ที่ทันสมัยสำหรับ Ubuntu นี่คือปัญหาแรกที่มีคุณสมบัติตรงตามที่กล่าวไว้ในสคริปต์สไตล์บิลด์ (ไม่ต้องการระบบการสร้าง btw): ใน PowerShell: new-item workspaces\crm\builds\demo -ItemType Directory ตอนนี้บิตที่ชาญฉลาดหากไม่มีไดเรกทอรีก่อนหน้านี้อยู่มันก็ฉลาดพอที่จะสร้างมันทั้งหมดหากในการเรียกใช้ครั้งต่อไปมีเพียง dir สาธิตที่ขาดหายไปมันจะสร้างสิ่งนั้นขึ้นมา ในทุบตีฉันต้องทำสร้างห่วงหรือด้วยตนเองcd dirname, mkdir subdirname, cd subdirnameNah ... ฉันต้องการแรงเสียดทานน้อย ฉันต้องการประชุมมากกว่าการตั้งค่า บางคนอาจเห็นว่าคำสั่งด้านบนทำมากเกินไป แต่ด้วยธงฉันสามารถย้ายออกจากการประชุม หากเหมาะสมแล้วคำสั่งที่สั้นที่สุดควรทำสิ่งที่เป็นตรรกะมากที่สุดเคสด้านข้างแสดงด้วยตัวเลือกที่ชัดเจน ข้อเสนอแนะ?
1 ubuntu  shell 

3
เครื่องหมายคำพูดเดี่ยวและตัวแปรภายในเชลล์เบิร์น
ฉันมีคำสั่งนี้ที่ฉันพยายามที่จะดำเนินการในเปลือก bourne สำหรับ Solaris 9 find ${DATADIR} -name "check_*" -type f -exec sh -c '$0 | ${PARSEDATA}' {} \; >> ${TMP_1} ปัญหาของฉันคือตัวแปร${PARSEDATA}ทำงานไม่ถูกต้องฉันลองใช้เครื่องหมายคำพูดคู่ล้อมรอบมันแล้วปัญหาคือ$0ชื่อของสคริปต์ที่ใช้รหัสนี้ไม่ใช่ไฟล์ที่ใช้findคำสั่ง ข้อเสนอแนะใด ๆ ในการแก้ปัญหานี้อาจเป็นปัญหาง่ายมีประโยชน์อย่างมาก ขอบคุณล่วงหน้า. อัปเดต: $0เป็นชื่อของสคริปต์ที่ใช้findคำสั่งตัวแปรสำหรับ${PARSEDATA}เป็นตัวกรองอยู่ที่ใดที่หนึ่งในระบบที่ปรับเปลี่ยนเอาต์พุตของสคริปต์ที่พบแต่ละรายการ อย่างไรก็ตามปัญหาคือฉันไม่สามารถรับทั้งสอง$0และ${PARSEDATA}ขยายอย่างถูกต้อง$0ขยายได้ดีโดยใช้อัญประกาศเดียวหรือใช้ double qoutes ${PARSEDATA}ขยายดี แต่จากนั้น$0กลายเป็นชื่อของสคริปต์ต้นฉบับที่รันfindคำสั่งนี้
1 shell  find  solaris 

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