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

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

2
วิธีการแยกชื่อไฟล์โดยไม่มีนามสกุลจากเส้นทางแบบเต็ม?
$1ฉันพยายามที่จะขวาสคริปต์ทุบตีครั้งแรกของฉันและเมื่อถึงจุดหนึ่งชื่อไฟล์ที่ถูกส่งไปยังสคริปต์ที่เป็น ฉันต้องการแยกชื่อไฟล์โดยไม่มีนามสกุล ขณะนี้ฉันสมมติว่าส่วนขยายทั้งหมดเป็นตัวอักษรสามตัวดังนั้นฉันจึงลบอักขระ 4 ตัวสุดท้ายเพื่อรับชื่อไฟล์: a="${1:0:-4}" แต่ฉันต้องสามารถทำงานกับส่วนขยายที่มีอักขระมากกว่าสามตัวเช่น%~n1ใน Windows มีวิธีใดที่จะแตกชื่อไฟล์โดยไม่มีนามสกุลจากการขัดแย้ง?

3
ไฟล์การตั้งค่าใดที่ควรใช้สำหรับการตั้งค่าตัวแปรสภาพแวดล้อมด้วย bash
เมื่อฉันถามและรับคำตอบที่นี่และที่นี่ตัวแปร PATH มีชื่อพา ธ ที่แตกต่างกันขึ้นอยู่กับวิธีการเปิดใช้งานแอป ควรใช้ไฟล์การตั้งค่าใด (.bashrc, .profile, ... ) เพื่อให้มีตัวแปร PATH เดียวกันไม่ว่าฉันจะเริ่มซอฟต์แวร์ด้วย bash อย่างไร
9 bash  path 

2
เขียนไฟล์ PID ด้วยตนเองจาก Bash script
ฉันจะเขียน Bash-script ที่รันโปรแกรมที่รันเป็นเวลานานและจัดเก็บ id กระบวนการของโปรแกรมไว้ในไฟล์แยกกันได้อย่างไร ฉันต้องการบางสิ่งบางอย่าง #!/bin/bash exec long_running_tool echo `ps af |grep "long_running_tool" |awk '$5 == "long_running_tool" {print $1}'` > pid_file อย่างไรก็ตามการทำเช่นนี้จะดำเนินการpsหลังจากเครื่องมือเสร็จสิ้น มีวิธีรับรหัสกระบวนการของกระบวนการที่สร้างขึ้นหรือไม่
9 bash 

2
ฉันจะปิดการใช้งานที่ "แสดงความเป็นไปได้ทั้งหมด" และ - เพิ่มเติม - สิ่งที่อยู่ในการทุบตี?
ในเปลือกของฉันl+ tabเสร็จสมบูรณ์เช่น: wim@wim-zenbook:~$ l Display all 135 possibilities? (y or n) มีพรอมต์ให้ตอบyหรือnสิ่งที่น่ารำคาญและมันก็ผ่านหน้า--More--ซึ่งเป็นที่น่ารำคาญ เราจะทำให้มันเป็นไปได้โดยปราศจากความจู้จี้ ใช้ gnome-terminal บน Ubuntu

6
/ usr / bin / env: php: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
ฉันต้องการใช้สคริปต์. sh สำหรับการปรับใช้แอพของฉัน สคริปต์นั้นอยู่บนเซิร์ฟเวอร์ในบ้านของฉัน (เซิร์ฟเวอร์ Ubuntu 15.10) ทำเครื่องหมายว่าสามารถใช้งานได้ การเข้าถึงสคริปต์นี้ทำได้ผ่าน ssh โดยใช้บทช่วยสอนนี้ฉันได้ตั้งค่าการเข้าสู่ระบบ ssh ที่ใช้งานสคริปต์นั้น โดยพื้นฐานแล้วฉันเพิ่งเรียกssh deployer@XXX.com someArgumentsมันและมันรันสคริปต์ด้วยsomeArgumentsพารามิเตอร์ ผู้ใช้deployerมี uid = 0 ดังนั้นโดยพื้นฐานแล้วroot(จะมีการเปลี่ยนแปลงในอนาคตฉันได้ตั้งค่าไว้เพื่อกำจัดปัญหาสิทธิ์อนุญาตจนกว่าจะทำงานได้ดี) และนี่คือสิ่งที่หากิน สคริปต์รายงาน/usr/bin/env: php: No such file or directoryที่คำสั่ง/bin/composer install(ใช้Composer ) สิ่งต่าง ๆ แปลก ๆ ยิ่งฉันดูบทนั้นมากขึ้น ก่อนบรรทัดนี้จะมีการเรียก/bin/composer self-updateและ/bin/composer -Vซึ่งทั้งคู่ทำงานอย่างถูกต้องและแสดงเอาต์พุตที่ถูกต้อง ฉันได้ตรวจสอบสิ่งต่าง ๆ ต่อไปนี้: /usr/bin/env php -vแสดงเวอร์ชั่น PHP ที่ถูกต้อง (เช่นเดียวกับ/usr/bin/php -v) whereis …
9 linux  ubuntu  bash  ssh  php 

