發表文章

目前顯示的是有「shell and script」標籤的文章

如何 reset USB host ??

echo 0 > /sys/bus/usb/devices/usb1/authorized echo 1 > /sys/bus/usb/devices/usb1/authorized

Copy with a progress bar with cpv

reference:  https://ownyourbits.com/2017/09/13/copy-with-a-progress-bar-with-cpv/

monitor tar-progress in linux using pv command

tar cf - /folder-with-big-files -P | pv -s $(du -sb /folder-with-big-files | awk '{print $1}') | gzip > big-files.tar.gz 4.69GB 0:04:50 [16.3MB/s] [==========================> ] 78% ETA 0:01:21 $ pv big-files.tar.gz | tar xjf - -C target_directory reference:         http://www.tecmint.com/monitor-copy-backup-tar-progress-in-linux-using-pv-command/

Disable Network Manager

Disable Network Manager Debian: $ sudo /etc/init.d/network-manager stop $ sudo update-rc.d network-manager remove Ubuntu or Linux Mint $ sudo stop network-manager $ echo "manual" | sudo tee /etc/init/network-manager.override Fedora: $ sudo systemctl stop NetworkManager.service $ sudo systemctl disable NetworkManager.service $ sudo vi /etc/NetworkManager/NetworkManager.conf [ifupdown] managed=false $ sudo vi /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback # network interface not managed by Network Manager allow-hotplug eth1 iface eth1 inet static address 10.0.0.10 netmask 255.255.255.0 gateway 10.0.0.1 dns-nameservers 8.8.8.8

Bash Shell: Check File Exists or Not

File test operators The following operators returns true if file exists:        -b FILE               FILE exists and is block special        -c FILE                FILE exists and is character special        -d FILE               FILE exists and is a directory        -e FILE               FILE exists        -f FILE               FILE exists and is a regular file        -g FILE          ...

vim 編輯二進制檔案

開啟文件:     vim -b filename 轉換成二進制: (可開始編輯)     :%!xxd 還原:     :%!xxd -r

strip 用法

Shared Library(*.so) strip --strip-debug --remove-section=.note --remove-section=.comment *.so kernel module(*.ko) strip -g -S -d *.ko or strip --strip-debug --strip-unneeded *.ko find ./ install/lib/modules/3.10.17/kernel/ -iname "*.ko" -exec strip -g -S -d {} \;

在 Linux 底下,如何讓 CPU 使用率達到 100% (使用 md5sum 與 gzip)

md5sum < /dev/urandom & cat /dev/urandom | gzip > /dev/null & reference: http://rainstingtw.blogspot.com/2013/07/Use-md5sum-gzip-CPU-fullloading.html

gzip: initrd.img: unknown suffix -- ignored

gzip 只認識 .gz 的檔案,  所以將 initrd.img 改成 imitrd.gz gzip -d initrd.gz   → OK

shell script 小程式

1. 利用 smartctl 讀硬碟溫度     smartctl -d ata -A /dev/sda | grep Tempera | cut -c 88-90

How to switch between users on one terminal?

How about using the  su  command? $ whoami user1 $ su - user2 Password: $ whoami user2 $ exit logout If you want to log in as root, there's no need to specify username: $ whoami user1 $ su - Password: $ whoami root $ exit logout Generally, you can use  sudo  to launch a new shell as the user you want; the  -u  flag lets you specify the username you want: $ whoami user1 $ sudo -u user2 zsh $ whoami user2 sudo -s  gives you a shell like  su ,  sudo -i  simulates login like  su - . Can be combined with  -u $user ,

讓/etc/passwd更利於閱讀

#!/bin/bash IFS=: echo "System User list:" echo "-------------------------------------" while read username shapass uid gid comm home shell do echo "UserName:$username" echo " 1.password:$shapass" echo " 2.uid:$uid" echo " 3.gid:$gid" echo " 4.comment:$comm" echo " 5.home:$home" echo " 6.default shell:$shell" echo "------------------------------------" done < /etc/passwd

利用 dd 備份硬碟

將硬碟直接備份到另外一顆硬碟 # dd if=/dev/sda of=/dev/sdb # dd if=/dev/sda of=/dev/sdb bs=4096k # dd if=/dev/sda of=/dev/sdb conv=noerror,sync bs=4k bs 會影響速度, 沒設的話 default 是  512 , 很慢很慢 備份硬碟磁區 # dd if=/dev/sda1 of=/dev/sda5 建立硬碟的映像檔 在此處,用dd 來製作一個第一部硬碟的影像檔,並且將其結果導入gzip壓縮程式。其產生的壓縮結果則被置於另一磁碟的一個檔案中。反向的程序方法 # dd if=/dev/sda | gzip > /mnt/sdb1/backup.img.gz 解開影像檔到硬碟 # gzip -dc /mnt/sdb1/backup.img.gz | dd of=/dev/sda Reference:http://wiki.ubuntu-tw.org/index.php?title=Dd

sed 單行腳本快速參考

