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

คำถามเฉพาะของ Bourne อีกครั้งของเชลล์ใน GNU เมื่อเทียบกับเชลล์ Bourne / POSIX อื่น ๆ สำหรับคำถามเกี่ยวกับเชลล์ Unix โดยทั่วไปให้ใช้ / เชลล์แท็กแทน

3
dircolors: แก้ไขการตั้งค่าสี globaly
ฉันเข้าใจการlsใช้dircolorsเพื่อแสดงผลสี dircolorsมีฐานข้อมูลเริ่มต้นของสีที่เชื่อมโยงกับนามสกุลไฟล์ซึ่งสามารถพิมพ์ด้วยคำสั่ง dircolors --print-database จากที่ผมอ่านฐานข้อมูลทั้งระบบควรจะอยู่ในman dir_colors /etc/DIR_COLORSแต่ไฟล์นี้ไม่มีอยู่ในระบบของฉัน (Debian) ฉันจะแก้ไขการตั้งค่าสีทั่วทั้งระบบได้dircolorsอย่างไร คำสั่งdircolors --print-databaseใช้การตั้งค่าจากที่ไหนเมื่อไม่มีไฟล์อยู่ ฉันทราบว่าผู้ใช้สามารถมีไฟล์เฉพาะผู้ใช้~/.dircolorsพร้อมการตั้งค่าของเขา แต่นี่ไม่เหมาะสำหรับฉันเนื่องจากฉันต้องเปลี่ยนการตั้งค่าสำหรับทุกคน คำถามที่สองคือว่าเป็นไปได้หรือไม่ที่จะใช้สี 8 บิตสำหรับ dircolors xterm-256colorขั้วของฉันคือ
40 bash  ls  colors 

7
วิธีการดาวน์โหลดไฟล์โดยใช้เพียงแค่ทุบตีและไม่มีอะไรอื่น (ไม่มี curl, wget, perl ฯลฯ )
ฉันมีหัวขาดน้อยที่สุด * ซึ่งไม่มียูทิลิตี้บรรทัดคำสั่งใด ๆ สำหรับการดาวน์โหลดไฟล์ (เช่นไม่มี curl, wget เป็นต้น) ฉันทุบตีเท่านั้น ฉันจะดาวน์โหลดไฟล์ได้อย่างไร เป็นการดีที่ฉันต้องการวิธีการแก้ปัญหาที่จะทำงานในหลากหลาย * ระวัง
40 bash  command-line  web 

3
ลบบรรทัด N สุดท้ายจากประวัติทุบตี
เมื่อตั้งใจวางไฟล์ลงในเชลล์มันจะใส่รายการไร้สาระที่น่าเกลียดมากมายในประวัติทุบตี มีวิธีที่สะอาดในการลบรายการเหล่านั้นหรือไม่ เห็นได้ชัดว่าฉันสามารถปิดเชลล์และแก้ไข.bash_historyไฟล์ด้วยตนเอง แต่อาจมี API บางชนิดที่สามารถแก้ไขประวัติของเชลล์ปัจจุบันได้หรือไม่

2
วิธีนำทางภายในการค้นหาแบบย้อนกลับของ bash
ข้อเสนอทุบตีทำงานเพื่อค้นหากลับผ่าน+Ctrl Rจากนั้นหนึ่งสามารถพิมพ์ในส่วนหนึ่งของคำสั่งมันจะแสดงรายการที่เหมาะสมจากประวัติศาสตร์ สมมติว่านี่เป็นประวัติของฉัน: vim foo1 vim foo2 # I want to go here vim foo3 # this is where I land, how to go back? fooฉันค้นหา กดปุ่มCtrl+ Rอีกครั้งจะแสดงรายการค้นหาที่เหมาะสมถัดไป บ่อยครั้งที่มันเกิดขึ้นกับผมว่าผมเร็วเกินไปและการสำรวจที่ผ่านมาผลตั้งใจของฉันและแสดงให้เห็นและตอนนี้ฉันต้องการที่จะกลับไปvim foo3vim foo2 ดังนั้นคำถามของฉันคือฉันจะนำทางภายในการค้นหาแบบย้อนกลับได้อย่างไร

