給未來的裕翔
這很簡單
不過我就是會忘記^^
test -d target-dir
echo $?
0表示存在
1表示不存在
Showing posts with label bash. Show all posts
Showing posts with label bash. Show all posts
Tuesday, August 3, 2010
Monday, August 2, 2010
Friday, July 30, 2010
A台有的套件, B台也要
給未來的裕翔
這是一個我很喜歡的實作題
首先, 在A台電腦把所有安裝的套件名稱存檔
rpm -qa -queryformat "%{NAME}" > a-installed.txt
把a-installed.txt複製到B台電腦後
比較優雅的作法是, 把B台也有的套件從名單濾掉
先不管指令的回傳值, 上面那個script的意思是
對a-installed.txt的每個套件名稱
測試B本機有沒有, 以rpm -q來測試, 沒有就當false(先不管回傳值)
兩個指令中間是以||區隔
&&檢查到有false就停
||是檢查到有true就停
對那些不存在B本機的套件, 回傳false, 因此就會執行第二道指令
把它們的名稱echo到b-not-installed.txt裡面
那如果B本機本來有存在數個a-installed.txt裡面的套件呢?
在一開始的rpm -q會回傳true, 然後就沒事了~
這樣產生的b-not-installed.txt就是A有B沒有的
接著, yum似乎不能接受stdin來的input
所以可以利用xargs
cat b-not-installed.txt | xargs sudo yum -y install
或
sudo yum -y install `cat b-not-installed.txt`
似乎後者較好^^
當然啦, 這是比較優雅的作法, 因為少了上面那個bash script
也是無所謂阿, 已經裝過的會自動略過嘛!
這是一個我很喜歡的實作題
首先, 在A台電腦把所有安裝的套件名稱存檔
rpm -qa -queryformat "%{NAME}" > a-installed.txt
把a-installed.txt複製到B台電腦後
比較優雅的作法是, 把B台也有的套件從名單濾掉
for package in `cat a-installed.txt`
do
rpm -q $package &> /dev/null || echo $package >> b-not-installed.txt
done先不管指令的回傳值, 上面那個script的意思是
對a-installed.txt的每個套件名稱
測試B本機有沒有, 以rpm -q來測試, 沒有就當false(先不管回傳值)
兩個指令中間是以||區隔
&&檢查到有false就停
||是檢查到有true就停
對那些不存在B本機的套件, 回傳false, 因此就會執行第二道指令
把它們的名稱echo到b-not-installed.txt裡面
那如果B本機本來有存在數個a-installed.txt裡面的套件呢?
在一開始的rpm -q會回傳true, 然後就沒事了~
這樣產生的b-not-installed.txt就是A有B沒有的
接著, yum似乎不能接受stdin來的input
所以可以利用xargs
cat b-not-installed.txt | xargs sudo yum -y install
或
sudo yum -y install `cat b-not-installed.txt`
似乎後者較好^^
當然啦, 這是比較優雅的作法, 因為少了上面那個bash script
也是無所謂阿, 已經裝過的會自動略過嘛!
Tuesday, July 27, 2010
pts和virtual console
給未來的裕翔
渾渾噩噩過了24載
對於pts和virtual console的差別, 不想再無所謂了^^
pts是pseudo terminal slave, 也就是在桌面環境開啟的terminal
而virtual console就是Ctrl + Alt + F1~F6的那個東西
至於名稱來源我就不知道啦~
渾渾噩噩過了24載
對於pts和virtual console的差別, 不想再無所謂了^^
pts是pseudo terminal slave, 也就是在桌面環境開啟的terminal
而virtual console就是Ctrl + Alt + F1~F6的那個東西
至於名稱來源我就不知道啦~
Monday, July 26, 2010
bash的`
給未來的裕翔
剛發現, 在同一行可以用兩次以上的``耶!
ex: mkinitrd --with=raid1 initramfs-raid1-`uname -r`.img `uname -r`
這樣可以製作還有raid1.ko的RAN disk file
剛發現, 在同一行可以用兩次以上的``耶!
ex: mkinitrd --with=raid1 initramfs-raid1-`uname -r`.img `uname -r`
這樣可以製作還有raid1.ko的RAN disk file
Monday, July 19, 2010
快速製作大量使用者
給未來的裕翔
寫一個script
for name in name1 name2 name3 # …
do
useradd $name
echo password | passwd $name –stdin
done
如果使用者實在太大量了
可以把所有使用者另外存一個name-file
name1
name2
name3
blablabla
把原來的script修正為
for name in `cat name-file`
do
useradd $name
echo password | passwd $name –stdin
done
搞定~
寫一個script
for name in name1 name2 name3 # …
do
useradd $name
echo password | passwd $name –stdin
done
如果使用者實在太大量了
可以把所有使用者另外存一個name-file
name1
name2
name3
blablabla
把原來的script修正為
for name in `cat name-file`
do
useradd $name
echo password | passwd $name –stdin
done
搞定~
Wednesday, July 7, 2010
eval的功能
給未來的裕翔
因為先入為主
之前一直以為bash的eval跟matlab的eval一樣
但這樣又很奇怪~
剛看一下man(早該看了)
發現, eval只是把數行command一起執行而已......
因為先入為主
之前一直以為bash的eval跟matlab的eval一樣
但這樣又很奇怪~
剛看一下man(早該看了)
發現, eval只是把數行command一起執行而已......
Saturday, June 5, 2010
Monday, April 12, 2010
Monday, March 29, 2010
shell script: 如何快速複製數個binary所需的shared library到.
給未來的裕翔
如果現在有aaa, bbb, ccc, ddd四個binary
它們有各自需要的shared library, 也許會重複
如果現在我想把它們需要的shared library複製到 .
可使用以下shell script
#!/bin/bash
for bin in aaa bbb ccc ddd
do
cp $(ldd $(which $bin) | cut -d\ -f3) .
done
真是有點小敬佩自己^^
如果現在有aaa, bbb, ccc, ddd四個binary
它們有各自需要的shared library, 也許會重複
如果現在我想把它們需要的shared library複製到 .
可使用以下shell script
#!/bin/bash
for bin in aaa bbb ccc ddd
do
cp $(ldd $(which $bin) | cut -d\ -f3) .
done
真是有點小敬佩自己^^
shell script: 如何快速複製幾個我要的binary到.
給未來的裕翔
如果我要複製到 . 的是,aaa, bbb, ccc, ddd
#!/bin/bash
for bin in aaa bbb ccc ddd
do
cp $(which $bin) .
done
如果我要複製到 . 的是,aaa, bbb, ccc, ddd
#!/bin/bash
for bin in aaa bbb ccc ddd
do
cp $(which $bin) .
done
Friday, March 19, 2010
臨時取消alias功能
給未來的裕翔
原本在~/.bashrc有另外設定alias df='df -h'
那如果我臨時想要使用原本的df怎辦?
去~/.bashrc把alias df='df -h'註解掉?
剛google一個更簡單的作法
(本來只知道方法的存在)
\df
快吧^^ 帥吧^^
原本在~/.bashrc有另外設定alias df='df -h'
那如果我臨時想要使用原本的df怎辦?
去~/.bashrc把alias df='df -h'註解掉?
剛google一個更簡單的作法
(本來只知道方法的存在)
\df
快吧^^ 帥吧^^
Thursday, March 11, 2010
alias
給未來的裕翔
強烈建議把以下alias列入你的~/.bashrc
alias df='df -h'
alias grep='grep -n --color=auto'
alias ll='ls -lh'
df的-h是把有關partition大小的單位以人類好懂的MB, GB表示
grep的-n是把找到關鍵字的那行額外標出行號
grep的--color=auto是把找到的關鍵字用特別顏色標出來
ls的-h是把有關檔案大小的單位以人類好懂的MB, GB表示
note 1: 不能alias ll='ll -h', 會失敗
note 2: 改完如果希望馬上生效不需要重開機...... 只需source ~/.bashrc即可
強烈建議把以下alias列入你的~/.bashrc
alias df='df -h'
alias grep='grep -n --color=auto'
alias ll='ls -lh'
df的-h是把有關partition大小的單位以人類好懂的MB, GB表示
grep的-n是把找到關鍵字的那行額外標出行號
grep的--color=auto是把找到的關鍵字用特別顏色標出來
ls的-h是把有關檔案大小的單位以人類好懂的MB, GB表示
note 1: 不能alias ll='ll -h', 會失敗
note 2: 改完如果希望馬上生效不需要重開機...... 只需source ~/.bashrc即可
Subscribe to:
Posts (Atom)