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

Bash (Bourne-Again SHell) เป็นเชลล์ที่ใช้ในอินเตอร์เฟสบรรทัดคำสั่งของ Ubuntu ตามค่าเริ่มต้น

3
ฉันสามารถส่งอาร์กิวเมนต์ไปยังคำสั่ง alias ได้หรือไม่?
ฉันต้องการทราบว่าฉันสามารถส่งผ่านข้อโต้แย้งด้วยคำสั่งนามแฝง ตัวอย่างเช่น: alias d="dmesg|grep -iw usb|tail -5" ตอนนี้dจะพิมพ์ 5 บรรทัดสุดท้าย หากฉันต้องการใช้ d เพื่อพิมพ์จำนวนบรรทัดที่แตกต่างกันฉันต้องทำการเปลี่ยนแปลงในการประกาศคำสั่ง alias dอีกครั้ง มีวิธีใดบ้างที่ฉันสามารถแก้ไขการประกาศของนามแฝงเพื่อที่ฉันจะได้ไม่ต้องพิมพ์การประกาศซ้ำเพื่อเปลี่ยนจำนวนบรรทัด เช่นเดียวกับการใช้มาตรการที่ผ่านจำนวนของสายเป็นอาร์กิวเมนต์ในขณะที่การประกาศนามแฝงสำหรับd? หรือมีวิธีอื่นในการแก้ปัญหานี้?

1
รับ disignpace usign du ทั้งหมดสำหรับหลายไดเรกทอรี
ฉันรู้เกี่ยวกับ du-sh ซึ่งทำให้ฉันมีพื้นที่ดิสก์ทั้งหมดที่ใช้สำหรับไดเรกทอรีที่กำหนด ปัญหาของฉันคือไดเรกทอรีที่ฉันสนใจกระจัดกระจายในไดเรกทอรีย่อยมากมาย ฉันมีคำสั่ง "ค้นหา" ที่ถูกต้องที่ให้ไดเรกทอรีเหล่านี้แก่ฉัน เป้าหมายคือการส่งผ่านไดเรกทอรีที่พบและรับพื้นที่ดิสก์ทั้งหมดที่ใช้โดยไดเรกทอรีเหล่านี้ ถ้าฉันผ่านไดเรกทอรีเหล่านี้เป็นอาร์กิวเมนต์เพื่อ du ฉันได้รับใช้ทั้งหมดสำหรับไดเรกทอรีนั้น แต่ไม่มีผลรวมทั้งหมด ฉันต้องการได้รับผลรวมทั้งหมด ตัวอย่างdu -sh dir1 dir2ให้ผลลัพธ์ดังนี้ 17k dir1 55K dir2 ฉันต้องทำอะไรเพื่อให้ได้ผลรวมที่มากที่สุด?

4
ถ้าเงื่อนไขในหลายบรรทัดในเปลือกทุบตี
ฉันมีฟังก์ชั่นเปลือกทุบตีที่จะโต้แย้งและทำอะไรกับมันถ้าจำเป็น do_somthing() { if [need to do something on $1] then do it return 0 else return 1 fi } ฉันต้องการเรียกวิธีนี้โดยมีข้อโต้แย้งหลายอย่างและตรวจสอบว่าอย่างน้อยหนึ่งข้อประสบความสำเร็จหรือไม่ ฉันลองทำสิ่งที่ชอบ: if [ do_something "arg1" || do_something "arg2" || do_something "arg3" ] then echo "OK" else echo "NOT OK" fi สิ่งที่จะเป็นไวยากรณ์ที่ถูกต้องสำหรับที่? แก้ไข ด้วย - ฉันต้องการแน่ใจว่าแม้ว่าเงื่อนไขแรกจะเป็นจริงเงื่อนไขอื่น ๆ ทั้งหมดจะยังคงได้รับการประเมิน ขอบคุณ
19 bash  scripts 

1
ฉันสามารถเข้าสู่ระบบด้วยบัญชีผู้ใช้อื่นได้หรือไม่?
ฉันอยากจะถามคุณเกี่ยวกับคำสั่งเข้าสู่ระบบใน bash shell Ubuntu ฉันป้อน #login แล้วจะถามฉันเกี่ยวกับชื่อผู้ใช้และรหัสผ่าน นี่เป็นวิธีเข้าสู่ระบบด้วยบัญชีผู้ใช้อื่นหรือไม่?