4
เป็นไปได้ไหมที่จะกำหนดค่า ctrl-w (ลบคำ)?
โดยปกติCtrl+ Wลบกลับไปที่ช่องว่างสุดท้าย เป็นไปได้หรือไม่ที่จะกำหนดค่าให้ใช้อักขระเพิ่มเติมเช่น/? แก้ไข: เพื่อให้ชัดเจนยิ่งขึ้น: ฉันไม่ต้องการกำหนดค่าคีย์ให้ฉันต้องการหยุดการลบด้วย/เช่นกัน ตัวอย่าง: vim /foo/bar^W vim /foo/

2
ดำเนินการทุบตีสคริปต์ในการเข้าสู่ไดเรกทอรี
เป็นวิธีที่ดีที่สุดในการรันสคริปต์เมื่อเข้าสู่ไดเรกทอรีอะไร เมื่อฉันย้ายไปยังไดเรกทอรีใหม่ฉันต้องการทุบตีเพื่อเรียกใช้สคริปต์ projectSettings.bash เหมือนที่ RVM ทำ

5
วิธีการกำหนดเชลล์สคริปต์ที่จะต้องจัดหาแหล่งที่มาไม่ได้ทำงาน
ฉันกำลังกำหนดเชลล์สคริปต์ซึ่งผู้ใช้ควรsourceจะดำเนินการมากกว่า มีวิธีธรรมดาหรือชาญฉลาดในการบอกกล่าวผู้ใช้ว่าเป็นเช่นนี้ผ่านทางนามสกุลไฟล์หรือไม่? มีรหัสเชลล์ที่ฉันสามารถเขียนในไฟล์ของตัวเองซึ่งจะทำให้มันสะท้อนข้อความและออกจากถ้ามันถูกดำเนินการแทนแหล่งที่มาเพื่อให้ฉันสามารถช่วยให้ผู้ใช้หลีกเลี่ยงข้อผิดพลาดที่เห็นได้ชัดนี้?
40 bash  shell 

4
ฉันจะสร้างฟังก์ชั่นท้องถิ่นใน bashrc ของฉันได้อย่างไร
. bashrc ของฉันมีรหัสบางส่วนที่ซ้ำซ้อนดังนั้นฉันจึงใช้ฟังก์ชั่นเพื่อทำให้มันง่ายขึ้น do_stuff() { local version=$1 export FOO_${version}_X="17" export FOO_${version}_Y="42" } do_stuff '5.1' do_stuff '5.2' อย่างไรก็ตามตอนนี้เมื่อฉันใช้เชลล์ชื่อ "do_stuff" อยู่ในขอบเขตดังนั้นฉันจึงสามารถแท็บเติมและเรียกใช้ฟังก์ชันนั้น (อาจทำให้ตัวแปรสภาพแวดล้อมของฉันสับสน) มีวิธีทำให้ "do_stuff" มองเห็นได้เฉพาะภายใน. bashrc หรือไม่
40 bash  bashrc 

4
เรียกใช้กระบวนการพื้นหลังและตรวจสอบเมื่อมันสิ้นสุด
ฉันจะเริ่มกระบวนการในพื้นหลังและตรวจสอบเมื่อมันสิ้นสุดภายในสคริปต์ทุบตีได้อย่างไร ความคิดของฉันคือสคริปต์เช่นนี้: launch backgroundprocess & while [ Process is running ];do echo "PROCESS IS RUNNING\r" done; echo "PROCESS TERMINATED"
40 bash 

6
คุณจะแสดงรายการจำนวนบรรทัดของทุกไฟล์ในไดเรกทอรีในรูปแบบที่มนุษย์อ่านได้อย่างไร
ฉันมีรายการไดเรกทอรีและไดเรกทอรีย่อยที่มีไฟล์ csv ขนาดใหญ่ ไฟล์เหล่านี้มีประมาณ 500 ล้านบรรทัดโดยแต่ละรายการจะมีการบันทึก ผมอยากจะรู้ว่า มีกี่บรรทัดในแต่ละไฟล์ มีกี่บรรทัดในไดเรกทอรี จำนวนบรรทัดทั้งหมด ที่สำคัญที่สุดฉันต้องการสิ่งนี้ใน 'รูปแบบที่มนุษย์อ่านได้' เช่น 12,345,678 มากกว่า 12345678 มันจะเป็นการดีถ้าได้เรียนรู้วิธีการทำ 3 วิธี เครื่องมือทุบตีวานิลลาธรรมดา awk ฯลฯ และ Perl (หรือหลาม)
40 bash  awk  python  perl 

