顯示具有 Bash與Shell命令稿 標籤的文章。 顯示所有文章
顯示具有 Bash與Shell命令稿 標籤的文章。 顯示所有文章

2025年10月27日 星期一

讓ls -l或ll的時間戳記顯示年份

ls -l,或通常alias成ls -alF的指令ll,時間都不會顯是年份。指令可用:

  • ls -ld --time-style=long-iso
  • ls -alF --time-style=long-iso

2025年3月15日 星期六

用inxi指令列出網卡資訊,每兩行空一行

 一般的現代Linux,看網卡的使用的指令如下:

ip link
ip a
ip a show cx2
sudo ethtool cx2

依序列出所有網孔,所有網孔與對應的IP/MAC address、只顯示cx2這個網孔,cx2這網孔的進階資訊。但如果有安裝inxi這個指令的話,可以清楚的呈現網卡資訊,指令如下:

2023年11月9日 星期四

將bash和zsh共用的設定放到~/.oshrc

Mac現在預設的終端機(Terminal)使用的login shell是zsh,另外安裝的iTerm2則是因為習慣而設定成bash如下圖顯示:


同時使用zsh與bash會造成有些設定需要寫兩次很麻煩:
  • Terminal用的zsh設定放在 $HOME/.zshrc
  • iTerm2用的bash設定放在 $HOME/.bashrc
  • 解決方案則是把zsh與bash共用的設定放在 $HOME/.oshrc

2023年11月2日 星期四

Bash一行文:文本第一行不參與sort排序

在處理文本資料,尤其是像csv格式的表格,第一列通常是表格每個欄位的標題(header),在排序的時候通常不會處理,但又會需要印出來看。例如說:

  1. df -Th
  2. df -Th | awk 'NR<2{print $0;next}{print $0| "sort"}'
  3. df -Th | { sed -u 1q; sort; }
  4. df -Th | (sed -u 1q; sort)

第1個指令是印出目前系統上的掛載點與使用空間,2, 3, 4三個指令結果一樣,都是將掛載點依照名稱排序,但第一行的欄位不參與排序。每個指令的詳細說明如下:

2022年2月18日 星期五

安裝與使用BashTOP來監控資源的使用


在Ubuntu 20.04上面用bashtop監控系統資源,安裝指令依序如下:

  1. sudo add-apt-repository ppa:bashtop-monitor/bashtop
  2. sudo apt update
  3. sudo apt install bashtop

BashTOP是個用bash寫出來的程式,用/usr/bin/bashtop直接執行。設定檔放在$HOME/.config/bashtop/bashtop.cfg 但執行時不用更改,進去畫面後的操控主要是靠鍵盤上面的快速鍵達成:

2022年1月6日 星期四

Conda取消預設的登入啟動base環境

安裝完conda並執行完 conda init bash 會去修改~/.bashrc,之後每次登入都會直接啟動base這個環境。想要關閉則是用下面指令:

  • conda config --set auto_activate_base false

2021年12月31日 星期五

指令裡面的dash - 代表標準輸入

在指令裡面,dash (-, 通常是按鍵0右邊那個)代表的是標準輸入(standard input):

  1. cat ERR194147.fastq.gz | pv | time seqtk fqchk -q 30 - 
  2. zcat ERR194147.fastq.gz | pv | time seqtk fqchk -q 30 -
  3. unpigz -p 4 -c ERR194147.fastq.gz | pv | time seqtk fqchk -q 30 -

2020年11月19日 星期四

Shell一行文:rename大量更改檔名

要大量更改檔名可以用rename這個指令,首先用下面指令做出9個檔案

  • for i in {1..9}; do touch 2019TEST_$i.txt; done

這樣會產生 2020TEST_1.txt, ...等九個檔案。再用下面指令將2019TEST改成2020YEAR

  • rename 2019TEST 2020YEAR *.txt

最後則是將附檔名從.txt更改為.test

  • rename .txt .test *.txt

_EOF_

2020年7月3日 星期五

Shell一行文:查詢主機IP位址

查電腦連線出去的IP位址,用下面一行文指令:
  • curl -s -L http://whatismyip.systutorials.com/myip/