4
ฉันจะแยกไฟล์“ / proc / * / environ” เป็นเส้นแยกได้อย่างไร
ฉันพยายามรับเนื้อหาของ/proc/*PID*/environไฟล์ใด ๆในรูปแบบที่อ่านง่ายขึ้น ฉันสามารถทำได้ตามวิธีที่แสดงด้านล่าง แต่ฉันแน่ใจว่านี่ไม่ใช่วิธีที่เหมาะสม $ cat "/proc/$(pgrep gnome-session -n -U $UID)/environ" USER=spasTEXTDOMAIN=im-configXDG_SEAT=seat0XDG_SESSION_TYPE=waylandSHLVL=1QT4_IM_MODULE=ximHOME=/home/spasDESKTOP_SESSION=ubuntuGNOME_SHELL_SESSION_MODE=ubuntuDBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/busIM_CONFIG_PHASE=2LOGNAME=spasGTK_IM_MODULE=ibusJOURNAL_STREAM=9:147845_=/usr/bin/gnome-sessionUSERNAME=spasXDG_SESSION_ID=70PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binXDG_RUNTIME_DIR=/run/user/1000LANG=en_US.UTF-8XDG_CURRENT_DESKTOP=ubuntu:GNOMEXDG_SESSION_DESKTOP=ubuntuXMODIFIERS=@im=ibusSHELL=/bin/bashGDMSESSION=ubuntuTEXTDOMAINDIR=/usr/share/locale/XDG_VTNR=2QT_IM_MODULE=ximPWD=/home/spasCLUTTER_IM_MODULE=ximXDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktopXDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg $ cat -e "/proc/$(pgrep gnome-session -n -U $UID)/environ" USER=spas^@TEXTDOMAIN=im-config^@XDG_SEAT=seat0^@XDG_SESSION_TYPE=wayland^@SHLVL=1^@QT4_IM_MODULE=xim^@HOME=/home/spas^@DESKTOP_SESSION=ubuntu^@GNOME_SHELL_SESSION_MODE=ubuntu^@DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus^@IM_CONFIG_PHASE=2^@LOGNAME=spas^@GTK_IM_MODULE=ibus^@JOURNAL_STREAM=9:147845^@_=/usr/bin/gnome-session^@USERNAME=spas^@XDG_SESSION_ID=70^@PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin^@XDG_RUNTIME_DIR=/run/user/1000^@LANG=en_US.UTF-8^@XDG_CURRENT_DESKTOP=ubuntu:GNOME^@XDG_SESSION_DESKTOP=ubuntu^@XMODIFIERS=@im=ibus^@SHELL=/bin/bash^@GDMSESSION=ubuntu^@TEXTDOMAINDIR=/usr/share/locale/^@XDG_VTNR=2^@QT_IM_MODULE=xim^@PWD=/home/spas^@CLUTTER_IM_MODULE=xim^@XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop^@XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg^@ $ cat -e "/proc/$(pgrep gnome-session -n -U $UID)/environ" | sed 's/\^@/\n/g' USER=spas TEXTDOMAIN=im-config XDG_SEAT=seat0 XDG_SESSION_TYPE=wayland ... บางทีฉันต้องกำหนดค่าเฉพาะให้กับ$IFSมัน แต่มันคืออะไร วิธีที่เหมาะสมในการบรรลุผลลัพธ์ข้างต้นคืออะไร?


2
อุณหภูมิของ CPU ฝังตัวในพรอมต์คำสั่ง Bash
ฉันสงสัยว่ามันจะเป็นไปได้หรือไม่ที่จะได้อุณหภูมิของ CPU และฝังลงในพรอมต์คำสั่ง นี่คือผลลัพธ์ของฉันสำหรับsensors: $}-sensors coretemp-isa-0000 Adapter: ISA adapter Physical id 0: +55.0°C (high = +87.0°C, crit = +105.0°C) Core 0: +55.0°C (high = +87.0°C, crit = +105.0°C) Core 1: +52.0°C (high = +87.0°C, crit = +105.0°C) คุณช่วยแสดงวิธีใช้grepฟังก์ชั่นเพื่อฝังอุณหภูมิลงในพรอมต์คำสั่งของฉันได้ไหม
18 bash 

