UNIX COMMANDのメモページ
最終更新0000-00-00 00:00:00
役に立つページ
廃版になってしまった本の内容を、ウェブに公開したもの。本は古本にでていたら買うべし。
本
Macを使いながら、Unixの初歩を学ぶ人向き。一部を除けば、Macに限らず、Unixの初歩を学ぶこともできる。
UNIX Command集
ファイルのコピー
ファイルのコピーはcpコマンドを用いる。
cp hoge1 hoge2
ディレクトリごとコピーしたい場合は、-Rオプションを用いる。たくさんファイルがあって、きちんとcopyされていくのを見たい場合は、
cp -Rv hoge1 hoge2
などとすればよい。
ファイルを送りたい
ファイルを送るときに便利なコマンド。
- scp (-r) P nn [ssh先:Directory name] [持ってきたいDirectory]
- ファイルをsshで取ってくるときに便利なコマンド。"-r"をつけるとディレクトリを取ってくることができる。"P nn"はポートナンバーnnのこと。
また、rsyncもファイルの転送時に便利なコマンドである。cpやscpと違い、まるまるコピーするわけではなく差分をとって同期するような感じになる。使い方は
rsync -avz [ssh先:Directory name] [持ってきたいDirectory]
印刷関連(設定)
- lpr filename
- default設定のプリンタにプリント。
- lpboth filename
- 両面印刷をする。
画像関連
- pdf2ps filename.pdf filename.ps
- pdfファイルをpsファイルに変換する。
directoryに色をつけたい
defaultで色がついていない時は、.bashrcに
alias ls='ls --color'
を付け加える。
また、色を変更したい場合は、
このページを参考にするとよい。
2つのファイルの差をみたい
2つのファイルの差がどこにあるのかをみたいときは、
diff fileA fileB
とすると、違いがある行が羅列される。
違いがないときは、何もでてこない。また、ただdiffのみだとどこが変わったのがわかりづらいので、
diff -y fileA fileB
とすることで、2列並列で表示することができる。
X上でコピー&ペースト
X上でコピーは、ふつうにドラッグをすればよい。
ペーストは、
shift+ Ins
でできる。
ctrl+k
で一行削除+読み込み
ctrl+y
でペーストとなる。
ちなみに、一行でなくて、何行でもコピペは可能。
新しいウィンドウを開く
1つのウィンドウだけで作業せずに、2つ以上で同時にタスクをこなしたいときには、
xterm &
として、新しくウィンドウを開けばよい。
ここで、例えばウィンドウにスクロールバーをつけたければ、
xterm -sb &
というオプションをつければよい。
calコマンドの豆知識
タブ
gnome端末で、タブが使える物がある。(共通なのかどうか知らないけれど、僕の使っているものの場合は)
ctrl+shift+t
で新しいタブが開ける。ちなみに、タブ間の移動は
ctrl+pageup(あるいは+pagedown)
で移動できる。
ファイルから特定の行だけ抜き出す。
特定の名前が入った行だけを抜き出したいときは、grepコマンドが便利。
grep "hoge" filename
とすれば、hogeという言葉が入った行だけを抜き出してくれる。
それ以外にも、hogeかrc(つまりはor検索)が入った行を抜き出したければ、
grep -e "hoge" -e "rc" filename
とすればよい。"-e"が複数個を選択するオプションとして使える模様。
and検索をしたければ、
grep "hoge" filename | grep "rc"
とすればよい。
個人的にgrep検索をよく使うのは、とあるファイルのある行だけをみたいとき、わざわざファイル全部を見るのは面倒なので、例えば
grep PATH .bashrc
とかしたり、あるいは、過去に使ったコマンドを検索したいときに、
history | grep emacs
などとする。
また、hogeという言葉が入って「いない」検索をしたい場合は、
grep -v hoge filename
とすればよい。
また、hogeという言葉が入っていないファイル名だけを表示したい場合は、lオプションを使って、
grep -lv hoge *
などとすればよい。大文字小文字を区別しないiオプションを同時に使って、
grep -lvi hoge *
は重宝する。
少し凝った検索を行いたい
grepだけでもかなり重宝するが、いわゆるメタキャラクタを使った検索をしたい場合はegrepというコマンドを使う。例えば、discとdiskのどちらもを検索したいときは、
egrep dis(c|k)
と、orを表す"|"を用いてやればよい。
パーミションを確認する
各ファイルには、読み・書き・実行ができるかどうかが決まっている。これらをパーミションというが、それらを確認するには
ls -l filename
とすればよい。
パーミションを変更する
自分がユーザの場合、パーミションを変更することができる。
パーミションを変更するには
chmod ???? filename
とすればよい。????には
0400 所有者が読み込める
0200 所有者が書き込める
0100 所有者が実行できる
0040 groupに属するユーザが読み込める
0020 groupに属するユーザが書き込める
0010 groupに属するユーザが実行できる
0004 その他のユーザが読み込める
0002 その他のユーザが書き込める
0001 その他のユーザが実行できる
などが入る。各自、自分が行いたい変更を選べばよい。
ちなみに、「所有者は読み・書き・実行できる」ようにするには、
chmod 0700 filename
というように、上のリストの数字をそれぞれ足しあわせればよい。
ファイルの解凍をしたい
各種ファイルの解凍方法は、以下の様になる。
tarのオプションについて、詳しく知りたいときは、
ここを参照すること。
tar zxvf filename.tar.gz
あるいは、
tar zxvf filename.tgz
zipの場合は、
unzip filename.zip
となる。
日本語表示を英語にしたい
日本語表示が文字化けする環境の場合で、それらを英語にしたいときは、
setenv LANG C
としてみると、英語表示になるはず。
行頭にすぐにうつりたい
長いコマンドやディレクトリやファイル名を打っていて、行頭のミスタイプをなおしたいときは、
ctrl + a
で、行頭に戻ることができる。
コマンドを探したい
今使いたいコマンドが、自分が使っているOSに入っているかどうかを確かめたい時は、
which hogehoge
と打てばよい。たとえば、
ds9が入っているかどうかを確かめたければ、
which ds9
などとすれば、もし入っていれば、そのpath先を探し出してくれる。
ftp
ftpコマンドについては、
ここ
や
ここ
が非常に詳しい。
過去のコマンドを表示したい
上矢印で過去のコマンドを表示する方法もあるが、
history
とうつと、過去のコマンドが古い方から500個、番号付きで並ぶ。
もし、最新の10件だけでいい、というときは、
export HISTSIZE=10
history
などとするとよい。
Bash
Shell変数
bash環境では変数を定義することができる。たとえば、
hoge=1988
(=の前後は間を開けない。)とすると、
echo $hoge
と打てば、
1988
と表示される。
ただし、
echo hoge
としたら、
hoge
と表示されるだけなので、注意。もし、変数を取り消したいときは、
unset hoge
とすればよい。
Shell変数は今のターミナルでしか受け継がれないので、一般的にどのターミナルで用いたいときは、環境変数を設定しないといけない。
環境変数の表示
現在の環境変数を表示したいときは、
env
と打てば、いろいろな環境変数がばーっと並ぶ。
環境変数の定義
環境変数を定義したいときは、
export hoge=aho
とすればよい。表示は先ほどと一緒で、
echo $hoge
でよい。
自分が使っているShellを忘れてしまった。
自分がどんなShellを使っているのかわすれたら、
echo $SHELL
と打てば、あなたが使っているshellが何かわかるはず。
abc順に並べる
いわゆる辞書順にテキストファイルを並べ替えたいときは、
sort hoge.txt > hoge_new.txt
などとすればよい。
数字が小さい順に並べる
数字が小さい順に並べたければ、
sort -n hoge.txt
としてやればよい。
指数表示が含まれる数字列を、小さい順に並べる。
こういうときは、
sort -g hoge.txt
とすればよい。
n行目の列を基準に、並べ替え (列指定)
この場合は、-kオプションを使う
sort -kn hoge.txt
で、n行目を基準に並べ替えになる。
列のseparatorを指定する
この場合は、
sort -t"|" hoge.txt
などのように、tオプションを使う。
同じ行が複数あり、それらを1つの行だけ残したい。
そんなときは、uniqコマンドを使う。
例えば、
hoge
aho
hoge
hoge
aho
aho
hoge
というテキストファイル(hoge_aho.txt)があるとしたら、いったん
sort hoge_aho.txt > hoge_aho_new.txt
としてやり、
uniq hoge_aho_new.txt > hoge_aho_new2.txt
とする。もちろん、
sort hoge_aho.txt | uniq > hoge_aho_new.txt
としてもよい。
自分のIPアドレスを調べる
ipconfigを用いる。
ipconfig | grep inet
などと用いる。
何がどれくらいメモリを使っているかを調べる
こういう場合は、
top
と打ってやるだけで、よい。
ファイルの列の数を数えたい
wcコマンドというのを使うと、何列あるかを数えてくれる。
ls c* | wc
などとすれば、可憐とディレクトリに、頭にcがあるファイルの数がわかる。
pushd
少しだけ違うディレクトリに移って、すぐに元のディレクトリに戻ってくるときは、pushdコマンドがラク。移動する前のディレクトリを覚えていてくれて、
popd
でもとに戻ってくる。今、どんなディレクトリが記憶されているかは、
dirs
で見ることができる。
*
sort -k 2 hoge.txt | paste - hoge2.txt
で、hoge.txtの2行目と、hoge2.txtをペーストする。逆にくっつけたい場合は、
sort -k 2 hoge.txt | paste hoge2.txt -
とすればよい。
上からn番目までを表示する
上からn番目までを表示したいときは、
head -n
と書けばよい。
*
( n=1 ; while [ $n -le 20 ] ; do echo $n ; n=`expr $n + 1 ' ; done) | paste - - -
*
cut -b 11-14
バイトで、11-14バイト部分だけを取り出す
下からm番目からを表示する
こういうときは、
tail -m hoge.txt
と書けばよい。ちなみに、上からn番目からをとりたければ、
tail +m hoge.txt
あるいは、
tail -n +m hoge.txt
とかく。
aliasをつける
普段使っているコマンドに、時たまオプションをつけた作業をさせたいときがある。一回だけだったらともかく、その日にたまたまオプションをつけたコマンドをたくさん打つときがあったら、aliasを使えば良い。
例えば、典型例でいうと、rmを'rm -i'で使いたいときが来たときは、
alias rm='rm -i'
と打ってやる。その後、'rm'は必ず'rm -i'としてコマンドは実行される。ただし、logoutしたり、unaliasというのをすると、aliasは外れる。ちなみに、ただ
alias
と打つと、今aliasされているものの一覧が表示される。
unaliasしたい場合は、unaliasというのを使う。
例えば、先ほどの'rm'を'rm -i'としたものを外したければ、
流れとしては、
alias
で現在aliasされているものを確認し、
unalias rm
とすればよい。
と
ファイルの検索
find, locateなどがよく使われる。
例えば、ここ60分以内に変更された(カレントディレクトリ内にある)ファイルを検索したいときは、
find . -cmin -60 -print
などとすればよい。
ファイルを検索し、その中から特定の文字列が含まれているものを検索
そういう場合は、
find . -name "hogehoge" | xargs grep "fuga"
というようにすればよい。
複数の条件でファイルを検索したい
そういう場合は、
find . \( -name "hoge" -or -name "fuga" \)
のように、小括弧で囲むことで、条件を増やすことができる。
ちょっとしたメモを残したい
ちょっとしたメモを残したい時、emacsなどを開いていちいち書きこむのが面倒くさいときは、
cat > fuga
として、
My name is Fuga.
Please call me Fuga-chan.
^D
と入力しておけば、fugaに文章が残る。
2つのファイルをつなげる
hogeのうしろに、fugaというファイルをつけたいときは、
cat hoge fuga > newfile
とすれば、よい。
ファイルサイズをみたい
lsコマンドに、-skオプションをつけると、キロバイト単位で、表示をしてくれる。
ls -sk
ファイルの小文字をすべて大文字に変えたい
hoge内にあるファイルの小文字をすべて大文字にかえたければ、
tr [:lower:] [:upper:] < hoge
とすればよい。
ファイル内で使われている文字数を、重複なしで探したい
tr -cs "[:alnum:]" "\n" < hoge | tr "[:upper:]" "'[:lower:]" | sort | uniq | wc -l
とすればよい。
lpstat
プリンタに関する情報を取得するコマンドとして、lpstatがある。
lpstat -a
で、プリンタに関する前情報を取得することができる。デフォルトのプリンタを表示したいときは、
lpstat -d
とすればよい。
epsファイルにする
テキストファイルを印刷用に、epsファイルにするには、
enscript -phoge.eps hoge.txt
とする。
historyに時刻をつける
historyで履歴を見たい時に、そのコマンドを使用した時間も一緒に表示したい場合は、以下のようにする。
HISTTIMEFORMAT='%Y-%m-%d %T '; export HISTTIMEFORMAT
として、
history
とうつ。いつも表示したいときは、.bash_profileなどに書きこんでしまえば良い。
historyの履歴を変更する
historyで保存される履歴の数を変更したい場合は、.bash_profileなどに、
HISTSIZE=10000
などと書いておくと良い。
ディレクトリのみを表示
ファイルやディレクトリを表示するには"ls"コマンドを使用すればよいが、ディレクトリのみ、あるいはファイルのみを表示したいときは、
ls -l | grep "^d" (ディレクトリのみを表示)
ls -l | grep -v "^d" (ファイルのみを表示)
などとすればよい。もっと簡単に書きたいときは
ls -d */
と書くのもあり。スラッシュを省きたいときは、
ls -d */ | [[sed]] 's/\//g'
などとすればよい。
天文で用いる座標の変換
skycoor -d RA DEC
ファイルの順番を逆にする
unixコマンドではないが、
perl -pe "print reverse(<STDIN>)" < filename
とすればよい。
が、もっと楽なのを友人に教えてもらった。tacが入っていれば、
tac filename
でおk. macではdefaultではtacは入っていないらしく、そういうい場合は、
tail -r filename
というmac特有のrオプションを使って同じことができる。
ファイルの文字コードを調べる
nkfコマンドを使えば、ファイルの文字コードを調べたり、また変換したりできる。
ファイルの文字コードを調べるのは
nkf -g filename
そして、ファイルの文字コードをShift JISに変換するときは
nkf -s filename > newfile
などとする。
ファイルの下n行のみを削除する
tail -r を利用して下n行を消す。
tail -r filename | tail +(n+1) | tail -r
色をつけて表示
背景に色を付ける場合と、文字に色をつける場合がある。
echo "\033[35m hogehoge \033[0m"
環境変数の確認
特定の環境変数($PATHとか)を確認する場合は、
echo $PATH
でよいが、今設定されている環境変数一覧を見たい場合は、
printenv
とうつとよい。
fitsヘッダの情報を取ってきたい
これは実際にはunixのコマンドではないが、dfitsとfitsortというのがある。
これらを使うと、fitsファイルのヘッダ情報が簡単に取ってくることができる。
dfits hoge.fits
で、ヘッダを見ることができる。
dfits *.fits
ともできるし、ディレクトリ内のすべてのfitsファイルに対して、observer情報を取ってきたかったら、
dfits *.fits | fitsort OBSERVER
などとすればよい。
画像を圧縮・縮小する
多くの場合、convertを用いる。詳しくは
を参考のこと。
xargs
カレントディレクトリにある.tblファイルをすべて削除したいときは、
rm *.tbl
と打てば良いが、あまりにファイル数が多い場合、
- bash: /bin/rm: Argument list too long
というのが返ってくることがある。こういう場合は、いったんfindでファイルをリストアップして、xargsでパイプすれば良い。
find . -name "*.tbl" | xargs rm
これは、最初にfindで見つかったファイルリストを引数として、rmをする、ということになる。
RA DECなどの座標を銀経・銀緯に変換したい
skycoorというものがある。詳しくはmanしてください。
ファイルの書き出しと標準出力を同時に行いたい
ファイルに書き出しているデータを、一応目で見える形として、標準出力でも確認をしておきたい。
そういうときに2つ同じようなコマンド
ls
ls > hoge.txt
とかしているとアホっぽいし時間もかかるので、以下のようなコマンドが用意されている。
ls | tee hoge.txt
これで、標準出力と同じものが"hoge.txt"ファイルにも入る。
シェルスクリプトにおける引数
シェルスクリプトには位置パラメータと呼ばれる変数がすでに用意されており、シェルスクリプトを作成する際に重宝する。具体例でいうと
$#
$@
$*
$0
$1--$n
などがある。$#はシェルスクリプトで使用した引数の個数を返してくれる。たとえば、
./hoge.sh aa bb cc
の場合は、3を返してくれる。
$0は使用した引数すべてを返してくれる。
$1,...$nはawkと同じように、1個目…n個目の引数を返してくれる。
メモ
nmax=`wc -l std.cat | awk '{print $1}'` ; n=1 ; while [ $n -le $nmax ] ; do ID=`awk '{if(NR=='$n') print $1}' std.cat` ; grep ^$ID std.cat | awk '{printf("echo %s ; xpaset -p ds9 pan to %s %s fk5 ",$1,$2,$3)}' | sh ; read a ; echo $ID $a "x" | awk '{print $1,$2}' >> match.txt ; n=`expr $n + 1`; done
1183 history | tail -2 |Mail hogehoge@kusastro.kyoto-u.ac.jp
最終更新:2015年11月30日 11:51