相關連結:

_EOF_

2020年6月23日 星期二

Bash一行文:去除副檔名

對於一個已知副檔名的檔案(例如說/tmp/file.txt),想要移除副檔名:
  • basename /tmp/file.txt .txt
上述會移除副檔名與路徑、若不知道副檔名則可用:
  • echo /tmp/file.txt | cut -f1 -d '.'
假設上述檔名存在變數file,則可用bash的substring功能:
  • echo "${file%.*}"

2020年6月1日 星期一

確認兩個資料夾的內容物都一樣

手上有兩個資料夾:
  • /home/user/Desktop
  • /bk/userDesktop
要確認這兩個資料夾的內容是否一樣只要用指令
  • diff -rq /home/user/Desktop /bk/userDesktop

2020年4月16日 星期四

用neofetch看硬體資訊

指令模式下看硬體資訊使用neofetch,使用ASCII art顯示

neofetch是用bash寫出來的,上圖的硬體資訊解釋如下:

2020年2月5日 星期三

Bash印出數字前面補上零

在bash裡面,要讓一個數字前面補上0,可以使用printf,以下為範例:
  • printf "%03d\n" 6

下面的範例則是印出1到20的數字,要印出三位數,前面補0

2020年1月22日 星期三

Windows用rsync做備份與同步

在Windows上,可以透過MobaXterm備份資料。例如說想要把系統上面的使用者資料都備份到外接硬碟(磁碟代號是G:),直接透過下面指令:
  • rsync -Cavubt /drives/c/Users /drives/g/
若是要透過網路芳鄰(Network Neighbor)把資料夾src備份到本機硬碟:
  • rsync -Cavubt //192.168.777.888/src /drives/g/

2019年11月19日 星期二

Shell一行文:每行前面加特定字串

對一個文字檔,每一行前面都要加個字串"Start_",用sed指令:
  • sed -i -e 's/^/Start_/' file
若不想要改到這個檔案,要存成另外一個新的則用:
  • sed -e 's/^/Start_/' file > file.new

2019年11月18日 星期一

Shell一行文:移除空白行

要移除檔案裡面的空白行只要用sed指令:
  • sed '/^$/d' /tmp/data.txt
若沒有更動原本的檔案,可以用IO轉向
  • sed '/^$/d' /tmp/data.txt > /tmp/output.txt

2019年10月17日 星期四

sudo的時候可用到alias的資訊

alias可以讓很長的指令變得比較精簡,但在sudo的時候這個簡化指令會出錯,例如說:
  • alias ll='ls -alF'
  • sudo ll
    sudo: ll: command not found

這時候只要多加入下面這行指令,就可以讓sudo成功用alias簡化的指令:

2019年10月3日 星期四

阻止Pulse Secure自動啟動

裝了VPN的客戶端Pulse Secure後,每次系統重開機都會跳視窗出來。一般關閉登入的方式(如下所示)找不到可以關閉的選項
  • Preferences → Users & Groups → Login Items
需要用下面的指令暴力的把這個開機程式給刪除:
  • sudo rm /Library/LaunchAgents/net.pulsesecure.pulsetray.plist
但這樣刪除後,點Pulse Secure的icon後無法正確的連線。必須要從終端機輸入指令才能夠讓Pulse Secure可以正常的連線:
  • open /Applications/Pulse\ Secure.app/Contents/Plugins/JamUI/PulseTray.app

2019年8月30日 星期五

Shell一行文:FASTA核酸序列轉成大寫

要把FASTSA序列檔案通通轉成大寫,最直接的方式用tr指令:
  • cat DEMO.fasta | tr '[:lower:]' '[:upper:]'
但這樣會把開頭是>的註解行也通通轉成大寫,要避免此狀況用下面指令:
  • cat DEMO.fasta | sed '/^[^>]/ y/atcg/ATCG/'

2019年7月22日 星期一

Shell一行文:用底線取代檔名中的空白

許多程式在處理檔名有空格的檔案時容易出錯,下面一行指令可以將資料夾下面所有檔名中所有空格全部都取代成底線(_)
  • for f in *\ *; do mv "$f" "${f// /_}"; done