1
เชลล์โหลดช้ามาก - Ubuntu 14.04
เปิดเทอร์มินัลของฉัน (ctrl + alt + t) ใช้เวลานานในการโหลดพรอมต์ของฉัน ฉันได้อ่านที่นี่เกี่ยวกับปัญหาเดียวกัน แต่ไม่มีวิธีแก้ปัญหาของพวกเขาช่วยฉัน เมื่อเปิดเทอร์มินัลจะใช้เวลาในการโหลดประมาณ 4-5 วินาทีและก่อนที่ข้อความแจ้งจะปรากฏขึ้นฉันเห็นแฟลชที่รวดเร็วของโปรแกรมหน้าจอกระเซ็นสีขาวโผล่ขึ้นมา ฉันไม่คิดว่ามันจะเกิดขึ้นหลังจากติดตั้งแพคเกจ / ซอฟต์แวร์ใด ๆ ข้อเสนอแนะใด ๆ ขอบคุณล่วงหน้า.

2
มีวิธีง่าย ๆ ในการบันทึกกิจกรรมทั้งหมดที่เชลล์สคริปต์ทำหรือไม่?
มีวิธีง่าย ๆ ในการบันทึกกิจกรรมทั้งหมดที่เกิดขึ้นจากเชลล์สคริปต์ไปยังไฟล์หรือไม่? ฉันมีสคริปต์ มันแสดงผลสิ่งต่าง ๆ เช่น "คำแนะนำ" echo เช่นเดียวกับผลลัพธ์ของโปรแกรมอื่น ๆ ฉันรู้คำสั่ง: command | tee -a "$log_file" และ command >> logifle.log สิ่งที่ฉันถามคือมีพารามิเตอร์เชลล์สำหรับการบันทึกหรือคำสั่ง set ที่ฉันสามารถใช้ได้หรืออะไรทำนองนั้น ฉันไม่ต้องการเพิ่มการเปลี่ยนเส้นทางหรือทีออฟลงไฟล์หลายสิบครั้งหากฉันไม่จำเป็นต้องทำ ฉันยังต้องการรับเอาต์พุต std ด้วย - ฉันแค่ต้องการให้บันทึกด้วย :wq

4
เรียกใช้แอปพลิเคชันสคริปต์ซ้ำเมื่อเกิดข้อผิดพลาดหรือไม่
ฉันมีแอพพลิเคชั่นบางตัวที่จำเป็นต้องใช้กับแล็ปท็อปของฉันตลอดเวลา ฉันใช้ bash script เพื่อเริ่มแอปพลิเคชันเหล่านี้ ในสคริปต์ของฉันฉันมีลูปที่มีลักษณะคล้ายกับสิ่งนี้: while true; do xterm done นี่จะเรียกใช้แอปพลิเคชัน ( xtermในกรณีนี้) และหากแอปพลิเคชันขัดข้องลูปจะเริ่มต้นอีกครั้ง นี่เป็นข้อเสียที่ไม่มีทางออก "สะอาด" จากลูปนี้ ดังนั้นแม้ว่าเจตนาของผู้ใช้คือการปิดxtermลูปจะเริ่มใหม่อีกครั้ง มีวิธีการเริ่มแอปพลิเคชันจากสคริปต์ทุบตีดูว่ามันกำลังทำงานอยู่เพื่อเรียกใช้อีกครั้งถ้าสคริปต์ล้มเหลวหรือไม่ทำอะไรเลยหากผู้ใช้ปิดอย่างถูกต้องหรือไม่
18 bash  scripts 

