[過去ログ] くだらねえ質問はここに書き込め! Part 234 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
388(1): 2018/12/17(月)21:59 ID:rOWm4H3m(1) AAS
>>387
処理順序が {}の展開→変数の展開 の順になっているからevalするしか無さそうだけど
面倒だし、ファイル名に対してはスペースの扱い怖いな
$ echo $(eval echo abc\{1..$hoge\})
abc1 abc2 abc3
389: 2018/12/17(月)22:06 ID:mLXh0j4T(1) AAS
i=1
while [ $i -le 10 ]; do
echo ${i}
i=$((i+1))
done
390(1): 2018/12/17(月)22:25 ID:2bzO2+ne(1) AAS
>>387
外部リンク:gist.github.com
391: 2018/12/18(火)00:52 ID:gFEfARad(1) AAS
age
392: 2018/12/19(水)00:45 ID:DG5csFsk(1) AAS
manページを開いたときにターミナルエミュレータのタイトルを変更することって可能ですか?
具体的にはmanページのタイトルを取得して,printf '\e]0;%s\e\\' '<タイトル文字>'
みたいな出力をかます。
393: 2018/12/20(木)12:57 ID:eVBCtBcV(1) AAS
>>388
>>390
情報どうもです
evalが必要なようですね
スクリプト見直しの参考にします
394(2): 2018/12/22(土)14:00 ID:b6LODgj3(1) AAS
ディレクトリを移動するときのcdとカレントディレクトリを表示するpwdってそれぞれ何の略ですか?
395: 2018/12/22(土)14:20 ID:Kggs6Gd8(1/2) AAS
change directory
print working directory
じゃね?
396: 2018/12/22(土)14:23 ID:oWNfAzIV(1) AAS
>>394
man や info に書いてありますよ
397: 2018/12/22(土)14:25 ID:PtT8lgYE(1) AAS
>>394
man
398: 2018/12/22(土)17:27 ID:Kggs6Gd8(2/2) AAS
ITに限らず略語の意味は
what pwd (stands) for
でググっても見つかる
399(3): 2018/12/22(土)20:12 ID:TtAeAAdm(1) AAS
シェルスクリプトで
touch $LOGERR
exec 2> $LOGERR
コマンド
$LOGERRがあるならメール送ったり、$LOGERRを削除
みたいな部分があるのですが、
2> $LOGERR はエラーログを記録するのはわかるのですが、
execコマンドはそもそも何をしているのでしょうか?
コマンド 2> $LOGERR はコマンドを実行してそのエラーログを格納するのは理解できるのですが、
execというものを使ったことがないので、よくわかっていません。
400(1): 2018/12/22(土)21:01 ID:0mXx4pJn(1) AAS
>>399
exec以降のコマンドの標準エラー出力が$LOGERRにリダイレクトされるようになる
401(2): 2018/12/23(日)04:58 ID:GaOF1T9V(1) AAS
execはシェルを引数部分に置換する
$ exec lsをやるとls実行後に端末が閉じてしまう
$ exec bashをやるとシェルの再起動が出来たり
exec 2> $LOGERRはエラーを$LOGERRに向けるからそのファイルにエラーが保存される
端末を2つ使ってこんなことができたり
端末1で$ exec > tmp.txt
$ echo foo
$ ls
見た目は変わらないけど実行内容が全てtmp.txtに向くからechoをやっても表示されない
端末2で$ tail -f tmp.txt
省9
402(1): 2018/12/23(日)05:37 ID:HJ+H2evR(1/4) AAS
>>399
シェルスクリプトのexecは、カーネルのexecシステムコールを呼び出すもの
機能としては外部コマンド呼び出しに近いが、外部コマンドが終了しても処理が戻ってくることはない
callではなくgotoといったらわかるかもしれないな
プロセスの入れ替え。だからpidも変わらないし、プロセスツリーが深くなったりもしない
これがexecの機能なのだが、補足としてexecで呼び出す外部コマンドを指定しなかった場合は
エラーになったり終了するのではなく、現在のプロセス(カレントシェル)の処理が
そのまま続行するという仕様がある
この仕様を利用し、execで(外部コマンドを書かずに)リダイレクトのみを書いておくことで
カレントシェルの出力先を変更して処理を続行することが出来る
省5
403(1): 2018/12/23(日)05:51 ID:HJ+H2evR(2/4) AAS
リダイレクト先の変更そのものは、execの機能ではないというのが重要な所だな
シェルの通常のリダイレクト先の変更と、execの機能をうまく組み合わせた応用
だからmanみたりしても、execの説明に直接的に書いてないわけだ
また>>401の端末2つ〜あたりの話もリダイレクトやデバイスファイルの
基本機能の話なのでexecとは全く関係ない
404: 399 2018/12/23(日)09:58 ID:91g6WTHO(1) AAS
>>400-403
レスありがとうございます。
ユーザ権限でexec lsやexec ps -aef などをすると、確かに標準出力をした後にバッサリ切断されました
素人的に「?」なのは、exec lsなど後にコマンドが来るのはわかるのですが、
exec 2> $LOGERR の「2>」はコマンドでは無いと思うのですが、もしかして「2>」はリダイレクトコマンドの省略型なのでしょうか?
>exec以降のコマンドの標準エラー出力が
とありますが、それをエラー出力に戻すこともexecコマンドなのでしょうか。
バックアップのシェルスクリプトで見かけたのですが、execコマンドを意図的に使っているのは
execコマンドを使わないとできないことなのか、この時代なら使わないに越したことは無いのでしょうか?
スクリプトの最後に
省12
405(5): 2018/12/23(日)12:35 ID:QZhSFgej(1/4) AAS
やりたいこと:
USBメモリのパーティションを分けて、Windowsからファイル読み書きできる領域と、LinuxOSをインストールする領域として利用したい
やったこと:
先頭10GBをNTFSでフォーマット(/dev/sda1)
残り22GBぐらいをext4でフォーマットしてManjaroをインスコ(/dev/sda2)
ブートローダもインスコして起動成功(/dev/sda)
困ってること:
このManjaroから /dev/sda1 にファイルアクセスしたいのですが、Manjaro内でマウントするとOSが落ちます
「sudo mount /dev/sda1 /mnt」でバサッと死ぬのでエラーメッセージ無し
こういう構造の場合はマウントできないものなのか、何かやり方があるのか知りたいです
406: 2018/12/23(日)12:55 ID:t8nv+Vud(1) AAS
>>405
ログにも何も出ないの?
407: 405 2018/12/23(日)13:05 ID:QZhSFgej(2/4) AAS
/var/log の下には落ちるときのログは出てないです
やっぱり普通はマウントできるのに何かがおかしい状態ですかね
上下前次1-新書関写板覧索設栞歴
あと 595 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s