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

Bash เป็นเชลล์ฟรีสำหรับระบบปฏิบัติการยูนิกซ์จากโครงการ GNU

1
ทำไมฉันไม่สามารถสร้าง symlink ไปยังไดเรกทอรีในระดับเดียวกับไดเรกทอรีนั้นได้
ฉันมีไดเรกทอรีชื่อ Foo. ฉันต้องการ symlink ในระดับเดียวกับที่เรียกว่า foo. ln -s Foo foo สร้าง symlink ใน Foo ชี้กลับไปที่ตัวเอง $ mkdir lntmp && cd lntmp $ mkdir Foo $ touch Foo/file $ ln -s Foo foo $ tree . └── Foo ├── Foo -> Foo └── file 1 directory, 2 files สิ่งที่ฉันต้องการบรรลุคือ $ tree …

2
ฉันเพิ่ม __git_ps1 ไปยัง PS1 ของฉันใน. bash_profile ตอนนี้ฉันได้รับ (ปรมาจารย์) สำหรับทุกโฟลเดอร์ที่ไม่ใช่ git repos
ฉันใช้ Mac (10.6.5) นี่คือตัวอย่างของสิ่งที่ผิดปกติ: [m@m ~ (master)]$ cd ~/Documents [m@m ~/Documents (master)]$ cd ~/Applications [m@m ~/Applications (master)]$ cd ~/Library [m@m ~/Library (master)]$ cd ~/Sites/somesite [m@m ~/Sites/somerepo (FEATURE_SOMEFEATURE)]$ นี่คือเนื้อหาที่เกี่ยวข้องของ. bash_profile ของฉัน: source ~/.git-completion.bash PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ ' ฉันกำลังใช้สคริปต์ git-completion มาตรฐาน - ฉันเพิ่งคัดลอกมันไปยังไดเรกทอรีบ้านของฉัน
1 mac  bash  git 

3
วิธีที่รวดเร็วในการสแกนหาพอร์ตที่เปิดอยู่บนเครือข่ายท้องถิ่นตามรายการ
ฉันจะทราบได้อย่างรวดเร็วว่าพอร์ต 80 เปิด / รับฟังบนเซิร์ฟเวอร์ผ่านสคริปต์ทุบตีหรือไม่ โดยปกติในเวิร์กสเตชันทั้งหมดที่ daemon กำลังทำงาน แต่บางครั้งก็ล้มเหลว ฉันใช้คำสั่งต่อไปนี้เพื่อตรวจสอบว่าที่อยู่ IP มีพอร์ตเปิดหรือไม่ ฉันต้องการที่จะทำเช่นนี้สำหรับทุกบรรทัดในไฟล์โดยไม่ต้องพิมพ์ด้วยตนเองทุกครั้ง nc -zw3 10.101.0.13 80 && echo "opened" || echo "closed" ไฟล์รายการมีลักษณะเช่นนี้ที่ไหน 3333 และ 3334 เป็นสตริงหลังจาก $ip; 10.101.0.13; 3333 10.101.0.15; 3334 10.101.0.17; 4143 10.101.0.21; 1445 10.101.0.27; 2443 10.101.0.31; 2445 10.101.0.47; 3443 10.101.0.61; 3445 ฉันต้องแยกพอร์ตที่เปิดจากพอร์ตที่ปิดดังนั้นฉันจะมีรายการเซิร์ฟเวอร์ที่ล้มเหลวที่จะต้องแก้ไข ฉันลองทำสิ่งนี้ไม่สำเร็จ: while IFS=";" read …

1
การกดปุ่มกดลงในเครื่องมือที่เริ่มต้นโดยสคริปต์ทุบตี
ฉันเขียนสคริปต์ทุบตีเพื่อรวบรวมข้อมูลบางอย่างเกี่ยวกับดิสก์แล้วเริ่มเครื่องมือ 'nmon' เพื่อตรวจสอบเฉพาะดิสก์เหล่านั้น ฉันเริ่มเครื่องมือ nmon จากสคริปต์ทุบตี (ด้วย -g ) เพื่อให้ได้มุมมองที่ถูกต้องภายในเครื่องมือเราจำเป็นต้องกดปุ่ม ก. บนแป้นพิมพ์ มีวิธีใดที่จะทำให้ปุ่มกดนั้นถูกเรียกโดยอัตโนมัติจากสคริปต์ทุบตีหรือไม่? ขอบคุณมาก!
1 bash  aix 

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