1
เสร็จสิ้นแท็บ Bash: '-bash: EOF ที่ไม่คาดคิดขณะค้นหาการจับคู่ `)' -bash: ข้อผิดพลาดทางไวยากรณ์: สิ้นสุดไฟล์ที่ไม่คาดคิด
ฉันพยายามเข้าสู่irbเซสชันที่มีตัวแปรสภาพแวดล้อมเฉพาะจากไฟล์ด้วยคำสั่งนี้: $ env $(cat env.sh) irb แต่เมื่อฉันลองกดTabหลังจากพิมพ์env.เสร็จฉันได้รับข้อผิดพลาดต่อไปนี้: $ env $(cat env.-bash: unexpected EOF while looking for matching `)' -bash: syntax error: unexpected end of file อีกสิ่งที่น่าสนใจคือถ้าฉันเข้าสู่ระบบในฐานะ root ข้อผิดพลาดนี้ไม่เกิด นี่คือผลลัพธ์ของfind ~ -uid 0: $ find ~ -uid 0 /home/(redacted)/.rpmdb /home/(redacted)/.rpmdb/Group /home/(redacted)/.rpmdb/Conflictname /home/(redacted)/.rpmdb/Installtid /home/(redacted)/.rpmdb/Sha1header /home/(redacted)/.rpmdb/Providename /home/(redacted)/.rpmdb/__db.002 /home/(redacted)/.rpmdb/Requirename /home/(redacted)/.rpmdb/Sigmd5 /home/(redacted)/.rpmdb/__db.001 /home/(redacted)/.rpmdb/Obsoletename /home/(redacted)/.rpmdb/.dbenv.lock /home/(redacted)/.rpmdb/Name …

7
ออกจากเทอร์มินัลหลังจากรันสคริปต์ทุบตี
ฉันพยายามเขียนbashสคริปต์เพื่อเปิดไฟล์บางไฟล์ (ส่วนใหญ่เป็นไฟล์ pdf) โดยใช้gnome-openคำสั่ง ฉันต้องการให้เทอร์มินัลออกเมื่อเปิดไฟล์ pdf ฉันได้ลองเพิ่มexitในตอนท้ายของสคริปต์ของฉัน แต่ที่ไม่ปิด terminal ฉันพยายามค้นหาคำตอบสำหรับคำถามของฉันทางออนไลน์ แต่ฉันไม่สามารถหาคำตอบที่เหมาะสมได้ฉันจะขอบคุณถ้าคุณช่วยได้ ฉันต้องการคำตอบที่จะฆ่าเทอร์มินัลที่ฉันรันคำสั่งไม่ใช่เทอร์มินัลทั้งหมดจะเป็นไปได้หรือไม่ คำตอบก่อนหน้าซึ่งฉันยอมรับฆ่า windows terminal ทั้งหมดที่เปิดอยู่ ฉันไม่ได้ตระหนักถึงสิ่งนี้เป็นกรณีจนถึงวันนี้

6
วิธีรับอินพุตกล่องโต้ตอบที่นำไปสู่ตัวแปรได้อย่างไร
ฉันสอนตัวเองด้วยการทุบตีสคริปต์และพบปัญหา ฉันเขียนสคริปต์เพื่อรับอินพุตจากผู้ใช้โดยใช้คำสั่ง 'read' และทำให้อินพุตนั้นเป็นตัวแปรที่จะใช้ในภายหลังในสคริปต์ สคริปต์ทำงานได้ แต่ .... ฉันต้องการติดตั้งโดยใช้ 'โต้ตอบ' ฉันพบว่า 'dialog --inboxbox' จะนำเอาต์พุตไปยัง 'stderr' และเพื่อให้ได้อินพุตนั้นเป็นตัวแปรคุณต้องนำไปยังไฟล์แล้วดึงข้อมูลนั้นมา รหัสที่ฉันพบเพื่ออธิบายสิ่งนี้คือ: #!/bin/bash dialog --inputbox \ "What is your username?" 0 0 2> /tmp/inputbox.tmp.$$ retval=$? input=`cat /tmp/inputbox.tmp.$$` rm -f /tmp/inputbox.tmp.$$ case $retval in 0) echo "Your username is '$input'";; 1) echo "Cancel pressed.";; esac ฉันเห็นว่ามันกำลังส่ง sdterr …
18 bash  dialog 

2
bash: ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `('
ฉันพยายามดาวน์โหลดตัวจัดการดาวน์โหลด flareget ผ่าน wget ฉันได้รับข้อผิดพลาด wget http://www.flareget.com/files/flareget/debs/amd64/flareget_2.3-24_amd64(stable)_deb.tar.gz bash: syntax error near unexpected token `(' เหตุใดจึงเกิดข้อผิดพลาดขึ้นและวิธีแก้ไขปัญหานั้นคืออะไร
18 bash  scripts  wget 

1
วิธีการตั้งค่าไอคอนและชุดรูปแบบจาก terminal?
มีวิธีการตั้งค่าชุดไอคอนที่ใช้งานและชุดรูปแบบ GTK จากเทอร์มินัลหรือไม่? ฉันต้องการเขียนสคริปต์ที่ติดตั้งและตั้งค่าทุกอย่างในแบบที่ฉันชอบเมื่อติดตั้งใหม่
18 bash  themes 

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