目次 |
netstat
-n:ポート番号やアドレスを数値形式で表示, -a:LISTENとnon-LISTENの双方を表示, -l:LISTENのみ表示, -p:PID/プロセス名を表示, -t:TCPを表示, -u:UDPを表示
sockstat
bwm-ng
nmap -sP [192.168.1.0/24] arp-scan -I [adapter] -l [192.168.1.0/24] netdiscover -r [192.168.1.0/24] arp -a
arp-scanでは -I eth0
スイッチを指定してネットワークアダプタを限定することもできる。arp -a は到達済み(キャッシュされた)マシンのみ表示
nmap -A [対象マシンのIPアドレス]
nmap -sV -F [対象マシンのIPアドレス]
-sV スイッチで詳細表示, -F スイッチで代表的なポート限定
arping -I eth0 [対象マシンのIPアドレス]
smbstatus
-d=[LEVEL : 1〜10] conf反映状況なども表示
smbtree
testparm
ssh -C -i /path/to/id_rsa user@example.com
id_rsaは秘密鍵ファイル。 -C オプションで通信を圧縮処理する
tcpdump -i eth1
ssh -x root@example.com tcpdump -i eth0 -s 0 -U -w - | wireshark -k -i -
openssl s_client -connect example.com:[443|465|993|995] [-showcerts] [-CAfile /etc/ssl/certs/ca-certificates.crt] openssl s_client -connect example.com:443 [-showcerts] | openssl x509 -text
openssl x509 -text -noout -in ~/path/to/localcert.pem
ffmpeg -loop_input -shortest -i ダミー画像.jpg -i 音楽.wav -acodec libmp3lame -ab 256k -ac 2 -ar 44100 -vcodec mjpeg -r 0.1 -f avi output.avi
-loop_input -shortest
オプションはこの位置、この順番で記述すること。-acodec ac3
とすればAC3に変換され、元のデータをコピーする場合には-acodec copy
とする(この場合はオーディオビットレート指定の-ab
や-ar
などは不要)。ビデオ形式を指定する場合は-vcodec
に続けてmpeg4やflv,libxvidなどを指定する。ビデオのフレームレートは-r
で指定できる。例のように0.1とすれば10秒に1回のレートになる(動画サイズが小さくなる)。
mencoder -ovc lavc -lavcopts vcodec=mpeg4 -mf w=640:h=320:fps=1:type=jpg 'mf://./*.jpg' -oac copy -nosound -o output.avi
画像を切り替える速度はfps=nでコントロールできる。1未満の数を指定することもでき、fps=0.5とすれば2秒に1枚の速度で切り替わる。
ffmpeg -i https://www.example.com/movie/index.m3u8 -c copy -bsf:a aac_adtstoasc ./download.mp4
-bsf:a aac_adtstoasc
は MPEG-2/4 AAC ADTS から MPEG-4 Audio にコンバートするビットストリームフィルター(-bsf)設定。-c copy
は再エンコードせずにそのままコピーの設定。
画像ファイルが1個のとき
convert -thumbnail 150x150 -sharpen 0x0.8 -quality 85 ./photo/1.jpg ./pics/1.jpg
複数の画像ファイルを一括コンバートするとき(画像のあるディレクトリで実行する)
find * -prune -name '*.jpg' -exec convert -thumbnail 150x150 -sharpen 0x0.8 -quality 85 '{}' ../pics/'{}' \;
複数の画像ファイルを一括コンバートするとき(その他のディレクトリで実行する)
find ./photo/* -prune -name '*.jpg' -exec sh -c 'convert -thumbnail 150x150 -sharpen 0x0.8 -quality 85 {} ./pics/$(basename {})' \;
convert input.tiff output%03d.jpg
取り出す解像度は[1〜6]で指定。[5]=16Base:3072x2048, [6]=64Base:4096x6144
convert -colorspace RGB IMG0001.PCD[5] output.jpg
複数の画像を連続変換する(16Base画像を対象)
find /media/cdrom/IMAGES/* -name '*.PCD' -exec sh -c 'convert -colorspace RGB {}[5] ./jpeg/$(basename {} .PCD).jpg' \;
png画像をjpeg画像に変換
find ./ -name '*.png' -exec sh -c 'convert {} $(basename {} .png).jpg' \;
ppm画像をjpeg画像に変換(同時にコントラストを上げる)
for i in *.ppm; do convert $i -quality 90 -contrast-stretch 0.15x0.05% `basename ${i%.*}.jpg`; done;
1920*1080画像の左右150pxずつを切り落とす場合(-crop 幅x高さ+開始X座標+開始Y座標)
convert input.jpg -crop 1620x1080+150+0 output.jpg
画像の左右150pxずつを切り落とす場合(-shave 幅x高さ)
convert input.jpg -shave 150x0 output.jpg
画像中央の800px*600pxを抜き出す場合
convert input.jpg -gravity center -crop 800x600+0+0 output.jpg
画像右下の800px*600pxを抜き出す場合
convert input.jpg -gravity southeast -crop 800x600+0+0 output.jpg
jpegtran -rot 90 -copy all input.jpg > output.jpg
右90度回転の時は-rot 90
、左90度回転の時は-rot 270
とする。Exifを(メーカーノートを含めて)全てコピーする時には<copy>-copy all</copy>を指定する。入力ファイルと出力ファイルは同一ファイル名を指定する事はできない。1行のスクリプトで同一ファイル名を指定したい場合は次のようにする
cp input.jpg /tmp/jpegtran.tmp.jpg && jpegtran -rot 90 /tmp/jpegtran.tmp.jpg > input.jpg
全てのExifタグの表示
exif [ファイル名]
日本語表示で画面上の桁がずれる場合はLANG=C;exif [ファイル名]
とする。また、CSV形式にするにはexif -m [ファイル名]
とする。
exiftoolを用い全てのExifタグを表示する(-s, -S スイッチでタグ名の出力方法を変えられる)
exiftool [-s|-s -s|-s -s -s|-S] -G [ファイル名]
特定のExifタグを表示する
exiftool [-s|-s -s|-s -s -s] -タグ名 [ファイル名]
上の例で -s -s -s ではなく、awkを使って同様の出力を行う方法(区切り文字を : とし、前後スペースを含めて削除)
exiftool -S -タグ名 [ファイル名] | awk -F " *[:] *" '{print $2}'
jhead -ft [ファイル名] exiftool -overwrite_original "-FileModifyDate<Exif:CreateDate" [ファイル名|ディレクトリ名]
指定日時以降のタイムスタンプのファイルをExifの日時に変更する
touch -t YYMMDDhhmm ~/start.tmp find *.jpg -newer ~/start.tmp -exec jhead -ft {} \;
新規設定する
jhead -ts2001:05:25-20:16:59 [ファイル名]
時間をずらす(カメラの時差設定が間違っていた場合など。例は時刻を8時間戻す場合)
jhead -ta-8:00 [ファイル名]
ModifyDate, DateTimeOriginal, CreateDate等に任意の日時を設定する
exiftool -overwrite_original -ModifyDate="2001:05:25 20:16:59" [ファイル名]
フォルダ内全てのjpegに対し、Modify DateにCreate Dateの日時をコピーする
for i in ./*.jpg; do exiftool -overwrite_original -ModifyDate="`exiftool -S -CreateDate $i | sed -e "s/CreateDate: //m"`" $i; done; exiftool -overwrite_original "-Exif:ModifyDate<Exif:CreateDate" [ファイル名|ディレクトリ名]
メーカー名、カメラモデル、ソフトウエア名など任意の文字列に書き換える
exiftool -overwrite_original -Make="任意の文字列" [ファイル名] exiftool -overwrite_original -Model="任意の文字列" [ファイル名] exiftool -overwrite_original -Software="任意の文字列" [ファイル名]
Exifタグが特定の文字列に一致する場合、指定するタグを書き換える(この例は、Gimpで書き換えられてしまったSoftwareタグをリストアしている)
exiftool -if '$Exif:Make =~ /PENTAX/i and $Exif:Software =~ /Gimp/i' -overwrite_original -Exif:Software="K-x Ver 1.03" ./
jhead -mkexif [ファイル名]
jhead -de [ファイル名] ---- Exifヘッダを削除する jhead -purejpg [ファイル名] ---- Exifヘッダ他jpeg画像データ以外を全消去
pdfinfo [pdfファイル名] pdffonts [pdfファイル名]
画像の抽出
pdfimages -f [開始ページ] -l [終了ページ] [input.pdf] [output ベースファイル名]
結合
pdftk [input1.pdf] [input2.pdf] cat output [output.pdf]
一部ページの抽出
pdftk [input.pdf] cat 1-10 output [output.pdf] pdftk [input.pdf] cat 1-10 20-end [output.pdf]
奇数ページ (odd)、偶数ページ (even) の抽出
pdftk [input.pdf] cat 1-endodd output [output.pdf]
ページ抽出と結合(Handleを用いる)Aの1~10ページとBの20~最終ページを抽出して結合
pdftk A=[input1.pdf] B=[input2.pdf] cat A1-10 B20-end output [output.pdf]
奇数・偶数ページが逆になったpdfファイルの奇数・偶数を入れ替える(1,2,3,4,5... → 2,1,4,3,6...)
pdftk [input.pdf] cat 1-endodd output [output_odd.pdf] pdftk [input.pdf] cat 1-endeven output [output_even.pdf] pdftk A=[output_odd.pdf] B=[output_even.pdf] shuffle A B output [output.pdf]
回転 (右回転:right、左回転:left、180度回転:down)
pdftk [input.pdf] cat 1-endright output [output.pdf]
pdfファイルを左右に2分割して別々に保存
mutool poster -y 2 [input.pdf] [output.pdf]
find ./src/ -name '*.jpg' -exec sh -c 'convert "{}" "./dst/`basename {} .jpg`.pdf"' \;
それぞれのページをpdfに変換し、pdftkで各ページのpdfファイルを結合する
for i in *.jpg; do convert $i `basename ${i%.*}.pdf`; done; pdftk *.pdf cat output ../output.pdf
convertコマンドのみでも変換できるが、遅い
convert *.jpg ../output.pdf
pdftk [input.pdf] output [output.pdf] owner_pw OWN_PASSWORD user_pw USR_PASSWORD
パスワードを解除して保存する
pdftk [input.pdf] input_pw password output [output.pdf]
指定ディレクトリのPDFファイルを一括してパスワードを付与する
find ./src/ -name '*.pdf' -exec sh -c 'pdftk "{}" output "./dst/`basename {} .pdf`_enc.pdf" user_pw MY_PASSWORD' \;
exiftool -Title="ファイルのタイトル" -Subject="サブタイトル" -Author="著作者名" -Keywords="キーワード" -Producer="作成ソフト" -CreateDate="2016:01:01 18:00:00" -ModifyDate="2016:01:01 18:00:00" [target.pdf]
pdftk in.pdf dump_data_utf8 output metadata_utf8.txt pdftk in.pdf dump_data output metadata.txt
pdftk in.pdf update_info_utf8 metadata_utf8.txt output out.pdf pdftk in.pdf update_info metadata.txt output out.pdf
※メタデータファイルに不必要なバイナリデータがダンプされている場合は、それを削除してリストアする。メタデータの構成は次のようになっている
InfoBegin InfoKey: ModDate InfoValue: D:20190518125051+09'00' InfoBegin InfoKey: CreationDate InfoValue: D:20190509231651 InfoBegin InfoKey: Author InfoValue: ◯◯出版、著作者名◯◯ InfoBegin InfoKey: Title InfoValue: 本のタイトル InfoBegin NumberOfPages: 289 BookmarkBegin BookmarkTitle: 目次 BookmarkLevel: 1 BookmarkPageNumber: 2 BookmarkBegin BookmarkTitle: 第1章 BookmarkLevel: 1 BookmarkPageNumber: 4 BookmarkBegin BookmarkTitle: 第1節 BookmarkLevel: 1 BookmarkPageNumber: 5 〜 以下省略 〜
公式マニュアル How to use Ghostscript, Details of Ghostscript output devices
gs -sDEVICE=jpeg -r200 -dNOPAUSE -dBATCH -sOutputFile=out.jpg in.pdf
-sDEVICE=
に出力ファイルの種類を設定する。( jpeg / png16m / pnggray / tiff24nc / tiffgray / tiffg3 ... )
-r
に解像度(dpi)を設定する。指定しない場合は72dpiが使われる。( -r200 / r200x100 )
-dTextAlphaBits=n
と -dGraphicsAlphaBits=n
スイッチでアンチエイリアスを設定できる。n=4を代入すると最適値となる(とマニュアルには書かれている)
-dNOPAUSE -dBATCH
は処理実行後すぐにプログラムを終了するスイッチ
-dSAFER
はファイル消去や改名コマンドを無効化するスイッチ
複数ページのpdfまたはpsを画像に変換する場合は、%d識別子を使って
gs -sDEVICE=jpeg -r200 -dNOPAUSE -dBATCH -sOutputFile=out_%03d.jpg in.pdf
FAX送信用のtiff画像を作成する場合は(efax.rcの標準設定内容)
gs -sDEVICE=tiffg3 -r204x196 -dNOPAUSE -dSAFER -dMaxStripSize=0 -sOutputFile=out.tif in.pdf
オプションスイッチの概要:
-a : -r (--recursive) -l (--links) -p (--perms) -t (--times) -g (--group) -o (--owner) -D の同時設定と同じ -v : 詳細表示(転送中のファイル名をリアルタイムに表示) -n : プレビューのみ (--dry-run) -z : 通信を圧縮する --delete : コピー元で削除済みのファイルは、コピー先でも削除する --existing : コピー先に存在しないファイルは対象外(新規にファイル作成しない) --link-dest=[dir] : dirに同一ファイルが存在すれば、コピーせずにハードリンクを作成 --exclude='[pattern]' : patternを除外(複数指定の例 --exclude='.Trash*/' --exclude='*.bak') --modify-window=[second] : second秒以内は同じタイムスタンプとする(FATの場合1とすれば1秒以内は同一時刻と強制認識させられる) --stats : 完了後に転送したファイル集計を表示する
コピー元のディレクトリ末端に / を付けないと、そのディレクトリ自身もコピーされる。
rsync -avn /path/from/ /path/to/
rsync -av /path/from/ /path/to/
rsync -avz /path/from/ /path/to/
rsync -av user@example.com:/path/from/ /path/to/
rsync -av -e "ssh -i /path/to/id_rsa" user@example.com:/path/from/ /path/to/
rsync -av --link-dest=/path/to_previous/ /path/from/ /path/to/
rename 's/^/文字列/' *.jpg rename 's/.jpg$/文字列.jpg/' *.jpg
変換したいファイルのあるディレクトリに移動して、次のスクリプトを実行 (*.JPGが対象の場合の例)
for i in [A-Z]* ; do [ -f $i ] && mv -i $i `echo $i | tr '[A-Z]' '[a-z]'`; done;
または
rename 'y/A-Z/a-z/' *
ファイル名の特定文字列を置換
rename 's/置換前/置換後/' *
find ./dir/ -name "* *" | rename 's/ /_/g' find ./dir/ -name "* *" | rename 's/ /_/g'
touch temp{1..10}.tmp
または...
for ((i=0;i<10;i++)); do echo -n > temp$i.tmp; done
例:abc.txt, cdf.jpg -> 0001.txt, 0002.jpg
#!/bin/sh # http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?TIPS%2FLinux%2F019 をかなり参考にした。 # 関数:get_sernumstr 番号 桁数 get_sernumstr() { tmpstr="$1" while [ ${#tmpstr} -lt $2 ] do tmpstr="0"$tmpstr done echo $tmpstr } if [ $# -ne 1 ] then echo "usage : renfile.sh basename\n\n" echo " example renfile.sh test -> test0001.jpg\n example renfile.sh null -> 0001.jpg\n" exit fi if [ "$1" = "null" ] then TMP_BASE_NAME="" else TMP_BASE_NAME=$1 fi # ファイル名の末尾は1からの連番とする。 NUM=1 # 数値は4桁。 LEN=4 for SRC in `find -maxdepth 1 -name "*" -type f | sort -n`; do SERNO=`get_sernumstr $NUM $LEN` DST="${TMP_BASE_NAME}${SERNO}.${SRC##*.}" echo $SRC $DST mv -i $SRC $DST NUM=`expr $NUM + 1` done
例:0001.jpg -> 004.jpg, 0002.jpg -> 003.jpg, 0003.jpg -> 002.jpg, 0004.jpg -> 001.jpg
ls *.jpg | sort -t - -k 2 -n --reverse | awk '{ printf "mv %s %03d.jpg\n", $0, NR }' | sh
STR=/tmp/test.txt; echo `basename ${STR%.*}`
STR=/tmp/test.txt; echo ${STR##*.}
STR=/tmp/test.txt; echo `basename ${STR}` STR=/tmp/test.txt; echo ${STR##*/}
STR=/tmp/test.txt; echo ${STR%.*}
find -name '*[^.jpg$]' -print
(あらかじめdataというディレクトリにファイルを格納しておく)
convmv --r --notest -f utf8 -t cp932 ./data zip -r data.zip ./data
find /path/to/dir/ -name '*' -print -exec touch {} \;
指定した日時に変更する場合は
find /path/to/dir/ -name '*' -print -exec touch -t YYYYMMDDhhmm.ss {} \;
指定したファイルの日時に、他の全てのファイルを合わせる場合
find /path/to/dir/ -name '*' -print -exec touch --reference=Filename {} \;
ls -t | head -n 1
find ./ -name '*.jpg' -print -exec sh -c 'touch -r ../ref/$(basename {}) {}' \;
find ./ -name '*.jpg' -print -exec touch -r {} -d '-9 hour' {} \;
readom dev=/dev/sr0 f=./imagefile.iso
mount -o loop,iocharset=utf8 -t iso9660 ./imagefile.iso ./cdrom
fuseiso -p ./imagefile.iso ./cdrom
マウントを解除するときは、fuseisoプロセスをkillする。"-p"オプションはマウントdirを自動作成。 GUI版はFurius ISO Mount
CD/DVDドライブをイジェクトする
eject [/dev/sr0]
CD/DVDドライブのトレイを閉める
eject -t [/dev/sr0]
デフォルトの操作対象のCD/DVDドライブのデバイス名を得る
eject -n
DVD±RWのメディア情報を表示する
dvd+rw-mediainfo /dev/sr0
CD±RWドライブの情報を得る(マウントされている場合は umount /dev/cdrom
してから)
cdrecord -checkdrive
DVD±RWを強制フォーマットする
dvd+rw-format /dev/sr0 -force
DVD±RWにisoファイルを書き込む
growisofs [-speed=2] [-dvd-compat] -Z /dev/sr0=filename.iso
CD±RWを強制フォーマットする(マウントされている場合は umount /dev/cdrom
してから)
cdrecord [-v] [dev=/dev/sr0] blank=fast
CD±RWにisoファイルを書き込む(マウントされている場合は umount /dev/cdrom
してから)
cdrecord [-v] [-eject] [driveropts=burnfree] [dev=/dev/sr0] filename.iso
cat /proc/sys/dev/cdrom/info