5
ตั้งค่า $ PS1 แตกต่างกันในเครื่องคอมพิวเตอร์และในเซสชั่น ssh
ฉันเก็บไดเรกทอรีบ้านของฉันไว้ภายใต้การควบคุมเวอร์ชันเพื่อให้การกำหนดค่าพื้นฐานของฉันนั้นสามารถใช้ได้อย่างง่ายดายบนคอมพิวเตอร์เครื่องใดก็ได้ พรอมต์คำสั่ง bash ของฉันบนเครื่องคอมพิวเตอร์ของฉันเป็นสิ่งที่ซับซ้อนและมีสีสันที่มีที่เก็บ git ปัจจุบันและสถานะของมัน แต่ฉันควรจะมีuser@host ~ $พรอมต์คำสั่งง่ายๆเมื่อฉันsshเข้าไปในเครื่องระยะไกล ฉันต้องการที่จะสามารถอัปเดตของฉัน.profileเพื่อที่จะตั้งค่าที่ซับซ้อน$PS1เมื่อเรียกใช้ในพื้นที่และแบบที่ง่ายขึ้นเมื่อทำงานในsshเซสชั่น โดยทั่วไปฉันต้องการบางสิ่งบางอย่างเช่นตัวแปรในการทดสอบในของฉัน$AM_I_LOGGED_IN_VIA_SSH .profileเป็นไปได้ไหม
9 bash  ssh  shell  ps1 

6
ฉันจะย่อไฟล์จากบรรทัดคำสั่งได้อย่างไร
ฉันมีไฟล์ 150GB xml ที่ฉันต้องการย่อให้สั้นลง (เช่นตัด) เป็นประมาณ 1GB - มีคำสั่ง (ทุบตีหรือคล้ายกัน) ที่ฉันสามารถใช้ได้หรือฉันต้องใช้เส้นทางการเขียนโปรแกรม (แก้ไขใน vi หรือ emacs) เป็นฝันร้ายแม้แต่ในระบบเหล็กขนาดใหญ่)? (ฉันไม่กังวลเกี่ยวกับการสูญหายของข้อมูลโดยเฉพาะฉันต้องการไฟล์ที่สั้นกว่าเพื่อให้ฉันสามารถทดสอบซอฟต์แวร์ในส่วนนี้และไม่ต้องรอคำตอบนานหลายชั่วโมงไฟล์ที่สั้นกว่าจะทำให้ฉันทำเช่นนั้น)

5
นักเทียบท่าบน Conemu
ฉันพยายามที่จะทำให้การทำงานนักเทียบท่าใน ConEmu โดยการสร้างงานที่เปิดขึ้นมาเทียบท่าไฟล์โดยใช้start.shgit bash เนื่องจากโดยปกติแล้วนักเทียบท่าปลายทางจะชี้ไปที่"C:\Program Files\Git\bin\bash.exe" --login -i "C:\Program Files\Docker Toolbox\start.sh"ใดฉันสามารถทำงานใน ConEmu ได้ไหม ดังนั้นสิ่งนี้:
9 bash  conemu  docker  cmder 

2
เมื่อใดที่จะทำการปรับปรุงไฟล์ executables ใน $ PATH ด้วย bash?
Bash shell มีคำสั่งในตัวhash -rเพื่อรีเซ็ต$PATHแคชภายในสำหรับไฟล์เรียกทำงาน เมื่อใดจึงจำเป็นต้องใช้คำสั่งนี้ ที่เกี่ยวข้อง: วิธีการทำใหม่ executables ใน $ PATH ด้วย bash
9 bash  path 

2
ใช้ stdin จากไฟล์ แต่ยังคงมีมันปรากฏใน terminal
ฉันมีโปรแกรมที่ต้องการให้ฉันป้อนข้อมูลขณะที่โปรแกรมทำงาน ลองนึกภาพมันเป็นอย่างนั้น: $ ./program Hi there. What's your name? Zambezi What is your quest? To make a program which runs nicely What is your favourite color? Red ... ตอนนี้ฉันมีอินพุตทดสอบจำนวนหนึ่งเพื่อเรียกใช้โปรแกรมของฉันกับ พวกเขาทั้งหมดมีสิ่งที่ชอบ: Arthur, King of the Britons To seek the Holy Grail ... อย่างไรก็ตามสคริปต์ทดสอบบางตัวของฉันล้มเหลวและน่าเสียดายที่มันยากมากที่ฉันจะถอดรหัสตรงจุดที่มันล้มเหลวเนื่องจากเทอร์มินัลของฉันมีลักษณะดังนี้: $ ./program < arthur.txt Hi there. What's your …
9 linux  bash  terminal 

