Linuxターミナル | Mac X11ターミナル | Windows | Mac | ||
コピー | マウスクリックで黒くする(ハイライト) | 〃 | Ctrl + c | command(アップル) + c | |
ペースト | 中クリック(左右同時クリック) | X11の環境設定→3ボタンエミュレートを有効→option + クリック | Ctrl + v | command(アップル) + v |
-X:X11転送を許可 -Y:信頼されたX11転送を許可
@@@@@@@@@@@@@ @ warning! @@@@@@@@@@@@@
vi .ssh/known_host
get リモートのファイル名 # ファイルをローカルに転送 put ローカルのファイル名 # ファイルをリモートに転送
scp アカウント名@IPアドレス:ファイルへのパス/ファイル名 .
scp ファイル名 アカウント名@IPアドレス:置きたい場所へのパス/
scp -r ・・・
rsync --stats -e ssh -rav account@ipアドレス:パス .
Host: IPアドレス Port: 22 Servertype: SFTP using SSH2 Logontype: Normal User: ユーザー名 Password: パスワード
if [ ${hoge1} -lt ${hoge2} ] ;then elif [ ${hoge1} -eq ${hoge2} ] ;then else fi
for ${mmm} in jan feb mar apr may jun jul aug sep oct nov dec ;do done
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
case ${mo} in 01) mmm=jan ;; 02) mmm=feb ;; 03) mmm=mar ;; 04) mmm=apr ;; 05) mmm=may ;; 06) mmm=jun ;; 07) mmm=jul ;; 08) mmm=aug ;; 09) mmm=sep ;; 10) mmm=oct ;; 11) mmm=nov ;; 12) mmm=dec ;; esac
case ${mmm} in jan) mo=01 ;; feb) mo=02 ;; mar) mo=03 ;; apr) mo=04 ;; may) mo=05 ;; jun) mo=06 ;; jul) mo=07 ;; aug) mo=08 ;; sep) mo=09 ;; oct) mo=10 ;; nov) mo=01 ;; dec) mo=12 ;; esac
for ssn in djf mam jja son ;do case ${ssn} in djf) t1=12 ; t2=1 ; t3=2 ; mmm=DJF ;; mam) t1=3 ; t2=4 ; t3=5 ; mmm=MAM ;; jja) t1=6 ; t2=7 ; t3=8 ; mmm=JJA ;; son) t1=9 ; t2=10 ; t3=11 ; mmm=SON ;; esac 't1=(q(t=${t1})+q(t=${t2})+q(t=${t3}))/3' done
if [ $((year%4)) -eq 0 -a $((year%100)) -ne 0 -o $((year%400)) -eq 0 ] ;then else fi
for mm in 1 2 3 4 5 6 7 8 9 10 11 12 ;do case ${mm} in 1) str=1 ; end=31 ;; 2) str=32 ; end=59 ;; 3) str=60 ; end=90 ;; 4) str=91 ; end=120 ;; 5) str=121 ; end=151 ;; 6) str=152 ; end=181 ;; 7) str=182 ; end=212 ;; 8) str=213 ; end=243 ;; 9) str=244 ; end=273 ;; 10) str=274 ; end=304 ;; 11) str=305 ; end=334 ;; 12) str=335 ; end=365 ;; esac
mon=1 while [ ${mon} -le 12 ] ;do if [ ${mon} -eq 1 ] || [ ${mon} -eq 3 ] || [ ${mon} -eq 5 ] || [ ${mon} -eq 7 ] || [ ${mon} -eq 8 ] (続き) || [ ${mon} -eq 10 ] || [ ${mon} -eq 12 ] ;then nt=124 elif [ ${mon} -eq 4 ] || [ ${mon} -eq 6 ] || [ ${mon} -eq 9 ] || [ ${mon} -eq 11 ] ;then nt=120 else if [ $((year%4)) -eq 0 -a $((year%100)) -ne 0 -o $((year%400)) -eq 0 ] ;then nt=116 else nt=112 fi fi ・・・ mon=$((mon+1)) done
less file | awk 'BEGIN{FS=","} 5100==$3 && 0<$31 {print $2, $31}',区切りで読んだfileの3列目が5100かつ31列目が0より大きい行の
BEGIN{FS=","} # ,で列を区切って読む 5100==$3 # 3列目が5100のとき A && B # AかつB {print $2, $31} # 2列目と31列目を表示
ls 20100403_hoge.txt | awk -F_ '{print $1}' # 最初の_までの文字列を抽出→画面出力: 20100403
awk -F'[^0-9]+' hoge.txt # 数字以外の文字を無視して数字のみが抽出される
awk ' { name=value print name } '
ls -l *.txt | awk '{print $6, $7, $NF}' | sort
以上 >= 以下 <= 等しい == 等しくない != かつ && または ||
NF(ARGC) : 欄の数 $NF : 最後の欄 NR : 行番号 $0 : 1行全部
string_filename=${file##*/}
string_filename_without_extension=${string_filename%.*}
? | 何か1文字 |
* | 0文字以上の文字列 |
[文字列] | 文字列のいずれか1文字 |
[!文字列] | 文字列に含まないいずれか1文字 |
{候補1,候補2,…} | 候補いずれかに当てはまる文字列 |
190101 190102 190103 ・・・ 200012ls ????0[678]
190106 190107 190108 190206 190207 190208 ・・・200008
; | 連続実行 |
& | バックグラウンド実行 |
&& | 命令1が正常終了した場合、命令2を実行する |
|| | 命令1が正常終了しなかった場合、命令2を実行する |
f77 hoge.f ; ./a.outコンパイルと実行を一度にできる。↑キーで一度に呼び出せるので便利
script.sh arg1 arg2 arg3 ...
$0 | script.shという文字列 |
$1 | arg1という文字列 |
... | ... |
$# | 引数の数 |
$$ | 実行したプロセスID |
#!/bin/bash case $# in 2) ;; *) echo "error: please input "hoge.sh infile outfile"" exit ;; esac
aa=$(コマンド)
aa=`コマンド`
aa=$(ls)
echo $aa
ls
num++ | 足す1 |
num-- | 引く1 |
num1 + num2 | num1 足す num2 |
num1 - num2 | num1 引く num2 |
num1 * num2 | num1 掛ける num2 |
num1 / num2 | num1 割る num2 |
num1 % num2 | num1 割る num2 の余り |
num1 ** num2 | num1 の num2 乗 |
aa=1 let aa++ echo $aa
test 条件式 あるいは
[ 条件式 ]
num1 -lt num2 | num1 が num2 より小さい |
num1 -le num2 | num1 が num2 以下 |
num1 -gt num2 | num1 が num2 より大きい |
num1 -ge num2 | num1 が num2 以上 |
num1 -eq num2 | num1 と num2 が等しい |
num1 -ne num2 | num1 と num2 が等しくない |
str1 = str2 | str1 と str2 が同一のとき |
str1 != str2 | str1 と str2 が同一でないとき |
str | str が1文字以上存在するとき |
-n str | 〃 |
-z str | str が0文字(null)のとき |
-d file | file がディレクトリのとき |
-e file | file が存在するとき |
-f file | file が存在するとき(普通のファイル) |
-r file | file が存在し読み取り可能のとき |
-w file | file が存在し書き込み可能のとき |
-x file | file が存在し実行可能のとき |
-s file | file が存在し0サイズより大きいとき |
|expr1 -a expr2 |expr1 かつ expr2| |expr1 -o expr2 |expr1 または expr2| |!expr |expr でないとき|
if [ ! -d ./hoge ] ;then mkdir -p ./hoge fi
かつ | && |
または | || |
if [ 条件A ] && [ 条件B ] ;then
if [ 条件A ] || [ 条件B ] ;then
| 出力を受け渡す(パイプ) > 表示する代わりにファイルに書き込み(出力のリダイレクション) >> 前の内容を削除せず末尾に追加(追加のリダイレクション) < (入力のリダイレクション) << 文字列が出るまで(ヒアドキュメント)
ls -Al | less
man wget > wget.txt
cat>hoge.gs<<EOF ・・・ EOF
alias g="grads -l"と書いて(source .bashrcで設定を有効にする)おけば、gと打っただけでgradsが起動。同様に
alias マシン名="ssh -X アカウント名@IPアドレス"などなど
DISPLAY Xサーバが実際に描画するサーバ名 GROUP 自分の属するグループ名 HOME ホームディレクトリ LANG 使用言語の指定 LD_LIBRARY_PATH ランタイムライブラリを検索するパス名 LIBRARY_PATH ライブラリのパス名 MANPATH オンラインマニュアルのパス名 PATH プログラムの置いてあるディレクトリ名を設定 PWD カレントディレクトリ名 REMOTEHOST 現在のホストにログインする前にいたホスト名 SHELL 現在使用しているシェル TERM 端末 (ターミナル) の名称 TMOUT タイムアウト TZ タイムゾーン USER 自分のログインネーム printenv 環境変数の一覧表示
env
printenv
/bin/ Linux の最も基本なコマンド cp ls pwd vi 他 /sbin/ 管理用に最低限必要なコマンド ifconfig shutdown 他 /usr/bin/ 一般的なユーザコマンド awk du emacs find gedit less man perl ssh top wget 他 /usr/sbin/ デーモン系管理用コマンド、/sbin から溢れたコマンド adduser samba userdel 他 /usr/X11R6/bin/ X Window Systemに関係しているコマンド、GUI関係のコマンド convert display gv startx xeyes xload 他 /usr/local/bin/ ソースファイルなどからインストールしたコマンド gradsnc ほか /usr/local/sbin ソースファイルなどからインストールした管理コマンド
ls -laR | grep -c '^-' (ファイル数の表示)
ls -laR | grep -c '^-' ファイルの数が表示される
echo $a 変数aに代入されている文字を表示
echo -n $a ; echo $b 変数aと変数bを改行せずに表示
printf "abc" ; printf "xyz" 文字abcと文字xyzを改行せずに表示
ps -xl 現在のアカウントで実行しているプロセスの表示 PID:プロセス番号 STAT:プロセス状態 (R 実行中 S 休眠中 D 割り込み不可能な休眠中 T 停止 Z ゾンビプロセス) kill プロセス番号 プロセスをkillする kill -KILL プロセス番号 プロセスがkillできなかったとき、強制的にkillする それでもkillできなければrebootする
top 数秒おきにメモリ消費量、スワップ消費量、各プロセスID、メモリ消費量などを表示qで終了
top -U who アカウント名whoのプロセスのみ表示
dmesg
・・・ usb-storage: scsi cmd done, result=0x0 usb-storage: *** thread sleeping. sda1 ・・・ など適当なディレクトリを作っておいて(例:/data2)
mount -t vfat /dev/sda1 /data2
chmod (option) [a+w] [file name] 相対方式
chmod (option) [644] [file name] 絶対方式
chown kamae:users [file name] fileをユーザkamae、グループusersの所有に変更
chown -R kamae:users [directory name] directory全体を変更
convert aaa.eps aaa.png ファイル形式の変換 対応:EPS、TIFF、JPEG、GIF、PNG、EPS、PDF convert -density 100 aaa.eps bbb.eps 解像度の変更(値が大きいほど高画質) convert -resize 600x400 aaa.eps bbb.eps サイズの変更 convert -rotate 90 aaa.eps bbb.eps 回転 convert hoge_a.jpg hoge_b.jpg ・・・ hoge.pdf 複数画像を一つのPDFに結合 convert +append hoge_a.jpg hoge_b.jpg ・・・ hoge.jpg 複数画像を横並びの一つの画像に結合 convert hoge_a.gif hoge_b.gif ・・・ hoge.gif GIFアニメの作成 convert -loop 0 -delay 100 hoge_a.gif hoge_b.gif ・・・ hoge.gif 無限にループ、コマ送り1秒 convert +antialias hoge.eps hoge.png アンチエイリアスなしでepsを変換
print hoge.eps !convert -rotate 90 -density 600 -resize 600 +antialias hoge.eps hoge.png
montage -geometry 400x300+0+0 -tile 4x3 pr*.png hoge.png
date 時刻を表示 su ntpdate eric.nc.u-tokyo.ac.jp ネットワークを介して時計を修正
nkf -g infile
nkf -w -Lu infile > outfile
#!/bin/bash # # convert windows 'mozibake' ascii file # to linux UTF-8 ascii file # Y.Kamae 09/10/09 # input_dir='./JMA-CDROM/Japan_DailyData' output_dir='./Japan_DailyData' mkdir -p ${output_dir} list=`ls ${input_dir}` echo '## input directory=' ${input_dir} echo '## output directory=' ${output_dir} echo '## file list=' ${list} echo '## start convert ##' for file in ${list} ;do nkf -w -Lu ${input_dir}/${file} > ${output_dir}/${file} echo '## convert' ${file} 'to UTF-8 ascii' done echo '## end convert ##' rmdir --ignore-fail-on-non-empty ${output_dir}
cp index.html index2.html #バックアップをとっておく nkf -s --overwrite index.html #Shift-JISコードのファイルに変更
od –t u1 filename
od –t d1 filename
od –t d2 filename
od –t f4 filename
od –t f8 filename
ln -s /work/name ./work
for file in ... ;do mkdir -p link ln -s dir/${file} link/ done #file
model=hoge var=hogehoge vv=?? for n in ? ?? ???? ;do case ${n} in ???) nin=?? ; nout=???? ;; esac ln -s -f ../../${model}/${nin}/${vv}.bin ${nout}${var}.bin echo "ln -s -f ../../${model}/${nin}/${vv}.bin ${nout}${var}.bin" n=$((n+1)) done #n
wget http://www.../file
wget ftp://.../file
再帰的 -r ../data/にファイルを置く -P../data/ 親ディレクトリーを参照しない -np 取得済みのファイルと同じか古いファイルは取得しない -N ローカル側のhost名を外す -nH passiveモードでダウンロード --passive-ftp アカウントとパスワードを使ってダウンロード --user=hoge --password=hogehoge ローカルに反映させない階層構造の数 --cut-dirs=4
wget --user=anonymous --password=hogehoge(E-mailアドレス) ftp://dss.ucar.edu/datasets/ds260.3/data/nocs_v2_2...
shutdown -r now ただちにシステムを再起動
shutdown -h now ただちにシステムを停止し、電源を切る
dmesg | less (デバイスを確認, 例えば/dev/sdc1 など) su - (suに変身) mkfs -t ext3 /dev/sdc1 (sdc1をext3でフォーマット)
mkfs -t reiserfs /dev/sdc1 (sdc1をreiserfsでフォーマット)
df -h
Filesystem サイズ 使用 残り 使用% マウント位置 ・・・ /dev/sdc1 1.9T 1K 1.9T 1% /media/disk
df -h (マウントされた場所を確認)
… /dev/sdc1 /data2 reiserfs … #/dev/sdd1 /data3 reiserfs … (コメントアウトすると起動時に自動マウントされない) …
alias ja='export LANG=ja_JP.UTF-8; export LANGUAGE=ja_JP.UTF-8; export LC_ALL=ja_JP.UTF-8'
alias en='export LANG=en; export LANGUAGE=en; export LC_ALL=en'
cat /proc/cpuinfo
ホスト名 linux01 IPアドレス 111.222.333.44 サブネットマスク 255.255.255.0 ゲートウェイ 111.222.333.1 ドメインネームサーバ 130.222.333.1、130.222.333.2 の場合
DHCPやらSSHやら
Statically assigned IP Address IPアドレス 192.168.5.3 サブネットマスク 255.255.255.0 Hostname linux01.linux01
ホスト名、ドメイン名 linux01 ホスト名を/etc/hostsに書きこむ ネームサーバ1 130.222.333.1 ネームサーバ1 130.222.333.2
デフォルトゲートウェイ 111.222.333.1
アドレス 111.222.333.44 サブネットマスク 255.255.255.0 デフォルトゲートウェイ 111.222.333.1
ホスト名 linux01 1番目のDNS 130.222.333.1 2番目のDNS 130.222.333.2
アドレス ::1 ホスト名 linux01 エイリアス localhost6
su
chmod 744 実行ファイル
./実行ファイル
tar pukiwiki-1.4.7_notb.tar.gz
chmod 755 .
chmod 777 attach backup cache counter diff wiki
chmod 755 image image/face lib plugin skin
chmod 666 cache/*.dat cache/*.ref cache/*.rel wiki/*.txt
chmod 644 *.php */index.html */.htaccess image/*.png image/face/*.png lib/*.php plugin/*.php skin/*.php
chmod 604 .ht*
$modifier
$modidierlink
$defaultpage $whatsnew $whatsdeleted $interwiki $menubar
echo -n 'hogehoge' | md5sumで調べたパスワード(hogehoge)のmd5サムを記入
$adminpass = '{x-php-md5}XXXXX';
echo -n 'hegohego' | md5sum
$auth_users = array( 'hoge' => '{x-php-md5}XXXXX', ); $read_auth = 1; $read_auth_pages = array( '##' => 'hoge', );
http://・・・/wiki/index.php
plugin/attach.ini.php
ini_set("upload_max_filesize","XXXXXM"); define('PLUGIN_ATTACH_MAX_FILESIZE', (XXXXX * 1024)); // default: 1MB