シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その25
http://echo.2ch.net/test/read.cgi/unix/1439563321/
探検
シェルスクリプト総合 その26 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/03/20(月) 12:07:26.41
2017/09/14(木) 05:18:47.05
質問の意味がわかんないんです(><)
2017/09/14(木) 06:04:07.07
すみませんが詳しい方のみ回答をお願いします
2017/09/14(木) 06:59:44.81
ここにはいません
2017/09/14(木) 10:48:20.75
みなさんコマンドの頭にバックスラッシュって付けてます?
私は安全を期して付けているのですが そうしているシェルスクリプトが以外に少ないので
気にしなくてもいいんですかね
私は安全を期して付けているのですが そうしているシェルスクリプトが以外に少ないので
気にしなくてもいいんですかね
2017/09/14(木) 10:59:51.81
付けないとどんな危険があると想定してるの?
315173
2017/09/14(木) 12:57:09.36 alias cp='rm -rf'
cp a --> rm -rf a
\cp a --> cp a
cp a --> rm -rf a
\cp a --> cp a
2017/09/14(木) 13:21:22.76
へぇ
2017/09/14(木) 13:26:37.84
cshだとaliasが機能しちゃうんだね
318313
2017/09/14(木) 13:42:49.97 173 --> 313
2017/09/14(木) 14:22:08.99
cshはデフォルトだと必ず.cshrc読んじゃうからねぇ
2017/09/14(木) 14:51:18.91
>>306
翻訳するとこういう感じだと想像
変数の展開: variable expansion ( e.g. ${var} )
コマンド文字列の展開: command substitusion ( e.g. $(command) )
ワイルドカードの展開: filename expansion ( e.g. *.sh )
正規表現の展開: ???
正規表現の展開って何? find -regexとかのこと言ってるの?
あと原理って? 同じか違うか知りたい理由は何?
人に伝わるように質問しないと誰も分からないぞ
翻訳するとこういう感じだと想像
変数の展開: variable expansion ( e.g. ${var} )
コマンド文字列の展開: command substitusion ( e.g. $(command) )
ワイルドカードの展開: filename expansion ( e.g. *.sh )
正規表現の展開: ???
正規表現の展開って何? find -regexとかのこと言ってるの?
あと原理って? 同じか違うか知りたい理由は何?
人に伝わるように質問しないと誰も分からないぞ
2017/09/14(木) 14:57:45.50
cshを前提にしちゃいかんでしょう
2017/09/14(木) 16:44:13.36
2017/09/14(木) 17:20:02.07
いまどきcshでスクリプトを書くおとこの人って…
2017/09/14(木) 18:02:43.44
>>315はcshじゃないな。
むかしのcshで痛い目にあってなますを吹いてるとか?
むかしのcshで痛い目にあってなますを吹いてるとか?
2017/09/14(木) 18:37:11.41
2017/09/16(土) 04:51:53.35
>>313を見て思ったのが シェバンの書き方。
#!/bin/sh -
と書けと駱駝にはあったが 存外そうしている Shell Script がない
まあ余程のことがない限り sh がオプションを勘違いするなんてないが
#!/bin/sh -
と書けと駱駝にはあったが 存外そうしている Shell Script がない
まあ余程のことがない限り sh がオプションを勘違いするなんてないが
2017/09/16(土) 08:20:15.68
#!/bin/sh -
set -x
set -u
...
set +u
set +x
set -x
set -u
...
set +u
set +x
2017/09/17(日) 11:16:56.16
set −xって要らないでしょ
2017/09/17(日) 13:02:27.61
sexに空目した
2017/09/18(月) 09:06:16.47
set -u 便利だな
2017/09/18(月) 17:34:05.37
新しい関数として
ls () {
\ls --width=`\echo $COLUMN`
}
という関数を作って,ls のエイリアスとして動作させたいのですが,
コマンドラインで $ ls と入力すると無限ループに陥ります。
多分というか確実に関数 ls が自分自身を呼び出している為に生じる現象だと思います。
これを回避し,ls という関数を安全に作製するにはどうすればいいでしょうか。
常用しているシェル bash です。
bash 独自の拡張でそのような(関数の再帰を防ぐ)機能があれば教えて下さい。
ls () {
\ls --width=`\echo $COLUMN`
}
という関数を作って,ls のエイリアスとして動作させたいのですが,
コマンドラインで $ ls と入力すると無限ループに陥ります。
多分というか確実に関数 ls が自分自身を呼び出している為に生じる現象だと思います。
これを回避し,ls という関数を安全に作製するにはどうすればいいでしょうか。
常用しているシェル bash です。
bash 独自の拡張でそのような(関数の再帰を防ぐ)機能があれば教えて下さい。
2017/09/18(月) 17:35:32.76
関数中のlsを絶対パスで呼ぶ
2017/09/18(月) 17:44:16.70
command ls --width=$(echo ${COLUMN:-50});
とかでいいんじゃない
とかでいいんじゃない
334331
2017/09/18(月) 18:25:53.39 >>332 様、>>333 様、ありがとうございます。
どちらの方法でも上手く行きました。身勝手ながら >>333 様の方法を採ることにしました。
蛇足気味ですが、最終的に以下のような関数にしました。良かったら添削してください。
POSIX とかは考えてないです。
function ls () {
local _opt="--ignore-backups --color=always --format=across --group-directories-first --indicator-style=classify --literal --sort=time --width=`\echo $COLUMNS`"
command ls $_opt
}
どちらの方法でも上手く行きました。身勝手ながら >>333 様の方法を採ることにしました。
蛇足気味ですが、最終的に以下のような関数にしました。良かったら添削してください。
POSIX とかは考えてないです。
function ls () {
local _opt="--ignore-backups --color=always --format=across --group-directories-first --indicator-style=classify --literal --sort=time --width=`\echo $COLUMNS`"
command ls $_opt
}
335331
2017/09/18(月) 18:28:49.27 s:/`\\echo $COLUMNS`/$(\\echo ${COLUMNS})/
336331
2017/09/18(月) 18:55:59.93 Better?
function ls () {
local _opt="--ignore-backups --color=always --format=across --group-directories-first --indicator-style=classify --literal --sort=time --width=$(\command echo ${COLUMNS})"
\command -p ls $_opt $@
}
function ls () {
local _opt="--ignore-backups --color=always --format=across --group-directories-first --indicator-style=classify --literal --sort=time --width=$(\command echo ${COLUMNS})"
\command -p ls $_opt $@
}
2017/09/18(月) 20:05:49.92
lsを常に特定のオプション付けて実行したいのならLS_OPTIONS使えばいいと思う
それからfunction name ()はfunction nameかname () のどちらかにすべき
name()の方が汎用性高い
それからfunction name ()はfunction nameかname () のどちらかにすべき
name()の方が汎用性高い
338331
2017/09/18(月) 20:49:26.19 >>337
ありがとうございます!
LS_OPTIONS は知りませんでした。MANOPT や LESS みたな感じなんですかね。
函数は POSIX に合わせて ls () にしようと思ったんですが,ちょっと個人的に気持ち悪くて,どうしても function が取っ払えませんでした……。
ありがとうございます!
LS_OPTIONS は知りませんでした。MANOPT や LESS みたな感じなんですかね。
函数は POSIX に合わせて ls () にしようと思ったんですが,ちょっと個人的に気持ち悪くて,どうしても function が取っ払えませんでした……。
2017/09/18(月) 21:20:07.09
別に身勝手ってほどのことでもなくね
2017/09/21(木) 02:41:20.96
シェルの解釈を標準出力に印刷するコマンドってある/作れますか?
グロブやエイリアスがどう解釈/引き渡されるのかを知りたいです。
$ showraw 'ls */*'
ls a/a a/b a/c b/a c/a c/b
みたいな。
検索も一通りしたのですが見付からないです。
シェルによってシェルそれ自身の機能を調べるのは無理なんですかね。
グロブやエイリアスがどう解釈/引き渡されるのかを知りたいです。
$ showraw 'ls */*'
ls a/a a/b a/c b/a c/a c/b
みたいな。
検索も一通りしたのですが見付からないです。
シェルによってシェルそれ自身の機能を調べるのは無理なんですかね。
341340
2017/09/21(木) 02:42:16.10 すいません。age ます。
2017/09/21(木) 02:44:04.33
$ showraw 'ls */*'
ls -F -A a/a a/b a/c b/a c/a c/b
エイリアスも解釈されるのでこんなかんじですね。
ls -F -A a/a a/b a/c b/a c/a c/b
エイリアスも解釈されるのでこんなかんじですね。
2017/09/21(木) 05:13:34.59
コマンドの方はtype ls 引数の方はecho */* で良くね
取り敢えずshとbashで確認
取り敢えずshとbashで確認
2017/09/21(木) 06:12:05.17
$ ls */*
と入力したところで ESC \C-e をタイプするとエイリアスが展開され
\C-x* をタイプするとワイルトカードが展開される
と入力したところで ESC \C-e をタイプするとエイリアスが展開され
\C-x* をタイプするとワイルトカードが展開される
2017/09/21(木) 06:21:42.53
すまん、bash限定
346名無しさん@お腹いっぱい。
2017/09/21(木) 07:24:19.182017/09/21(木) 08:38:01.77
2017/09/26(火) 02:43:18.09
2017/09/28(木) 10:22:22.57
すいません。わかるかたいたら教えてください。
基本的にカンマ区切りの行なのですが、1列目が""で囲まれ、"aaa,bbb,ccc"のように
なることがあります。
1列目のみに発生します。
この1列目のケースだけ、カンマをスペース等に置換したいと思っています。
イメージはこうです。
"aaa,bbb,ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
↓
"aaa bbb ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
理由はエクセルに取り込むときにずれてしまうためです。
awkで出来た気がするのですが、うまく出来ません。
どなたか心当たりないでしょうか。
基本的にカンマ区切りの行なのですが、1列目が""で囲まれ、"aaa,bbb,ccc"のように
なることがあります。
1列目のみに発生します。
この1列目のケースだけ、カンマをスペース等に置換したいと思っています。
イメージはこうです。
"aaa,bbb,ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
↓
"aaa bbb ccc",AAAA,BBBB,CCCC
aaa,AAAA,DDDD,EEEE
理由はエクセルに取り込むときにずれてしまうためです。
awkで出来た気がするのですが、うまく出来ません。
どなたか心当たりないでしょうか。
2017/09/28(木) 10:41:01.84
Excelならダブルクオートちゃんと扱うはずだよ
勘違いか、変な文字入ってない?
勘違いか、変な文字入ってない?
2017/09/28(木) 11:09:26.14
テキストをコピーして貼り付ける時にカンマ区切りでバラすように貼り付けると囲んでてても関係なくバラさなかったっけ?
2017/09/28(木) 11:10:20.00
そんなことなかったわ
2017/09/28(木) 11:41:08.89
もっとうまく書けそうな気がするものの
perl -pe 'if (/^"/) { @f = split/"/, $_, 3; $f[1] =~ s/,/ /g; $_ = join "\"", @f }'
perl -pe 'if (/^"/) { @f = split/"/, $_, 3; $f[1] =~ s/,/ /g; $_ = join "\"", @f }'
2017/09/28(木) 12:17:55.02
2017/09/28(木) 22:34:38.91
区切り文字を"にして配列に取り込んで,を に置換えた後、最初と最後に"を追加する
perl -F\" -anle '$F[1] =~ s/,/ /g; $F[1] =~ s/(.+)/\"$1\"/; print @F'
awkでは
awk 'BEGIN {FS="\""; OFS="\""} {gsub(","," ",$2); print $0}'
でいいような、なんか自信ないけど
perl -F\" -anle '$F[1] =~ s/,/ /g; $F[1] =~ s/(.+)/\"$1\"/; print @F'
awkでは
awk 'BEGIN {FS="\""; OFS="\""} {gsub(","," ",$2); print $0}'
でいいような、なんか自信ないけど
2017/09/28(木) 22:48:57.65
GNU awk の FPAT を使ってこんな感じで
gawk -vFPAT='(".+?"|[^,]*)' -vOFS=, '{gsub(/,/," ",$1);print}' data.csv
gawk -vFPAT='(".+?"|[^,]*)' -vOFS=, '{gsub(/,/," ",$1);print}' data.csv
2017/09/29(金) 04:05:27.30
perl -pe 's/^("[^"]*")/$1=~s|,| |gr/e'
2017/09/29(金) 16:42:39.76
perl -pe 's/,(?=.*\")/ /g'
2017/09/29(金) 17:03:38.90
suge-
2017/09/30(土) 13:09:25.90
>>349
#!/bin/sh
IFS=\"
while read X Y Z ; do
if [ "$X" = "" ] ; then
echo -n \"$Y\" | sed 's/,/ /g'
echo $Z
else
echo $X
fi
done
#!/bin/sh
IFS=\"
while read X Y Z ; do
if [ "$X" = "" ] ; then
echo -n \"$Y\" | sed 's/,/ /g'
echo $Z
else
echo $X
fi
done
2017/10/02(月) 11:37:31.18
sed '/^"[^"]*"/{H;s///;x;s/\n//;s/^\("[^"]*"\).*/\1/;s/,/ /g;G;s/\n//;}'
362名無しさん
2017/10/12(木) 11:03:43.53 bashで変数展開するときに、名前末尾にハイフン付けるのはどういう意味なんでしょうか?
${abc-}
${abc-}
2017/10/12(木) 13:43:34.47
2017/10/12(木) 14:06:07.63
今まさにそのページ読んでたけど、:いるよな
ナシの使い方なんてあったっけか
ナシの使い方なんてあったっけか
2017/10/12(木) 16:13:02.77
> コロンを省略した場合には設定されているかどうかのみを調べます。
2017/10/12(木) 16:37:37.56
何度か読み返してようやく理解した
unsetされてるか空値が入ってるかの違いに対応出来るのか
unsetされてるか空値が入ってるかの違いに対応出来るのか
367名無しさん@お腹いっぱい。
2017/10/13(金) 18:57:11.77 ログイン時に読み込まれる ~/.profile ファイルは,「誰が」読み込んでいるのでしょうか。
普通 sh もしくはその代替シェルかなと思うのですが,実際はどうなのか気になります。
というのも,私が普段使っている Debian GNU/Linux ではデフォルトシェルは bash に指定しているのですが,~/.profile の中に bash っぽい変数 (${HOGE} という書き方) があったので。
普通 sh もしくはその代替シェルかなと思うのですが,実際はどうなのか気になります。
というのも,私が普段使っている Debian GNU/Linux ではデフォルトシェルは bash に指定しているのですが,~/.profile の中に bash っぽい変数 (${HOGE} という書き方) があったので。
2017/10/13(金) 19:08:59.70
>>363読んでみたらいいじゃない
起動のところ
起動のところ
2017/10/13(金) 19:12:36.61
${HOGE}はbashに限らないよ
2017/10/14(土) 00:33:15.35
>>369
誰へのレス?
誰へのレス?
2017/10/14(土) 00:33:50.98
>>367
Linuxの質問はLinux板で
Linuxの質問はLinux板で
2017/10/14(土) 00:37:55.44
>>367
くだらねえ質問はここに書き込め!Part 229
http://mao.5ch.net/test/read.cgi/linux/1505217859/
初心者の質問相談にやさしく答えるスレ Part9
http://mao.5ch.net/test/read.cgi/linux/1504269873/
くだらねえ質問はここに書き込め!Part 229
http://mao.5ch.net/test/read.cgi/linux/1505217859/
初心者の質問相談にやさしく答えるスレ Part9
http://mao.5ch.net/test/read.cgi/linux/1504269873/
2017/10/14(土) 00:56:47.50
376名無しさん@お腹いっぱい。
2017/10/20(金) 11:02:46.23 >>374
何を言ってるのがわからん。bshが元祖なのに。
何を言ってるのがわからん。bshが元祖なのに。
377370
2017/10/20(金) 17:00:36.31 余計なレスだったんでわからんならわからんでいいよ
2017/10/21(土) 01:22:29.89
スレチ気味だけど,ある種の Shell って,
$ cd ///////
みたいなことをするとルートディレクトリだと認識するんだな。
個人的に ~ がすごく打ちにくい位置にあるので // を ~ だと解釈させようと試行錯誤してるときに発見した。
これはルートディレクトリが特別って訳じゃなく,
$ ls /usr////bin///////
みたいなことでも問題ない。ということは // == ~ にすることは Shell のソース弄るくらいしか方法がないということになる。
俺みたいな無駄な努力をしないために残す
$ cd ///////
みたいなことをするとルートディレクトリだと認識するんだな。
個人的に ~ がすごく打ちにくい位置にあるので // を ~ だと解釈させようと試行錯誤してるときに発見した。
これはルートディレクトリが特別って訳じゃなく,
$ ls /usr////bin///////
みたいなことでも問題ない。ということは // == ~ にすることは Shell のソース弄るくらいしか方法がないということになる。
俺みたいな無駄な努力をしないために残す
2017/10/21(土) 01:32:07.61
それシェルの機能じゃなくね?
2017/10/21(土) 01:36:03.89
2017/10/21(土) 08:08:40.09
もしかして RFC とかで実装が統一されてんのか。
382370
2017/10/21(土) 14:49:37.55 >>378
cdについてはPOSIXで決まっている
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cd.html
の8のc
>>379
シェル一部であるcdコマンドの機能
>>380
それはまた別の話
cdについてはPOSIXで決まっている
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cd.html
の8のc
>>379
シェル一部であるcdコマンドの機能
>>380
それはまた別の話
2017/10/21(土) 14:51:29.58
$ /bin/echo /usr////bin///////
/usr////bin///////
$
となるので、lsについてはシェルが解釈してるわけではなくlsが解釈していると思われる
/usr////bin///////
$
となるので、lsについてはシェルが解釈してるわけではなくlsが解釈していると思われる
2017/10/21(土) 14:55:41.90
まあ//を~にしたいならシェルのキーバインド使えばいいんじゃないですかね
2017/10/21(土) 15:01:35.03
ちなみにこんなんなったりする
シェルの種類によって挙動は違うかも
$ cd //
$ pwd
//
$
理由は
http://www.unixguide.net/unix/bash/E10.shtml
シェルの種類によって挙動は違うかも
$ cd //
$ pwd
//
$
理由は
http://www.unixguide.net/unix/bash/E10.shtml
2017/10/21(土) 15:03:36.25
キーバインドいじっちゃうと
「http://」を打とうとして「http:~」になったりして困らないか
「http://」を打とうとして「http:~」になったりして困らないか
2017/10/22(日) 16:52:10.67
>>382
「An implementation may」だから必ずではないのでは
「An implementation may」だから必ずではないのでは
2017/10/22(日) 21:04:49.39
必ずって言ったっけ
2017/10/22(日) 21:24:08.21
bashはパス中の複数の/を一つにするはず
2017/10/22(日) 22:40:16.51
2017/10/26(木) 13:24:16.45
ファイルをリネームしてコピーし続けるスクリプトなんですが
コマンドが見つからないと出てよくわかりません
#/bin/sh
PATH='/var/log/'
PATH2='dnsmasq.log'
DOT='.'
for i in 6 5 4 3 2 1
do
PATH3=$PATH$PATH2$DOT$i
PATH4=`expr $i - 1`
PATH5=$PATH$PATH2$DOT$PATH4
mv $PATH5 $PATH3
done
PATH6=0
mv $PATH$PATH2 $PATH$PATH2$PATH6
exit 0
コマンドが見つからないと出てよくわかりません
#/bin/sh
PATH='/var/log/'
PATH2='dnsmasq.log'
DOT='.'
for i in 6 5 4 3 2 1
do
PATH3=$PATH$PATH2$DOT$i
PATH4=`expr $i - 1`
PATH5=$PATH$PATH2$DOT$PATH4
mv $PATH5 $PATH3
done
PATH6=0
mv $PATH$PATH2 $PATH$PATH2$PATH6
exit 0
2017/10/26(木) 13:29:36.84
2017/10/26(木) 13:30:47.44
sh -xで実行してみると以下の通り出力されました
+ PATH=/var/log/
+ PATH2=dnsmasq.log
+ DOT=.
+ PATH3=/var/log/dnsmasq.log.6
+ expr 6 - 1
./splitLog.sh: 1: ./splitLog.sh: expr: not found
+ PATH4=
+ PATH5=/var/log/dnsmasq.log.
+ mv /var/log/dnsmasq.log. /var/log/dnsmasq.log.6
./splitLog.sh: 12: ./splitLog.sh: mv: not found
(省略)
+ PATH3=/var/log/dnsmasq.log.1
+ expr 1 - 1
./splitLog.sh: 1: ./splitLog.sh: expr: not found
+ PATH4=
+ PATH5=/var/log/dnsmasq.log.
+ mv /var/log/dnsmasq.log. /var/log/dnsmasq.log.1
./splitLog.sh: 12: ./splitLog.sh: mv: not found
+ PATH6=0
+ mv /var/log/dnsmasq.log /var/log/dnsmasq.log0
./splitLog.sh: 17: ./splitLog.sh: mv: not found
+ exit 0
+ PATH=/var/log/
+ PATH2=dnsmasq.log
+ DOT=.
+ PATH3=/var/log/dnsmasq.log.6
+ expr 6 - 1
./splitLog.sh: 1: ./splitLog.sh: expr: not found
+ PATH4=
+ PATH5=/var/log/dnsmasq.log.
+ mv /var/log/dnsmasq.log. /var/log/dnsmasq.log.6
./splitLog.sh: 12: ./splitLog.sh: mv: not found
(省略)
+ PATH3=/var/log/dnsmasq.log.1
+ expr 1 - 1
./splitLog.sh: 1: ./splitLog.sh: expr: not found
+ PATH4=
+ PATH5=/var/log/dnsmasq.log.
+ mv /var/log/dnsmasq.log. /var/log/dnsmasq.log.1
./splitLog.sh: 12: ./splitLog.sh: mv: not found
+ PATH6=0
+ mv /var/log/dnsmasq.log /var/log/dnsmasq.log0
./splitLog.sh: 17: ./splitLog.sh: mv: not found
+ exit 0
2017/10/26(木) 13:46:18.65
とりあえず何がしたいかを書け
そんな汚いもん見せられても何がしたいのか分かりにくい
そんな汚いもん見せられても何がしたいのか分かりにくい
2017/10/26(木) 13:51:57.00
PATH潰すんなら外部コマンドはフルパスで書かんと
2017/10/26(木) 14:02:38.34
フルパスで書かないといけなかったんですね…
修正してみたらできました、ありがとうございます!
修正してみたらできました、ありがとうございます!
2017/10/26(木) 14:11:58.47
ようわからんがsavelogコマンドみたいなことがしたいのか
2017/10/26(木) 14:27:19.72
PATHがきしょい
2017/10/26(木) 15:33:20.43
2017/10/26(木) 15:35:16.21
これ1〜6までファイル全部消えるんじゃね?
2017/10/26(木) 15:35:32.78
1から6まで
402400
2017/10/26(木) 15:37:15.23 あ、すまん勘違い
逆だった
逆だった
2017/10/26(木) 16:21:22.80
5を6にリネーム~0を1にリネーム
そのあと最新のログを0にリネームじゃないかな
どっちにしろゴリ押し感半端ないが
そのあと最新のログを0にリネームじゃないかな
どっちにしろゴリ押し感半端ないが
2017/10/26(木) 16:30:18.25
2017/10/26(木) 16:37:04.75
あーそういうことか、403のお陰でやりたいことは分かった
2017/10/26(木) 18:34:54.50
こうすればわかりやすいですかね
#!/bin/sh
DIR=/var/log/
FILE=dnsmasq.log;
START=0
for i in `seq 1 6`
do
DEC=`expr $i - 1`
cd $DIR
mv "${FILE}.${DEC}" "${FILE}.${i}"
done
cd $DIR
mv $FILE "${FILE}.${START}"
exit 0
#!/bin/sh
DIR=/var/log/
FILE=dnsmasq.log;
START=0
for i in `seq 1 6`
do
DEC=`expr $i - 1`
cd $DIR
mv "${FILE}.${DEC}" "${FILE}.${i}"
done
cd $DIR
mv $FILE "${FILE}.${START}"
exit 0
2017/10/26(木) 18:56:39.92
毎回cdするのは無駄やろ
2017/10/26(木) 19:01:29.48
個人的にexpr嫌いなのもあって$(())使っちゃうな
mv "${FILE}.$((i-1))" "${FILE}.$i"
あとseq間違ってね?
seq 6 1 -1
mv "${FILE}.$((i-1))" "${FILE}.$i"
あとseq間違ってね?
seq 6 1 -1
2017/10/26(木) 19:25:35.16
これだと全部ログ.0になっちゃいますね
ありがとうございます!
ありがとうございます!
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日中対立、打開策見えず 高市氏答弁1カ月、影響拡大 ★2 [蚤の市★]
- 小林よしのり 日中関係、来年は「ますます日本は不利に」「加害者の分際で被害者ぶって、中国が横暴だと毅然と振る舞っても滑稽なだけ」 [冬月記者★]
- 2026年はゲーム機やPC、スマホが一斉値上げか メモリ大手ブランド「Crucial」廃止の衝撃 [樽悶★]
- 【サッカー】カズ・三浦知良、現役続行を表明 SNSで『引退勧告』殺到も… 対戦した選手「スピード、キレはないが体の使い方はうまい」 [冬月記者★]
- 『DOWNTOWN+』2回目生配信で松本の実兄・松本隆博が登場し共演 [jinjin★]
- 元グラドル維新議員 夫に「サンドイッチのパン」を依頼→食パン6枚切り買われ怒り…“どちらが悪い?”SNSで議論 ★3 [muffin★]
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap614
- とらせんIP ★3
- 巨専】
- 【D専】
- 【U-NEXT】プレミアリーグ総合 ★40
- 【DAZN/ABEMA】ブンデスリーガ・DFBポカール★6
- 【超速報】昨日の終電車で使用中止になったとうきょうスカイツリー駅旧ホームに行った・・・・・・・・・・・・ [793051416]
- マクドナルドのバイトが時給4300円を突破。さすがにアメリカ人もビビり始める [858219337]
- おバカなリズム🎶とおバカなダンス💃で、サタデーナイト🌃にバカテンポ🏡
- 酔ってらっしゃい🍶🍶🍶
- 国民・玉木雄一郎「日本は台湾を国家として正式に承認していないため、台湾への攻撃だけでは存立危機事態にはなりません」と世界に発信 [594040874]
- 生活保護者「今月35万円振り込まれた。この税金で人生やり直す」→底辺労働層ブチギレ [834922174]