2
ไม่สามารถเชื่อมต่อวิดีโอ ffmpeg ได้
ฉันมีบิตแมปที่ฉันต้องการเชื่อมต่อกับด้านหน้าของวิดีโอหลาย ๆ ประเภทเป็นหน้าจอชื่อเรื่องหรือหน้าจอปฏิเสธความรับผิดชอบ ฉันลองเปลี่ยนเป็นวิดีโอที่มีคุณลักษณะเดียวกับวิดีโอที่เหลือ ดังนั้นก่อนอื่นฉันจะใคร่ครวญวิดีโอ: ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers built on Apr 11 2014 22:50:38 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) configuration: --prefix=/usr/local/Cellar/ffmpeg/2.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid libavutil 52. 66.100 …

4
วิธีการเลือกสำรวจประวัติคำสั่ง Bash บนเทอร์มินัล Linux [ซ้ำกัน]
คำถามนี้มีคำตอบอยู่ที่นี่แล้ว : bash: ประวัติต่อคำสั่ง มันทำงานยังไง? (1 คำตอบ) ปิดให้บริการใน7 ปีที่ผ่านมา ทุกคนรู้ (หรือควรรู้!) ว่าในเทอร์มินัลจะใช้ปุ่มลูกศรขึ้นและลงเพื่อเลื่อนดูประวัติคำสั่งที่ใช้ เมื่อคุณใช้เครื่องเทอร์มินัลเป็นประจำทุกวันประวัติคำสั่งของคุณน่าจะเป็นรายการคำสั่งต่าง ๆ จำนวนมากซึ่งทำให้การนำทางง่ายขึ้น ตัวอย่างเช่นสมมติว่าหนึ่งเดือนที่ผ่านมาฉันใช้iwconfigชุดพารามิเตอร์ที่กำหนด (เช่นที่ฉันพูดมันเป็นเพียงตัวอย่างฉันไม่ต้องยุ่งกับมันตอนนี้) ฉันจะจำคำสั่งนั้นได้อย่างไร ด้วยข้อโต้แย้งและพารามิเตอร์ทั้งหมดโดยไม่ต้องเลื่อนดูคำสั่งประวัติหลายร้อยรายการ? ฉันรู้ว่าฉันสามารถใช้historyเพื่อมีรายการคำสั่งที่ใช้ก่อนหน้านี้และ!nเพื่อดำเนินการคำสั่งnอีกครั้งในรายการที่กล่าว แต่เมื่อประวัติมีขนาดใหญ่ขึ้น สิ่งที่ดีที่สุดคือการมีบางอย่างที่จะให้ฉันใช้ปุ่มลัดเพื่อเลื่อนดูประวัติ แต่ระหว่างอินสแตนซ์ที่มีสิ่งที่ฉันพิมพ์บนบรรทัดคำสั่งแล้ว ดังนั้นในตัวอย่างของฉันหลังจากที่มีการพิมพ์iwconfigใช้ปุ่มบางอย่าง (อาจจะ PgUp และ PgDown?) เพียงเพื่อนำทางผ่านรายการที่เริ่มต้นด้วยการiwconfig ถ้ามันเป็นไปไม่ได้มันจะเป็นการดีถ้าจะพิมพ์รายการอย่างhistoryทำ แต่มันจะมีเฉพาะสิ่งที่ฉันพิมพ์ไปแล้ว (ฉันสงสัยว่าhistoryและgrepมีคำสั่งเกี่ยวข้อง แต่ฉันไม่แน่ใจเกี่ยวกับไวยากรณ์ที่ถูกต้อง); แต่โซลูชันฮอตคีย์ก่อนหน้านี้จะเป็นตัวเลือกที่ดีที่สุด

2
วิธียืนยันประวัติทุบตีอย่างไร
ฉันไม่รู้ว่านี่เป็นสิ่งที่คาดหวังหรือไม่ แต่ประวัติของฉันไม่ได้รับการบันทึกข้ามเซสชัน นี่คือการพูดว่าถ้าฉันปิดหน้าต่างจากนั้นเมื่อฉันเปิดมันอีกครั้งประวัติศาสตร์ว่างเปล่า ฉันจะคงอยู่ตลอดเซสชันได้อย่างไร? นี่คือผลลัพธ์ของคำสั่งที่คุณถาม: set -o | grep history history on $ grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profile /cygdrive/c/cygwin/home/car/.bashrc:# Make bash append rather than overwrite the history on disk /cygdrive/c/cygwin/home/car/.bashrc:# History Options /cygdrive/c/cygwin/home/car/.bashrc:# Don't put duplicate lines in the history. /cygdrive/c/cygwin/home/car/.bashrc:# export PROMPT_COMMAND="history -a" grep: /cygdrive/c/cygwin/home/car/etc/bash.bashrc: No …



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