LoginSignup
0
1

More than 1 year has passed since last update.

Shellメモ

Last updated at Posted at 2020-04-21

Shell

if文

#!/bin/bash
if [ $1 -eq 0 ]
then
	echo yes
else
	echo no
fi

for文

#FOREACH
for i in $@
do
	echo $i
done

#FOR
for((i =0; i <10; i++))
do
	echo $i
done

while文

while [ "$ans" != "yes" ]
do
read -p "please input yes to exit loop:" ans
done

Array配列

# 初期化
arr=(1 2 3 4 5)
# 出力の結果を配列に格納
arr=(`find . -name fName`) 
# 要素の値を確認
 echo ${arr[2]}
# 要素の値をクリア
 unset arr[1]
# 配列の末尾に要素を追加
 arr[${#arr[@]}]=6
# length
 echo ${#arr[@]}
# 全配列を見る
 echo ${arr[*]}
# sub配列
 echo ${arr[@]:0:3}

head | tail

#上からN行目以前の内容を取得
head +20 notes.log
#下からN行目以前の内容を取得
head -20 notes.log

#監視
tail -f notes.log
#上からN行目以後の内容を取得
tail +20 notes.log
#下からN行目以後の内容を取得
tail -20 notes.log

grep

#検索したい文字を含む行を取得
grep "string" *.txt
#検索したい文字を含まない行を取得
grep -V "string" *.txt
#正規表現を使用
grep -E "string[0-9]" *.txt
#他の使用例
cat file | grep "string"

find

#ファイルやフォルダを検索コマンド
#名前指定でファイルやフォルダ検索
find path -name "*.txt"
find path -name "*.txt" -type f #ファイルのみ検索
find path -name "*.txt" -type d #フォルダのみ検索
#権限指定で検索
find path -perm 777
#ユーザーで検索
find path -user root
#変更時間で検索
find path -mtime -5 #5日以内のもの
find path -mtime +3 #3日以前のもの
#サイズで検索
find path -size +1024k #1M以上のもの
find path -size -1024#1M以下のもの
#検索したものに他の処理を追加
find path -name "*.txt"|xargs rm -rf #削除
find path -name "*.txt"|xargs ls -l #権限を見る

sed

#2行目を表示($は最後行)
sed -n '2'p file
#1行目~4行目を表示
sed -n '1,4'p file
#正規表現使用、losを含む行をを表示
sed -n '/los/'p file
#正規表現使用、4行目からlosを含む行までの内容をを表示
sed -n '4,/los/'p file
#1行2行目を表示しない
sed -n '1,2'd file

awk

#ファイル内の全部列を表示
awk '{print $0}' file.txt
#ファイル内の第1列と第7列を表示
awk '{print $1,$7}' file.txt
#ファイル内の第1列と第7列を表示(「:」で分割した列)
awk -F: '{print $1”\t”$7}' file.txt
#ファイル内の第3行目の第1列を整数に変換して表示(NRは行の意味、NFは列の意味)
awk '{if(NR==3){print int($1)}}' file.txt
#ファイル内の[192.168.100.1]を含む全部列を表示(「!~」は含まない)
cat file | awk '{print $1~/192.168.100.1/{print $0}}' 

rsync

#ローカル
rsync -av コピー元パス コピー先パス
#転送後に転送元のファイルを削除
rsync --remove-source-files -av コピー元パス コピー先パス
#リモート先
rsync -av -e ssh コピーパス ユーザー@ホスト名:コピー先パス

#パスワードなしのrsync使用方法(リモート)
#1 鍵生成
ssh-keygen
#2 公開鍵をリモートに転送
ssh-copy-id -i ~/.ssh/id_rsa.pub ユーザー@ホスト名

参照:https://www.linuxprobe.com/rsync-password-less-through-ssh.html

uniq

#重複内容を排除して表示
uniq file
#重複回数を表示
uniq -c file
#重複行のみ表示
uniq -d file

sort

#昇順
sort file 
#降順
sort -r file 
#「:」で分割、一列目の降順
cat file | sort -t: -k1 -r

less

コマンド 動作内容
読込 r 画面を再描画します。
読込 R 画面を再描画します。(閲覧中に変更があった場合にその内容が反映されます。)
読込 F ファイルの最終行を読み続けます。(「tail -f」コマンドと同様)
移動 SPACE 1画面進めます。
移動 d 半画面進めます。
移動 RETURN 1行進めます。
移動 b 1画面戻ります。
移動 u 半画面戻ります。
移動 y 1行戻ります。
移動 g, < ファイルの先頭に移動します。
移動 G, > ファイルの終端に移動します。
検索 /パターン 「パターン」マッチする前方検索を行います。
検索 ?パターン 「パターン」マッチする後方検索を行います。
検索 n 前回の検索を繰り返します。
検索 N 前回の検索を逆方向へ繰り返します。
ヘルプ h, H ヘルプを表示します。
終了 q, Q, :q, :Q, ZZ 終了します。

権限

#権限を変更
chmod 777 file
#よく使う権限
-rw------- (600)    只有拥有者有读写权限。
-rw-r--r-- (644)    只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700)    只有拥有者有读、写、执行权限。
-rwxr-xr-x (755)    拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711)    拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666)    所有用户都有文件读、写权限。
-rwxrwxrwx (777)    所有用户都有读、写、执行权限。

※参照:https://blog.csdn.net/u013197629/article/details/73608613

その他

#プロセスを調べる
ps -ef | grep ssh
#行数を統計する
xxxx | wc -l
#フォルダコピー(dir2存在しない場合)
cp -r dir1 dir2
#ファイルを5行ごとに分割
split -5 file newfile
#bash内スレッドのPID
echo $BASHPID

#diskの確認
df -h
#メモリの確認
free

並行処理

#!/bin/bash
# bam to bed

start_time=`date +%s`

# 新建一个FIFO类型的文件,将FD6指向FIFO类型
tmp_fifofile="/tmp/$$.fifo"
mkfifo $tmp_fifofile
exec 6<>$tmp_fifofile
rm $tmp_fifofile
# 定义最大线程数
thread_num=5

#根据线程总数量设置令牌个数
#事实上就是在fd6中放置了$thread_num个回车符
for ((i=0;i<${thread_num};i++));do
    echo
done >&6

for i in data/*.bam
do
    # 一个read -u6命令执行一次,就从FD6中减去一个回车符,然后向下执行
    # 当FD6中没有回车符时,就停止,从而实现线程数量控制
    read -u6
    {
        echo "great"
        echo >&6
    } &
done
# 要有wait,等待所有线程结束
wait

stop_time=`date +%s
echo "TIME:`expr $stop_time - $start_time`"
# 关闭FD6
exec 6>&-
echo "over"

参照:https://zhuanlan.zhihu.com/p/68574239

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1