#---- #!/bin/sh # この間にスクリプトを書く exit; #---- # シンボリックの場合、その先のパスを取得 V_RL=`readlink -f ${0%}`; # 「/」までの現在のディレクトリを取得 V_CD=${V_RL%/*}; #もしくは V_CD=`pwd`; # 「/」以降を取得し、現在のスクリプト名を取得 V_SN=${0##*/}; # ユーザ名を取得 V_USR=`id -u -n`; #---- # ディレクトリの作成 mkdir -p /tmp/$$/; # ディレクトリの削除 rm -r -f /tmp/$$/; #---- # 最後に&を付けてバックグラウンドで起動 gedit & #ジョブの確認 jobs # フォアグラに移動は%ジョブ番号 fg %1 # バックグラウンドに移動は%ジョブ番号 bg %1 #---- #出力 echo "${HOME}"; printf "%s\n" ${HOME}; cat /tmp/$$/f.txt; # !の出力 V_C='!'; printf "%c" ${V_C}; # ファイルやディレクトリのコピー # -r 再帰的にコピー # -f 同名のファイルは上書き # -u タイムスタンプが同じか新しいときにはコピーをしない cp -r -f -u /tmp/$$/directory0/ /tmp/$$/directory1/; # 置き換え # gは複数マッチした場合、全部置き換え # iは大文字小文字を区別しない sed -e "s/text0/text1/gi" /tmp/$$/0 > /tmp/$$/1; # \(から\)までの間を「\数字」で後方参照 echo "0123456789" | sed -e "s/\([2-7]\{1,16\}\)/_\1_/g"; # 一致した行を抜き出す grep -i "text" /tmp/$$/0 > /tmp/$$/1; # dの区切りで-f番目のフィールを抜き出す cut -d' ' -f3-3 /tmp/$$/0 > /tmp/$$/1; # ファイルを行毎に\tで区切って連結する paste -d'\t' /tmp/$$/0 /tmp/$$/1 > /tmp/$$/2; # ファイルの種類を出力 file /tmp/$$/0; # a-zを大文字に変換 tr 'a-z' 'A-Z' < /tmp/$$/0 > /tmp/$$/1; # 連続した改行を纏める tr -s '\n' < /tmp/$$/0 > /tmp/$$/1; # 改行を取り除く tr -d '\n' < /tmp/$$/0 > /tmp/$$/1; # 差分を出力 diff -u /tmp/$$/0 /tmp/$$/1 > /tmp/$$/2; #---- # グループを追加 groupadd name-group; # ユーザー追加。-mはホームディレクトリを作成 useradd -d /home/name-user/ -m -G name-group name-user; # ユーザーとグループを変更 chown -R name-user /tmp/$$/; chgrp -R name-group /tmp/$$/; # パーミッションを変更 # chmod -R の後は所有者、グループ、他人の3桁の数字 # 読み込み許可は4、書き込み許可は2 、実行許可 は1、を足した数字で不許可だと0 chmod -R 750 /tmp/$$/; # ユーザーを削除。-rはホームディレクトリを削除 userdel -r name-user; # グループを削除 groupdel name-group; #---- # シンボリックリンクを作成 ln -s /tmp/$$/f.txt /tmp/$$/ln/; # シンボリックリンクを削除 unlink /tmp/$$/ln/f.txt; #---- # 日時を取得 V_D=`date +"%Y-%m-%d_%H-%M-%S"`; #---- # タスクを表示 # -n は繰り返す最大数 top -n 16; #---- # $# -eq 1 / 等しい場合then # $# -ne 1 / 等しくない場合then # $# -lt 1 / $# < 1 でthen # $# -gt 1 / $# > 1でthen # $# -le 1 / $# <= 1 でthen # $# -ge 1 / $# >= 1でthen # -d directory / ディレクトリが存在したらthen # -e file / ファイルが存在したらthen # -s file / ファイルサイズが1以上でthen if [ $# -eq 0 ]; then echo "then"; elif [ $# -eq 1 ]; then echo "elif"; else echo "else"; fi; #---- # 引数の数 $# # 引数全て $@ #---- # 関数 Func(){ echo "$1"; return 0; }; Func "f"; #---- # 引数を順次処理 for V_A in $@ do echo "${V_A}"; done; #---- #現在のディレクトリ以下のリストを表示 tree #---- # 検索 # -empty 空のファイルを探す # -mmin +1 更新されて○分経過したファイル # -mtime +1 更新されて○日経過したファイル # -atime +1 アクセスされて○日経過したファイル # -ctime +1 ステータスが変更されて○日経過したファイル # -type f ファイルを探す # -type d ディレクトリを探す # -name "*" 探すファイル名 # -iname "*" ファイル名を大文字小文字を区別しないで探す # -print0 | xargs -0 空白を区切りにしない # 複数の名前を探す場合は \( -name "name0" -or -name "name1" \) みたいに\(と\)で囲み、-or を使う find /tmp/$$/ -name "*" -exec echo {} \; for V_A in `find /tmp/$$/ -name "*" -print0 | xargs -0` do echo "${V_A}"; done; #---- # ファイルを区切り毎に処理 for V_A in `cat /tmp/$$/f.txt` do echo "${V_A}"; done; #---- # ○回ループ V_C=0; while [ ${V_C} -lt 8 ]; do echo "${V_C}"; V_C=`expr ${V_C} + 1`; done; #---- # プロセスを終了させる ps -aux | less -e -p ProgramName; # USER PID 〜と表示されるので、そのPIDを使用する kill -9 PID; #---- # システムの情報を出力 uname -a; # ディストリビューション、バージョンの情報 cat /etc/*release; # CPUの情報 cat /proc/cpuinfo; # 32bitか64bitかの確認 getconf LONG_BIT; #---- # ネットワークの情報 ip addr; #---- # 特定のIPアドレスから応答があるか調べる # -w タイムアウト ping -w 8 127.0.0.1; #---- # ドメインの正引き nslookup example.com; #---- # whois whois 127.0.0.1; #---- # DNSサーバにドメイン情報を問い合わせる dig a example.com; #---- # -T タイムアウトまでの秒 # -t リトライ回数 # -nd ディレクトリを作成しない # -P 保存するディレクトリを指定。-Oとは一緒に使わない # -O 保存するファイル名を指定。-Pとは一緒に使わない # -o 保存するログファイル名を指定 # -U User-Agentを指定 # --http-user="user" --http-passwd="password" 認証を使用 # --spider -S スパイダーモード。-Sはレスポンスを表示 wget -T 4 -t 2 -nd -O "/tmp/$$/wget.txt" -o "/tmp/$$/wget.log" -U "" http://localhost/; #---- # ZIP圧縮 zip -r -P pw /tmp/$$/f.zip /tmp/$$/f.txt; #---- # SSH ssh user@domain -p 22; #---- # ディレクトリ、ファイル、URL等のデータを開く xdg-open /; #---- # $1進法を$2進法に変換。$3が変換対象 Func(){ V_O=`echo "ibase=$1; obase=$2; $3" | bc`; printf "%08d\n" ${V_O}; return 0; }; Func "10" "2" "128"; #---- # 起動時にスクリプト等を実行するには「/etc/rc.local」に書き込む sh /tmp/run.sh; #---- # パーティション、UUIDを確認 blkid; # または fdisk -l; ls -l /dev/disk/by-uuid; # マウント mount -t ext4 -o uid=1000,gid=1000 /dev/sda1 /mnt/dir; # アンマウント umount /dev/sda1; # 起動時にマウントするするように /etc/fstab に書き込む # UUID=uuid # マウントポイント # ファイルシステム(ext4、ntfs、等) UUID=uuid /mnt/directory ext4 uid=1000,gid=1000 #---- # ファイルシステムの修復 fsck -y /dev/sda1; # blkid等で調べたlinux パーティションを指定する #---- # クリップボードを上書き echo "a" | xsel -b -i; xsel -b -o; #---- # VI # カーソルの位置から挿入 i # 1文字削除 x # 一行削除 dd # 次の行を追加 o # 操作の取り消し :u # セーブして続行 :w # 一行コピー :yy # ペースト :p # セーブして終了 :wq # セーブせずに終了 :q! #---- # password 変更 passwd; #---- # bootチェック Func(){ lsof -i:${1} > /tmp/$$-0; if [ -s /tmp/$$-0 ]; then echo "then"; else echo "else"; fi; return 0; } Func "80"; rm -r -f /tmp/$$-*; #---- # 文字コードを変換 # UTF-8に変換 nkf -w -Lu /tmp/$$/0 > /tmp/$$/UTF-8; # Shift_JISに変換 nkf -s -Lw /tmp/$$/0 > /tmp/$$/Shift_JIS; #---- # バットブロックを検索 badblocks -s -o /tmp/$$/bb.txt /dev/sda1; #---- # ハードディスクを完全消去 shred -v /dev/sda1; #---- # FTPを自動化 # fpsで実行する内容をテキストファイルに書く # open ドメイン # user ユーザ パスワード # bin # prompt # lcd /ローカルディレクトリ # cd /サーバーディレクトリ # アップロード # mput * # ダウンロード # mget file # 終了 # bye # ターミナルで実行 ftp -p -n < /tmp/$$/ftp.txt; # ミラーリング # -R 再帰的にアップロード # -n ローカルに存在しないファイルはリモートから削除される # --verbose=1 出力の冗長レベル # set ftp:ssl-allow off; SSLをOFFにする場合には追記する lftp -u (id),(password) -p 21 -e "mirror -R -n --verbose=1 (local_directory) (remote_directory);bye;" (server); #---- # 指定時間に1回のみスクリプトを実行 # 1月 Jan. 2月 Feb. 3月 Mar. 4月 Apr. 5月 May 6月 Jun. # 7月 Jul. 8月 Aug. 9月 Sep. 10月 Oct. 11月 Nov. 12月 Dec. at -f /tmp/$$/s.sh 00:00 Jan 1; # 実行待ちのジョブの確認 at -l; #ジョブの削除 at -d 番号; #---- # ヘッダ ファイルの場所 # /usr/include/ # 自作スクリプト等 /usr/local/bin/ # フォントディレクトリ /usr/local/share/fonts/ #----