3
พิมพ์บรรทัดที่เฉพาะเจาะจงและอื่น ๆ อีกมากมาย
ฉันพยายามค้นหาไฟล์เพื่อหาแพทเทิร์นและถ้าพบมันฉันต้องการเห็นบรรทัดและผลลัพธ์อีก 10 บรรทัด จนถึงตอนนี้ฉันมี grep -n pattern file | cut -d: f1 ตอนนี้ไม่แน่ใจว่าจะใช้สิ่งนี้ออกไปทำพิมพ์ด้วยตรรกะเช่น sed -n result,(result+10)p file อาจจะมีจำนวนเล็กน้อยที่ออกหากรูปแบบอยู่ในหลายบรรทัด ความช่วยเหลือใด ๆ ที่ชื่นชม
1 linux  bash  unix 

0
เลื่อนไปที่ด้านล่างของเอาต์พุตใหม่
ฉันมีสคริปต์ที่ทำหน้าที่ตรวจสอบบางอย่าง มันจะพิมพ์บรรทัดทุกครั้งหากเหตุการณ์พื้นหลังเกิดขึ้น ณ ตอนนี้ถ้าฉันเลื่อนกลับด้วย iTerm2 บรรทัดใหม่จากสคริปต์เชลล์ของฉันจะถูกพิมพ์ที่ส่วนท้ายของแท็บในขณะที่ตำแหน่งการเลื่อนของฉันได้รับการแก้ไข ฉันจะบอก iTerm2 ให้เลื่อนหน้าจอลงได้อย่างไรหากข้อความใหม่ออกมาจากสคริปต์ เป็นการดีที่มีลำดับ scape บางส่วนจากสคริปต์ของฉันและไม่ได้มีการตั้งค่าที่กำหนดเองสำหรับแท็บ ดียิ่งขึ้นถ้าพกพานอก iTerm2 (เพียงแค่เคล็ดลับ zsh / bash)
1 bash  terminal  zsh  iterm2 

2
การเปลี่ยนการอนุญาตของไฟล์ทำหน้าที่เหมือนรูท แต่ไม่ใช่ sudo
ฉันมีปัญหาที่แปลกจริงๆ ฉันมีไฟล์บางไฟล์ในไดเรกทอรีขนาดใหญ่ที่ฉันต้องการให้ทุกคนอ่านได้ ดังนั้นฉันลองทำสิ่งนี้: sudo find readme* -not -perm -o+r -exec chmod +r {} \; และรับสิ่งนี้: sudo: unable to execute /usr/bin/find: Success ฉันไม่รู้ว่าทำไมมันถึงบอกว่าสำเร็จเพราะสิทธิ์ไม่เปลี่ยนแปลง ฉันยืนยันโดยพิมพ์สิ่งนี้: find readme* -not -perm -o+r -exec ls -l {} \; และรับสิ่งที่ต้องการ -rw------- 1 root root 536871076 Nov 22 14:06 readme_20101122200429 -rw------- 1 root root 536871892 Nov 22 …
1 linux  bash  sudo 

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 

2
ฉันจะแสดงรายการเนื้อหาของไฟล์ทั้งหมดซ้ำ ๆ ใน repository (extension-agnostic) ลงในไฟล์ข้อความเดียวได้อย่างไร
ฉันรู้ว่าใช้ "ls -R" ในทุบตีคุณสามารถเรียกรายการชื่อซ้ำ ฉันสามารถใช้คำสั่งที่คล้ายกันเพื่อแสดงรายการเนื้อหาของแต่ละไฟล์ในแบบที่ชื่อของพวกเขาแสดงโดยใช้คำสั่ง ls ได้หรือไม่ ฉันหมายถึงไฟล์เดียวหรือสตรีมเช่นเอาต์พุตมาตรฐาน มีวิธีที่ฉันสามารถจัดรูปแบบผลลัพธ์จากคำสั่งดังกล่าวหรือไม่ เช่นพูดเพิ่มบางสิ่งบางอย่างเช่นบรรทัดว่างสองสามบรรทัดระหว่างเนื้อหาของแต่ละไฟล์เพื่อให้อ่านได้ง่ายขึ้น?
1 linux  bash  ls 