2
การเปลี่ยนแอตทริบิวต์“ สร้างวันที่” และ“ แก้ไขล่าสุด” ของไฟล์เป็นไฟล์อื่น
ฉันใช้การผสานเพื่อสร้างไฟล์ pcap จาก 15 ไฟล์ สำหรับไฟล์ที่ผสานฉันได้เปลี่ยนชื่อเป็นไฟล์แรกจาก 15 ไฟล์ แต่ฉันต้องการเปลี่ยนคุณลักษณะของไฟล์ที่ผสานเช่น "วันที่สร้าง" และ "แก้ไขครั้งสุดท้าย" เป็นคุณสมบัติแรก อย่างไรก็ตามมีการทำเช่นนี้? FILES_dcn=($(find $dir_dcn -maxdepth 1 -type f -name "*.pcap" -print0 | xargs -0 ls -lt | tail -15 | awk '{print $9}')) TAG1_dcn=$(basename "${FILES_dcn[14]}" | sed 's/.pcap//') mergecap -w "${dir_dcn}"/merge_dcn.pcap "${FILES_dcn[@]}" mv "${dir_dcn}"/merge_dcn.pcap "${dir_dcn}"/"${TAG1_dcn}".pcap ฉันพยายามเข้าถึงไฟล์ที่ผสานผ่านเซิร์ฟเวอร์แซมบ้า (Ubuntu) เพื่อให้ฟังก์ชันตัวแยกข้อมูลสามารถเข้าถึงการแยกไฟล์ไปยังโฟลเดอร์ …
40 linux  bash  files  samba 

1
Ubuntu และ Debian จะจัดการ $ HOME สำหรับผู้ใช้ด้วยสิทธิ์ sudo ได้อย่างไร
ฉันมีสคริปต์ทุบตีmyhome.shที่มีเพียงหนึ่งบรรทัด: echo $HOME เจ้าของสคริปต์เป็นผู้ใช้: $ ls -l myhome.sh -rw-rw-r-- 1 user user <date> <time> myhome.sh ในUbuntu 16.04 และ 17.10ฉันได้รับ: $ echo $HOME /home/user $ sudo echo $HOME /home/user $ bash myhome.sh /home/user $ sudo bash myhome.sh /home/user ในDebian Buster / การทดสอบฉันได้รับ: $ echo $HOME /home/user $ sudo echo $HOME /home/user …
39 bash  debian  ubuntu  sudo  home 

4
คำสั่ง nvm ไม่พร้อมใช้งานในสคริปต์ทุบตี
ฉันพยายามสร้างสคริปต์ที่nvmและในที่สุดโหนดจะได้รับการติดตั้ง ฉันติดตั้งnvmด้วย cURL แล้ว ฉันเห็นการแก้ไขใน.profileหรือ.bashrcไฟล์ (ทั้งทำงาน) และเมื่อพิมพ์nvmที่พรอมต์ bash มันจะแสดงตัวเลือกที่ใช้ได้ ฯลฯ ดังนั้น nvm ทำงาน ฉันสามารถติดตั้งโหนดด้วยตนเอง แต่ทันทีที่ฉันใส่nvmคำสั่งลงในเชลล์สคริปต์: nano test.sh #!/bin/bash nvm และเรียกใช้ด้วย: chmod 755 test.sh ./test.sh ฉันเข้าใจ: ./test.sh: line 2: nvm: command not found หากไม่สามารถหาได้nvmฉันก็ไม่ต้องคิด nvm ls-remote หรือ nvm install ... ฉันติดตั้ง Ubuntu 14.04 และทุบตีเป็นเปลือกของฉัน


2
การลบหรือล้างสแต็กของเส้นทาง popd / pushd
หลังจากเข้ามาpushdหลายครั้งเกินไปฉันต้องการล้างเส้นทางทั้งหมด ฉันจะpopdทำรายการทั้งหมดในสแต็คได้อย่างไร ฉันต้องการpopdโดยไม่จำเป็นต้องรู้ว่ามีจำนวนเท่าใดในสแต็ก คู่มือการทุบตีไม่ได้ดูเหมือนจะครอบคลุมนี้ ทำไมฉันต้องรู้สิ่งนี้ ฉันจุกจิกและทำความสะอาดกอง
39 bash  pushd 

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