# 在每一行後面增加一空行 sed G # 將原來的所有空行刪除並在每一行後面增加一空行。 # 這樣在輸出的文本中每一行後面將有且只有一空行。 sed '/^$/d;G' # 在每一行後面增加兩行空行 sed 'G;G' # 將第一個腳本所產生的所有空行刪除(即刪除所有偶數行) sed 'n;d' # 在匹配式樣“regex”的行之前插入一空行 sed '/regex/{x;p;x;}' # 在匹配式樣“regex”的行之後插入一空行 sed '/regex/G' # 在匹配式樣“regex”的行之前和之後各插入一空行 sed '/regex/{x;p;x;G;}' 編號: -------- # 為文件中的每一行進行編號(簡單的左對齊方式)。這裡使用了“製表符” # (tab,見本文末尾關於'\t'的用法的描述)而不是空格來對齊邊緣。 sed = filename | sed 'N;s/\n/\t/' # 對文件中的所有行編號(行號在左,文字右端對齊)。 sed = filename | sed 'N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /' # 對文件中的所有行編號,但只顯示非空白行的行號。 sed '/./=' filename | sed '/./N; s/\n/ /' # 計算行數(模擬"wc -l") sed -n '$=' 文本轉換和替代: -------- # Unix環境:轉換DOS的新行符(CR/LF)為Unix格式。 sed 's/.$//' # 假設所有行以CR/LF結束 sed 's/^M$//' # 在bash/tcsh中,將按Ctrl-M改為按Ctrl-V sed 's/\x0D$//' # ssed、gsed 3.02.80,及更高版本 # Unix環境:轉換Unix的新行符(LF)為DOS格式。 sed "s/$/`echo -e \\\r...

cut,sed,awk 字串處理

cut 教學:   cut -b 10- filename //刪除該列的前10個字元   cut -d(分界字元) filename //指定欄位的分界字元 sed 教學:   sed -e '3d' //刪除第3列   sed -e '2,5d' //刪除第2~5列   sed -e '4,$d' //刪除第4列,但第4列是最後一列;錢字號『 $ 』代表最後一行!   sed -e "/${var}/"d //在shell中,用變數代替   sed 's/^...//' //刪除該列的前3個字元   sed 's/...$//' //刪除該列的最後3個字元   sed '/Hello/d' dataf3 //刪除Hello該列   sed -i “s/\r//”FILENAME //刪除檔案中的^M字元   sed 's/要被取代的字串/新的字串/g'   ex: sed 's/*//g' //將「*」符用空白字元取代 awk教學:   awk 'NR!=3 {print $0}' //刪除第3列   awk '!(NR>=2 && NR<=5){print $0}' //刪除第2~5列 綜合:   捉取第一列的「 : 」前的資料   awk 'NR==1' aaa . a | cut - f 1 - d :   捉取第一列的「 : 」前的資料並計算個數   awk 'NR==1' aaa . a | cut - f 1 - d : | wc - m    cat test.sh | awk -F = '/Sub 1/ {print NR}' //抓test.sh的Sub 1所在的列數   抓取Channel方法   iwconfig ra0 2>/dev/null | grep Channel | awk '{print $2}' | cut -b 9- 節錄自...

Shell Script 取得日期的方法

日期(Linux): TODAY=`date +%Y%m%d` YESTERDAY=`date -d'-1 day' +%Y%m%d` LAST_MONTH=`date -d'-1 month' +%Y%m%d`

Linux : BIG-5 與 UTF-8 檔案轉換

Big-5 To Utf-8 iconv -f big5 -t utf-8 big5.txt -o utf8.txt Utf-8 To Big-5 iconv -f utf-8 -t big5 utf8.txt -o big5.txt

Linux Remove a symbolic link

可以用 rm & unlink 但要注意 在移除一個 symbolic link 時,要留意後面不能加個 "/" !這樣,若 symbolic link 是連到一個目錄時,等同於在對那個目錄做 rm 的動作,才會顯示 "is a directory" 訊息。這時可不能一氣之下用 rm -rf !可會將 link 到的目錄給移除掉的!要額外小心。 Reference: http://www.cyberciti.biz/faq/linux-remove-delete-symbolic-softlink-command/

shell script 的檢查

shell script 的追蹤與 debug scripts 在執行之前,最怕的就是出現語法錯誤的問題了!那麼我們如何 debug 呢?有沒有辦法不需要透過直接執行該 scripts 就可以來判斷是否有問題呢?呵呵!當然是有的!我們就直接以 bash 的相關參數來進行判斷吧! [root@www ~]# sh [-nvx] scripts.sh 選項與參數: -n :不要執行 script,僅查詢語法的問題; -v :再執行 sccript 前,先將 scripts 的內容輸出到螢幕上; -x :將使用到的 script 內容顯示到螢幕上,這是很有用的參數! 範例一:測試 sh16.sh 有無語法的問題? [root@www ~]# sh -n sh16.sh # 若語法沒有問題,則不會顯示任何資訊! 範例二:將 sh15.sh 的執行過程全部列出來~ [root@www ~]# sh -x sh15.sh + PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin + export PATH + for animal in dog cat elephant + echo 'There are dogs.... ' There are dogs.... + for animal in dog cat elephant + echo 'There are cats.... ' There are cats.... + for animal in dog cat elephant + echo 'There are elephants.... ' There are elephants.... 請注意,上面範例二中執行的結果並不會有顏色的顯示!鳥哥為了方便說明所以在 + 號之後的資料都加上顏色了! 在輸出的訊息中, 在加號後面的資料其實都是指令串,由於 sh -x 的方式來將指令執行過程也顯示出來, 如此使用者可以判斷程式碼執行到哪一段時會出現相關的資訊! 這個功能非常的棒!透過顯示完整的指令串, 你就能夠依據輸出的錯誤資訊來訂正你的腳本了! 以上取自 鳥哥 ....

備份 MBR, 還原 MBR, 刪除 MBR

備份硬碟MBR # dd if=/dev/sda of=/mbr.bak bs=512 count=1 還原硬碟MBR # dd if=/mbr.bak of=/dev/sda bs=512 count=1 刪除硬碟MBR # dd if=/dev/zero of=/dev/sda bs=512 count=1