0
แป้นพิมพ์ลัดใน Linux mint Cinnamon เพื่อเปิดโปรแกรมที่ใช้งานอยู่ถ้ามีอยู่มิฉะนั้นให้เปิดโปรแกรมใหม่
เมื่อมีไอคอนสำหรับ Chrome และไฟล์นำทางในแถบเปิดใช้งานด่วนใน Windows หรือ Ubuntu ให้กด ซุปเปอร์ + 1 จะเปิดโครเมี่ยมและ ซุปเปอร์ + 2 จะเปิดตัวนำทางไฟล์ ฉันติดตั้งลินุกซ์มิ้นต์ 18 "ซาร่าห์" กับอบเชยและต้องการพฤติกรรมดังกล่าว จะเกิดอะไรขึ้นเมื่อฉันกด ซุปเปอร์ + 1 คือว่าจะมีการเปิดตัวอย่างใหม่ของ Chrome โดยไม่คำนึงว่าฉันได้เปิดใช้งานเซสชัน Chrome แล้วหรือยัง ก่อนอื่นฉันพยายามเปิดใช้งาน "superbar" โดยทำตาม คู่มือนี้ แต่นั่นไม่ได้ผล จากนั้นฉันก็พบวิธีแก้ไขปัญหานี้ด้วยความช่วยเหลือจาก โพสต์บล็อก ที่ซึ่งทางลัดถูกผูกไว้กับสคริปต์ทุบตี สคริปต์แรกทำงานได้อย่างสมบูรณ์แบบสำหรับโครเมี่ยมและสคริปต์เพื่อเปิดตัวจัดการไฟล์จะต้องแก้ไขเล็กน้อย มันกลับกลายเป็นเช่นนี้: #!/bin/bash if [ -z `wmctrl -l | grep -i "google"` ]; then …

1
มีข้อ จำกัด ว่าคุณสามารถสร้างการอ้างอิงแบ็กอัพไดเร็กตอรี่“ ../” ได้กี่ชุดหรือไม่?
ฉันไม่เคยสังเกตเรื่องนี้มาก่อน (และฉันใช้ Linux เป็นระบบปฏิบัติการหลักมาตั้งแต่ปี 2008) มีข้อ จำกัด เกี่ยวกับจำนวนไดเรกทอรีอ้างอิงย้อนกลับที่คุณสามารถทำได้ ../? ทำไม? ฉันย้ายไฟล์เพื่อให้ไฟล์หายไปเท่านั้น และตอนนี้ฉันพยายามกำหนดเป้าหมายคำสั่งและการทดสอบ Java ls ../ฉันสามารถดูไดเรกทอรี 3 หลังเท่านั้น แต่ไม่ใช่ 4
1 linux  bash 

2
คำสั่งที่กำหนดเองของ Thunar: เปิด Terminal ไว้
เมื่อฉันทำคำสั่งที่กำหนดเองสำหรับ Thunar ด้วย xfce4-terminal -x คำสั่งบางครั้งฉันต้องการที่จะเห็นเอาท์พุทขั้วของคำสั่ง ฉันจะป้องกันไม่ให้ปิดเทอร์มินัลหลังจากคำสั่งรันได้อย่างไร ฉันได้ลองแล้ว: xfce4-terminal -x COMMAND & xfce4-terminal -x COMMAND && read -p xfce4-terminal -x COMMAND && read -p '' foo พวกเขาไม่ทำงาน น่าแปลกที่มันไม่ทำงาน read คำสั่ง มันบอกว่า: ล้มเหลวในการดำเนินการกระบวนการลูก "อ่าน" (ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว)

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