- 追加された行はこの色です。
- 削除された行はこの色です。
[[FrontPage]]
*コマンド
#contents
* 特殊キー割り当て
** bash
stty erace ^H
stty stop undef
# 一覧
stty -a
# シェル変数一覧
set
# シェル/環境変数解除
unset HOGE
# 拡張子変更
for fn in *.htm; do
mv $fn ${fn%.htm}.html
done
# Ctrl-dでシェルを終了させない
IGNOREEOF=
# 解除
unset IGNOREEOF
# コマンド履歴検索
Ctrl-r
* 画面クリア
*** 設定ファイルの読み込まれるタイミング
- /etc/profile ログイン時 ~/.bash_profileより前
- ~/.bash_profile ログイン時
- ~/.bash_login ~/.bash_profileが存在しない場合
- ~/.profile ~/.bash_login が存在しない場合
- ~/.bashrc コマンドでbash起動したとき
- ~/.bash_logout ログアウト時
*** プロンプト
PS1="HOGE"
- \w カレントディレクトリ
- \W カレントディレクトリのディレクトリ名
- \H ホスト名(フル)
- \h ホスト名
** csh/tcsh
** 特殊キー割り当て
stty erace ^H
** 画面クリア
clear
reset
Ctrl-l
** 絶対パス取得
* 絶対パス取得
realpath RELATIVE
** キー入力・画面保存
* キー入力・画面保存
script FILE
〜
exit
** less
* 8/16進表示
export JLESSCHARSET=euc
jless -K sjis
# tab
less --tab=4
less -x4
# 行番号
less -N
# perldocでESC[が表示されないようにする
perldoc HOGE | less -r
** 8/16進表示
# 16
hexdump HOGE
od -h HOGE
# 8
od HOGE
** ls
* メモリ使用量を表示
# 拡張子で並び替え(FreeBSDでは使えないっぽい)
ls -lX
** メモリ使用量を表示
free
** 現在のユーザを表示
* 現在のユーザを表示
# suEXECのテストに使える
whoami
** OSのバージョン
* OSのバージョン
uname -a
** 指定時間に動作
* 指定時間に動作
# 追加
at 9:00
at 0:00 2001-01-01
# リスト
atq
# 削除
atrm NUM
# 編集
# 分 時間 日 月 曜日 コマンド
# コマンドのところでは % が改行に置換されるので注意
crontab -e
# リスト
crontab -l
# 削除
crontab -r
* ファイル色々
** 色付cal
crontabでpoweroffを指定したところcommand not foundに。~
/sbin/つけないとダメ?
#!/usr/bin/perl
use strict;
my $colorSun = qq|\033[1;31m|;
my $colorSat = qq|\033[1;34m|;
my $colorToday = qq|\033[0;32m|;
my $colorNon = qq|\033[0m|;
my @cal = split(/\n/, `cal`);
my $date = sprintf("%2d", `date +%e`);
foreach my $i (1..$#cal) {
$cal[$i] = sprintf("%-20.20s", $cal[$i]);
$cal[$i] =~ s/^(.{2})(.{16})(.{2})$/$colorSun$1$colorNon$2$colorSat$3$colorNon/gm;
$cal[$i] =~ s/(?=^| )$date(?= |$)/$colorToday$date$colorNon/;
}
my $retval = join("\n",@cal);
print $retval."\n";
crontabは改行で終わってないと動かない?~
そんなんだっけ?と思うのだが某サークルサーバでハマる。
** 演習室.bashrc
* nkf で上書き
alias ls='ls -F'
alias ll='ls -la'
alias less='jless'
alias tarc='tar czvf'
alias cal=ccal
export JLESSCHARSET=japanese-jis
export PAGER=jless
export LC_CTYPE=ja_JP.EUC
PS1='
\[\033[0;36m\]\u@\h \[\033[0;37m\]\w\[\033[0m\]
\$ '
export CLICOLOR=xterm-color
export LSCOLORS=exfxcxdxbxegedabagacad
export JSERVER=expwnn7
export MANPATH=$HOME/man:`manpath`
# for enshuD
export PATH=/home/exp/exppub/bin:$PATH
# for fetch
export ftp_proxy=http://cacheserv.ics.es.osaka-u.ac.jp:3128
export http_proxy=http://cacheserv.ics.es.osaka-u.ac.jp:3128
# for ports
export MASTER_SITE_OVERRIDE=ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
export PORTSDIR=$HOME/ports
export PREFIX=$HOME
export DISTDIR=$HOME/ports/distfiles
# for package
#export PACKAGEROOT=ftp://ftp2.jp.freebsd.org
#export PKG_DBDIR=$HOME/package/pkg_db
~--overwrite なんてオプションあったんだ。
** ph .cshrc
* logrotateなファイルをソート
umask 22
set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin $HOME/bin)
setenv EDITOR aee
setenv PAGER less
setenv BLOCKSIZE K
setenv CLICOLOR 1
setenv LSCOLORS Exfxcxdxbxegedabagacad
if ($?prompt) then
# An interactive shell -- set some stuff up
set filec
set history = 100
set savehist = 100
set autolist
set autoexpand
set color
set prompt = '%{\033[36m%n@%m%} %{\033[33m%~\033[00m%} \$ '
set mail = (/var/mail/$USER)
if ( $?tcsh ) then
bindkey "^W" backward-delete-word
bindkey -k up history-search-backward
bindkey -k down history-search-forward
endif
endif
source .alias
ls access.log* | sort -t . -k 3,3n
** Linux .alias
. を区切り記号に3カラム目で数値ソート。~
日付でソートできるときはそれでいいのだが
alias h='history 25'
alias j='jobs -l'
alias ls='ls --color=auto -F'
alias la='ls -a'
alias lf='ls -FA'
alias ll='ls -lA'
alias less='jless'
alias tarc='tar czvf'
** FreeBSD .alias
* ディレクトリのコピー
alias h history 25
alias j jobs -l
alias ls ls -G
alias la ls -a
alias lf ls -FA
alias ll ls -lA
alias less jless -Kjapanese-sjis
tar -cf - -C srcdir . | tar xpf - -C destdir
----
#comment
cd srcdir
find . | cpio -pvm destdir
srcdirの中身をdestdirの中にコピー
* 指定した期間に変更されたファイルの取得
# 7日以上前
find . -mtime +7
# 7日前(7*24h - 8*24h)
find . -mtime 7
# 7日以内
find . -mtime -7
* 開いているファイルなどを調べる
lsof
rootでないと取れない情報もあるが一般ユーザでも使える
lsof | perl -ane 'print "$F[0]\n";' | sort | uniq -c | sort -nr | head
開いているファイル数の多いCOMMANDを表示。~
[0] のところで適当にカラムを指定。
* よそのTimezoneでdate
TZ="America/New_York" date
* シンボルを調べる
# -x は全部
objdump -x TARGET_PATH
* diff
** 行番号のみを取得
diff --new-group-format="+ %4dF %4dL
" --old-group-format="- %4df %4dl
" --unchanged-group-format=""
- %4d は行番号の出力フォーマット
- "+" "-" は diff -u な形式に合わせているだけ
- それぞれ開始行と終了行が出力される(F L f l)
** 共通の行のみを取得
diff --new-line-format="" --old-line-format="" --unchanged-line-format="%L"
# ソートされたファイルが対象なのでそうでない場合の挙動は不明
comm -1 -2
* sudo と su の違い
$ sudo -u USER whoami
Sorry, user ME is not allowed to execute '/usr/bin/whoami' as USER on HOST.
$ su USER -c whoami
USER
権限関係いろいろ違うような感じ。
* find -print0
~-print0 は条件の後に書かないと、条件を無視して全て出力する。
* ディスクの削除
shred --random-source=rnd -n 2 -z -v /dev/hda
# coreutils-6 用(デフォルトが /dev/urandom を使うので遅い)
mkfifo rnd
while true ; do openssl rand $((2**31-1)) ; done > rnd &
shred --random-source=rnd -n 2 -z -v /dev/hda
http://moimoitei.blogspot.com/2009/07/erase-all-content-of-hdd-by-shred.html