まずは2ch-Linux-Beginnersを読みましょう。
いろいろとまとめられているので(・∀・)イイ!!
http://www12.atwiki.jp/linux2ch/
読んでも解決しなかったら、質問を書きこむ前にここを読もう。
http://www12.atwiki.jp/linux2ch/?About
質問に対して答えてもらったら、お礼よりも、結果報告。
過去ログ検索
Google検索
https://www.google.com/search?hl=ja&as_q=検索語句&as_sitesearch=2ch.net%2Ftest%2Fread.cgi%2Flinux%2Fhttps://www.google.com/search?hl=ja&as_q=検索語句&as_sitesearch=5ch.net%2Ftest%2Fread.cgi%2Flinux%2F
※前スレ
くだらねえ質問はここに書き込め! Part 233
http://mao.5ch.net/test/read.cgi/linux/1536848825/
くだらねえ質問はここに書き込め! Part 234
■ このスレッドは過去ログ倉庫に格納されています
2018/11/16(金) 22:58:46.21ID:KePwDHh2
303login:Penguin
2018/12/09(日) 14:31:12.11ID:oLpqFNSA 昔はttyの1番にだけ背景にペンギンの絵とか表示されてたと思うんだけど
これっていつから無くなったの?
KMS導入後?
これっていつから無くなったの?
KMS導入後?
304297
2018/12/09(日) 19:39:15.97ID:4X3RO9or openssl req -new -key hoge.example.jp.key -out hoge.example.jp.csr < 改行が入っているテキスト
をファイルを使わずにシェルスクリプトにして変数にして読み込ませたいのですが、
STD_IN="JP\nTokyo\nChuo-ku\n(省略)"
openssl req -new -key hoge.example.jp.key -out hoge.example.jp.csr < ${STD_IN}
とやっても、ファイルが見つかりませんと出てしまいました。
変数の入れ方は1行に入れるのか、ヒアドキュメントみたいな形にもできるのか、
< には変数は使えないのでしょうか?
をファイルを使わずにシェルスクリプトにして変数にして読み込ませたいのですが、
STD_IN="JP\nTokyo\nChuo-ku\n(省略)"
openssl req -new -key hoge.example.jp.key -out hoge.example.jp.csr < ${STD_IN}
とやっても、ファイルが見つかりませんと出てしまいました。
変数の入れ方は1行に入れるのか、ヒアドキュメントみたいな形にもできるのか、
< には変数は使えないのでしょうか?
2018/12/09(日) 20:03:18.84ID:ECj7FB1h
2018/12/09(日) 20:41:30.18ID:4X3RO9or
2018/12/10(月) 00:05:25.99ID:SK07uHh5
308295
2018/12/10(月) 01:47:07.69ID:iaZVXIYt >>301-302
そういうことだったんですね
grepにパターンを分割してわたす方法は-eオプションを複数用いるのが
唯一かと思っていましたが、改行区切りでもわたせるんですね
grep $'??n'$'??n'
このようにしても同じことのようですね
ただ
grep $'??n' $'??n'
このようにスペースを挟むとスペース以降はファイルを指定する
引数とみなされ空文字なのでエラーとなるようです
ヌル文字をシェルが除去するのも知りませんでした
これですっきりしました、ありがとうございました
そういうことだったんですね
grepにパターンを分割してわたす方法は-eオプションを複数用いるのが
唯一かと思っていましたが、改行区切りでもわたせるんですね
grep $'??n'$'??n'
このようにしても同じことのようですね
ただ
grep $'??n' $'??n'
このようにスペースを挟むとスペース以降はファイルを指定する
引数とみなされ空文字なのでエラーとなるようです
ヌル文字をシェルが除去するのも知りませんでした
これですっきりしました、ありがとうございました
309295
2018/12/10(月) 01:48:55.68ID:iaZVXIYt 文字間違えました
?? → \
?? → \
310295
2018/12/10(月) 07:24:44.06ID:rDY5Jm5J 1つ誤解がありましたので訂正します
grep $'\n' $'\n'
とするとスペースの後ろの改行文字自体をファイルとして指定したと
解釈されてエラーになるようです
grep $'\n' $'\n'
とするとスペースの後ろの改行文字自体をファイルとして指定したと
解釈されてエラーになるようです
311login:Penguin
2018/12/13(木) 07:59:27.16ID:BpuyFdNl age
2018/12/13(木) 08:47:58.94ID:YYFyHPut
$ echo "
> foo
> bar"
foo
bar
引用符一つ入れると改行できたのね・・・
ヒアストリングも<<<"でできるようだし
echo -eだのprintfだの`cat -`だの色々やってたわ
> foo
> bar"
foo
bar
引用符一つ入れると改行できたのね・・・
ヒアストリングも<<<"でできるようだし
echo -eだのprintfだの`cat -`だの色々やってたわ
2018/12/13(木) 09:47:14.64ID:g4Xg+Gp3
[[ -z $hoge ]] や [[ -n $hoge ]]
って必要ですか?
[[ $hoge ]] とか [[ ! $hoge ]] で代用できそうなんですが…
何が違うんでしょ
って必要ですか?
[[ $hoge ]] とか [[ ! $hoge ]] で代用できそうなんですが…
何が違うんでしょ
2018/12/13(木) 10:41:51.23ID:9d5jxDGh
>>313
もし$hogeの値が「-e /dev/null」とかだったらどうするのよ。
もし$hogeの値が「-e /dev/null」とかだったらどうするのよ。
2018/12/13(木) 11:07:49.54ID:2p8AEIUJ
>>314
何も問題ないですよね?
何も問題ないですよね?
317313
2018/12/13(木) 12:10:25.19ID:g4Xg+Gp3 さらにいろいろ試してみましたが
変数の内容がオプションと解釈されてしまって真偽値に影響がでるケースとして
hoge='-e unknown'
[ $hoge ] || echo null
とやってみるとhogeは空でも未定義でもないのに
nullと表示されてしまい、本来の意図とは違う結果になるようです
ただこれも解決方法があり
[ "$hoge" ] || echo null
とすれば意図したテストができるようです
もとより[[を使えば引用符もいらないみたいですね
[ ]の中で変数を二重引用符で囲むのは常識(?)のようなので
やはり-nや-zの必要性がない気がします
[[が無い時代(そんな時代があるのか知りませんが)の産物なんですかね
変数の内容がオプションと解釈されてしまって真偽値に影響がでるケースとして
hoge='-e unknown'
[ $hoge ] || echo null
とやってみるとhogeは空でも未定義でもないのに
nullと表示されてしまい、本来の意図とは違う結果になるようです
ただこれも解決方法があり
[ "$hoge" ] || echo null
とすれば意図したテストができるようです
もとより[[を使えば引用符もいらないみたいですね
[ ]の中で変数を二重引用符で囲むのは常識(?)のようなので
やはり-nや-zの必要性がない気がします
[[が無い時代(そんな時代があるのか知りませんが)の産物なんですかね
2018/12/13(木) 12:33:39.42ID:2p8AEIUJ
>>317
[[ は POSIX非標準。古い新しいではなくbashによって追加された拡張構文
POSIX標準のシェルは対応しない。POSIX標準のシェルには、debianの
デフォルトシェルであるdashやyashやposhがある
どのシェルでも動くようにするならば、[[ は使ってはいけない
[[ は POSIX非標準。古い新しいではなくbashによって追加された拡張構文
POSIX標準のシェルは対応しない。POSIX標準のシェルには、debianの
デフォルトシェルであるdashやyashやposhがある
どのシェルでも動くようにするならば、[[ は使ってはいけない
319313
2018/12/13(木) 12:39:41.77ID:g4Xg+Gp3 >>318
そうなんですね
じゃあやはりPOSIXの範囲内では[の後に-nや-zを使った方が
変数の内容を意図せずオプションと解釈されてしまう場合でも
エラーになって気づくので安全と言えば安全なのかもしれませんね
うっかり変数を引用符で囲み忘れる場合もあるだろうし
そうなんですね
じゃあやはりPOSIXの範囲内では[の後に-nや-zを使った方が
変数の内容を意図せずオプションと解釈されてしまう場合でも
エラーになって気づくので安全と言えば安全なのかもしれませんね
うっかり変数を引用符で囲み忘れる場合もあるだろうし
2018/12/13(木) 12:47:43.62ID:2p8AEIUJ
> じゃあやはりPOSIXの範囲内では[の後に-nや-zを使った方が
俺は使わない。ダブルクォート忘れで困るのは、ここだけじゃない
コマンド呼び出しの、foo "$hoge" "$hage" "$tsuru" "$pika" とかも全部そう。
忘れるとか、そんなもんshellcheckを使えばすぐに解決するんだから気にすることじゃない
そもそもダブルクォートをつけ忘れは、-nや-zを使っても解決しない。
俺は使わない。ダブルクォート忘れで困るのは、ここだけじゃない
コマンド呼び出しの、foo "$hoge" "$hage" "$tsuru" "$pika" とかも全部そう。
忘れるとか、そんなもんshellcheckを使えばすぐに解決するんだから気にすることじゃない
そもそもダブルクォートをつけ忘れは、-nや-zを使っても解決しない。
2018/12/13(木) 12:52:21.57ID:2p8AEIUJ
まあ-zは使うけどな。単に読みやすさのため。
否定というのは場合によっては分かりづらくなる
「空文字なら」 は -z(ゼロの長さなら)で読みやすい
「文字があるの否定」は分かりづらい
「文字がある」はわかりやすいが
-n は no? 文字がノーってことか?で分かりづらい
文字があるという状態を示すために、nを割り当てたやつはセンスがない
否定というのは場合によっては分かりづらくなる
「空文字なら」 は -z(ゼロの長さなら)で読みやすい
「文字があるの否定」は分かりづらい
「文字がある」はわかりやすいが
-n は no? 文字がノーってことか?で分かりづらい
文字があるという状態を示すために、nを割り当てたやつはセンスがない
322313
2018/12/13(木) 13:11:04.56ID:g4Xg+Gp3 最近の言語を何かしらやってる人間にとっては変数の空文字列チェックを
変数そのものでやるというのも馴染みがあってわかりやすいので
できればそうしたいと思ったんですよね
最初の質問の趣旨に戻りますが、-zや-nを使わなくても同等のテストが
できるということで間違いないなら
[[ $hoge ]] [[ ! $hoge ]]
や
[ "$hoge" ] [ ! "$hoge" ]
の方が個人的には読みやすいかな
よくよく考えたら自分はbashしか使わないので便利な[[で事足りそう
変数そのものでやるというのも馴染みがあってわかりやすいので
できればそうしたいと思ったんですよね
最初の質問の趣旨に戻りますが、-zや-nを使わなくても同等のテストが
できるということで間違いないなら
[[ $hoge ]] [[ ! $hoge ]]
や
[ "$hoge" ] [ ! "$hoge" ]
の方が個人的には読みやすいかな
よくよく考えたら自分はbashしか使わないので便利な[[で事足りそう
2018/12/13(木) 13:17:06.99ID:9d5jxDGh
-zや-nは文字列長を判定するのに対して<string>は文字列そのものを判定するっていう違いがあるけど
引用符で囲った場合においてこれらに動作上の違いがあるのか俺には分からん。
少なくとも今のところない。
引用符で囲った場合においてこれらに動作上の違いがあるのか俺には分からん。
少なくとも今のところない。
2018/12/13(木) 14:50:24.14ID:YYFyHPut
testが[としてbashに内蔵されてて驚く
両方ともなぜか外部コマンドもあって驚く
[[が機能多いのにただのbashの方言で驚く
$ type -a test [ [[
test はシェル組み込み関数です
test は /usr/bin/test です
[ はシェル組み込み関数です
[ は /usr/bin/[ です
[[ はシェルの予約語です
両方ともなぜか外部コマンドもあって驚く
[[が機能多いのにただのbashの方言で驚く
$ type -a test [ [[
test はシェル組み込み関数です
test は /usr/bin/test です
[ はシェル組み込み関数です
[ は /usr/bin/[ です
[[ はシェルの予約語です
2018/12/13(木) 16:04:43.42ID:2p8AEIUJ
> testが[としてbashに内蔵されてて驚く
[ が内蔵されてないシェルなんて知らんのだが?
そんなもん現実に存在するのか?
[ が内蔵されてないシェルなんて知らんのだが?
そんなもん現実に存在するのか?
2018/12/13(木) 16:21:22.10ID:9d5jxDGh
2018/12/13(木) 16:33:21.95ID:2p8AEIUJ
2018/12/13(木) 16:40:17.41ID:2p8AEIUJ
もはや神話の世界だな
testが組み込みでないシェルは、コメントも使えないシェルということか
https://ja.wikipedia.org/wiki/Bourne_Shell
> UNIX System III(1981年)
> test コマンドを組み込み。
> # でコメントを書き込めるようになった。
さらに関数数定義も出来ず、Unicodeも扱えないようだ
そんなもん現存してないだろう
> SVR3(1986年)
> 現在のような "$@" の用法
> getopts 組み込み
> パラメータ処理を改善し、関数の再帰呼び出しが可能となった。
> 8ビットクリーン
testが組み込みでないシェルは、コメントも使えないシェルということか
https://ja.wikipedia.org/wiki/Bourne_Shell
> UNIX System III(1981年)
> test コマンドを組み込み。
> # でコメントを書き込めるようになった。
さらに関数数定義も出来ず、Unicodeも扱えないようだ
そんなもん現存してないだろう
> SVR3(1986年)
> 現在のような "$@" の用法
> getopts 組み込み
> パラメータ処理を改善し、関数の再帰呼び出しが可能となった。
> 8ビットクリーン
2018/12/13(木) 17:17:18.77ID:9d5jxDGh
「手元にない」ということと「存在を考えなくていい」とは別物だからね。
2018/12/13(木) 17:22:00.60ID:YYFyHPut
globも元は外部コマンドとかも調べなきゃ分からんわ
フィルタをグロブと呼ぶ変わった宗教って認識だったからな
フィルタをグロブと呼ぶ変わった宗教って認識だったからな
2018/12/13(木) 17:24:32.47ID:2p8AEIUJ
>>329
だからどこに存在しているんですか?
だからどこに存在しているんですか?
2018/12/13(木) 18:43:38.57ID:5CGSaiem
>>331
我が家のSun OS 4の/bin/sh。
我が家のSun OS 4の/bin/sh。
2018/12/13(木) 19:03:57.29ID:2p8AEIUJ
2018/12/13(木) 19:05:54.68ID:2p8AEIUJ
> SunOS 4.1.1インストール媒体(磁気テープ)
この画像に驚愕した
ビデオテープかよw
この画像に驚愕した
ビデオテープかよw
335login:Penguin
2018/12/13(木) 19:16:08.14ID:2U4H8MIt いや磁気テープは現役ですし……
2018/12/13(木) 19:16:28.93ID:Zfs8AO7d
?
2018/12/13(木) 19:22:26.58ID:2p8AEIUJ
sunos 4.1 4 download でぐぐったら出てきた
x86用があったから解凍してみたら、
拡張子img(フロッピーディスク?)のファイルが36個でてきた
これ動くのか? 確認したくてもよくわからん
https://winworldpc.com/product/sunos/4x
x86用があったから解凍してみたら、
拡張子img(フロッピーディスク?)のファイルが36個でてきた
これ動くのか? 確認したくてもよくわからん
https://winworldpc.com/product/sunos/4x
338login:Penguin
2018/12/13(木) 20:01:43.60ID:Kpl2TedD cshにもtcshにも組み込まれてないが
testも[も
testも[も
2018/12/13(木) 20:06:06.97ID:2p8AEIUJ
$ csh
solaris% type test
test is a shell builtin
solaris% tcsh
> type test
test is a shell builtin
solaris% type test
test is a shell builtin
solaris% tcsh
> type test
test is a shell builtin
2018/12/13(木) 20:15:29.66ID:FwJygUTm
341login:Penguin
2018/12/13(木) 21:22:46.92ID:Kpl2TedD2018/12/13(木) 21:24:27.86ID:2p8AEIUJ
劣化版なのでは?
2018/12/13(木) 21:36:41.38ID:rsnZtD/M
磁気テープ知らん奴がいるのか・・・
俺も歳を取るわけだ・・・ ハーー
俺も歳を取るわけだ・・・ ハーー
2018/12/13(木) 21:39:29.69ID:rk530vyH
磁気テープがバックアップ媒体でバリバリ現役なんだぜ。
345login:Penguin
2018/12/13(木) 22:44:49.64ID:jQhV0FO+ >>343
オープンリールのテープならともかくqicなんてddsの前位だろ。あんたも俺もまだ若造だよ。ハー。
オープンリールのテープならともかくqicなんてddsの前位だろ。あんたも俺もまだ若造だよ。ハー。
2018/12/14(金) 00:56:12.74ID:Dwi6kCsC
フラッシュメモリや円盤の耐用年数は、5年だろ
一方、磁気テープは、30年とかだろ
一方、磁気テープは、30年とかだろ
2018/12/14(金) 02:31:43.32ID:WFElEHpX
磁気テープってなんかロマンあるよね。実際見たことないけどw
2018/12/14(金) 03:07:09.17ID:GpLUKSLa
俺も知らなかった
当時高価なUNIXとは無関係なごく一般的なパソヲタはこういう流れだから特殊なものだと思った方がいい
オーディオ用アナログカセットテープ → 5インチフロッピーディスク → 3.5インチフロッピーディスク → 3.5インチMO → CD-R/RW → USBメモリ
当時高価なUNIXとは無関係なごく一般的なパソヲタはこういう流れだから特殊なものだと思った方がいい
オーディオ用アナログカセットテープ → 5インチフロッピーディスク → 3.5インチフロッピーディスク → 3.5インチMO → CD-R/RW → USBメモリ
2018/12/14(金) 03:23:33.89ID:vny8+/a7
オーディオ用カセットテープ??
2018/12/14(金) 03:37:12.47ID:GpLUKSLa
あれ?mz700とかの媒体ってオーディオ用のやつでしょ?キーガーとか音出しながらアナログからデジタルに変換して読み込むの
2018/12/14(金) 03:47:46.28ID:CQSYnmf/
勘違いしとるな
ドライブ本体が安けりゃ欲しい
ドライブ本体が安けりゃ欲しい
2018/12/14(金) 03:53:05.65ID:GpLUKSLa
そりゃ誰だって欲しいw
2018/12/14(金) 07:09:46.63ID:tfnsNf0y
2018/12/14(金) 08:28:09.81ID:WFElEHpX
sudoeditで起動したエディタに元のファイルの名前を渡す方法ってありますか。
sudoeditでファイルを読み込むと/var/tmp/以下に一時的なファイルが作成されるんだが
VimやEmacsなどの一部のエディタは設定ファイルの名前をもとにシンタックスの種類を決定することがある。
だから/var/tmp/にファイルが作成されるとその機能が使えなくなってしまう。
例えば/etc/fstabを編集するとき、エディタは「/etc/fstab」というファイルの名前からfstab用のシンタックスを適用してくれるんだけど
$ sudoedit /etc/fstab
とやって編集するとファイルが/var/tmp/XXXXXXXに移動してしまいfstab用のシンタックスが適用されなくなってしまう。
sudoeditでファイルを読み込むと/var/tmp/以下に一時的なファイルが作成されるんだが
VimやEmacsなどの一部のエディタは設定ファイルの名前をもとにシンタックスの種類を決定することがある。
だから/var/tmp/にファイルが作成されるとその機能が使えなくなってしまう。
例えば/etc/fstabを編集するとき、エディタは「/etc/fstab」というファイルの名前からfstab用のシンタックスを適用してくれるんだけど
$ sudoedit /etc/fstab
とやって編集するとファイルが/var/tmp/XXXXXXXに移動してしまいfstab用のシンタックスが適用されなくなってしまう。
2018/12/14(金) 08:32:28.30ID:JQUDZnsy
磁気テープが現役でしかもTB単位とかロマンを感じる
カセットやVHSは知っててもで大型用は写真でしか知らんからな
でかいリール使ってるあれって速度的にはどうなん
カセットやVHSは知っててもで大型用は写真でしか知らんからな
でかいリール使ってるあれって速度的にはどうなん
2018/12/14(金) 08:46:11.55ID:ovdRZLka
LTOはそれなりに速い
2018/12/14(金) 10:10:30.61ID:ikwr+G0A
普通のHDDより速いね
バックアップなんてどうせシーケンシャルアクセスしかしないし
バックアップなんてどうせシーケンシャルアクセスしかしないし
2018/12/14(金) 15:27:57.27ID:WFElEHpX
2018/12/14(金) 16:10:21.55ID:ikwr+G0A
LTOすら知らんのかよ・・・
2018/12/14(金) 16:25:29.45ID:mnvRUogY
tape archivesのテープってひょっとしてそれのこと?
2018/12/14(金) 18:01:54.87ID:4OG2vapp
ここ4〜5レスは、レベルが違いすぎて議論が噛み合っていない。
見ていて楽しいwww
見ていて楽しいwww
2018/12/14(金) 18:39:29.51ID:WFElEHpX
見ていて楽しい(話についていけない)
2018/12/14(金) 18:59:48.09ID:C13Zox/x
Sun のが 2400ボーだったら気が遠くなりますw
2018/12/14(金) 19:01:50.13ID:Wd54hADz
ハタボーだふぉーん
2018/12/14(金) 20:34:41.75ID:Ek1UBBLm
2018/12/14(金) 21:05:02.67ID:t7Qx0ST8
>>355
こんな奴の話ならテープの絶対速度はかなり早くて120inch(3mちょい)/s程度
ただ記録密度が低いからデータ転送速度はたいしたことなくて200kb/s程度
http://museum.ipsj.or.jp/computer/device/magnetic_tape/images/0017_01_l.jpg
こんな奴の話ならテープの絶対速度はかなり早くて120inch(3mちょい)/s程度
ただ記録密度が低いからデータ転送速度はたいしたことなくて200kb/s程度
http://museum.ipsj.or.jp/computer/device/magnetic_tape/images/0017_01_l.jpg
2018/12/14(金) 21:07:11.37ID:t7Qx0ST8
すまん200kB/sだ
2018/12/14(金) 22:31:25.17ID:JweqMLAi
>>366
どうせ貼るなら詳細が書かれているhtmlページの方を貼ってほしかった
http://museum.ipsj.or.jp/computer/device/magnetic_tape/0017.html
1971年の製品か
どうせ貼るなら詳細が書かれているhtmlページの方を貼ってほしかった
http://museum.ipsj.or.jp/computer/device/magnetic_tape/0017.html
1971年の製品か
2018/12/15(土) 00:06:51.68ID:SNg57Q0S
2018/12/15(土) 15:05:37.62ID:+Je+pouF
LinuxでつかえるUSB経由でHDMIキャプチャできる機器ってありますか?
この手の機器をつかったことがないのでセットアップ方法まで参照があると嬉しいです。
この手の機器をつかったことがないのでセットアップ方法まで参照があると嬉しいです。
2018/12/15(土) 15:17:43.20ID:yMwJjzRz
2018/12/15(土) 15:19:15.58ID:+Je+pouF
2018/12/15(土) 17:54:53.40ID:2dFVGCpB
データセンターでのバックアップ磁気媒体はLTOが主体だと思うんだが
2018/12/15(土) 18:27:40.50ID:nBxd7crP
2018/12/15(土) 19:40:36.94ID:KHYgPvB0
iconvのiってどういう意味?
2018/12/15(土) 20:22:21.71ID:PhlF7L7j
>>375
[I]nternational Codeset [Conv]ersion Library
[I]nternational Codeset [Conv]ersion Library
2018/12/16(日) 02:11:05.50ID:sSzOptpz
bashについてお伺いします
ファイルの各行を1つの要素とする配列を簡単に作る方法を模索しています
データには空白文字が含まれている可能性があり、そこで要素に分割されないように
空白文字を保護する必要があります
ループ回して1行読み込んでは配列に追加するという方法なら確実かと思いますが
簡潔にできないかと考えたあげく出たのが次のコードです
eval array=( $( cat file | sed "s/.*/'&'/" ) )
各行の先頭と末尾にシングルクォートを追加した上で、evalに再解釈させるという方法です
(話の単純化のためデータには元々シングルクオートが含まれていないとします)
この方法は一見うまくいったようでした
空白文字の箇所で区切られることなく1つの要素に収まりました
しかし連続するスペースが1つのスペースに圧縮されていることに気づきました
これはevalが実行される前に、連続するスペースが要素の区切りと見なされ
1つのスペースに整形されてしまうのが原因ではないかと考えています
そこで質問としては、うまくいかない理由の認識はあっていますか?
それと他にこの目的を簡単に達成できるような方法はありますか?
ファイルの各行を1つの要素とする配列を簡単に作る方法を模索しています
データには空白文字が含まれている可能性があり、そこで要素に分割されないように
空白文字を保護する必要があります
ループ回して1行読み込んでは配列に追加するという方法なら確実かと思いますが
簡潔にできないかと考えたあげく出たのが次のコードです
eval array=( $( cat file | sed "s/.*/'&'/" ) )
各行の先頭と末尾にシングルクォートを追加した上で、evalに再解釈させるという方法です
(話の単純化のためデータには元々シングルクオートが含まれていないとします)
この方法は一見うまくいったようでした
空白文字の箇所で区切られることなく1つの要素に収まりました
しかし連続するスペースが1つのスペースに圧縮されていることに気づきました
これはevalが実行される前に、連続するスペースが要素の区切りと見なされ
1つのスペースに整形されてしまうのが原因ではないかと考えています
そこで質問としては、うまくいかない理由の認識はあっていますか?
それと他にこの目的を簡単に達成できるような方法はありますか?
2018/12/16(日) 02:28:50.33ID:08XRGqAB
ループ回して1行読み込んでは配列に追加しろ
つーか、1行読んで1行ずつ処理すれば?
つーか、1行読んで1行ずつ処理すれば?
379login:Penguin
2018/12/16(日) 03:14:23.64ID:648j88pB >>377
> うまくいかない理由の認識はあっていますか?
あってると思う
evalの引数を引用符で括れば良さげ
eval "array=( $( cat file | sed "s/.*/'&'/" ) )"
> 他にこの目的を簡単に達成できるような方法はありますか?
mapfile -t array <file
> うまくいかない理由の認識はあっていますか?
あってると思う
evalの引数を引用符で括れば良さげ
eval "array=( $( cat file | sed "s/.*/'&'/" ) )"
> 他にこの目的を簡単に達成できるような方法はありますか?
mapfile -t array <file
2018/12/16(日) 04:43:24.46ID:84KMWPj3
mapfileなんて知らんかったわ
すげえな
すげえな
382377
2018/12/16(日) 05:08:03.31ID:sSzOptpz mapfileというのはbash4.0からの機能みたいですね
mapfileがない場合は最終的に次のコードに落ち着きました
eval "array=( $( cat file | sed "s/'/'\\\''/g; s/.*/'&'/" ) )"
(シングルクォート保護版)
しかし無駄な努力に終わってしまった…
mapfileがない場合は最終的に次のコードに落ち着きました
eval "array=( $( cat file | sed "s/'/'\\\''/g; s/.*/'&'/" ) )"
(シングルクォート保護版)
しかし無駄な努力に終わってしまった…
2018/12/16(日) 09:19:31.69ID:zwcjpbmB
http://ppa.launchpad.net/papirus/papirus/ubuntu/dists/bionic/InRelease
↑ここに接続できないって言われてPapirusアイコンのパッケージ更新ができないんだけど、みなさんそうですか?
↑ここに接続できないって言われてPapirusアイコンのパッケージ更新ができないんだけど、みなさんそうですか?
2018/12/16(日) 11:24:56.34ID:/MO3Edke
>>376
おお!ありがとう!
おお!ありがとう!
2018/12/16(日) 18:29:41.10ID:Cph6qf5U
つまんねー ぜんぜん「くだらねえ」くないから
2018/12/17(月) 12:08:05.90ID:lR+oH8eb
つまんねーならおまえがくだらねえ質問するんやで
2018/12/17(月) 18:39:30.04ID:ChQv8TkK
1から10までのループとして
for i in {1..10} ; do
echo ${i}
done
と書いてますが、このループの終端の数字をシェルスクリプト実行時に指定しようと思い
for i in {1..$1} ; do
echo ${i}
done
とし、コマンドラインパラメータとして$1に10を与えたところ、出力が
{1..10}
となってしまい、期待通り動かせません
うまく動作させる方法を知りたいです
seqコマンドを用い、 seq 1 $1 と書き換えると動くことは分かったのですが、上記{}を使った記法を知りたいです
for i in {1..10} ; do
echo ${i}
done
と書いてますが、このループの終端の数字をシェルスクリプト実行時に指定しようと思い
for i in {1..$1} ; do
echo ${i}
done
とし、コマンドラインパラメータとして$1に10を与えたところ、出力が
{1..10}
となってしまい、期待通り動かせません
うまく動作させる方法を知りたいです
seqコマンドを用い、 seq 1 $1 と書き換えると動くことは分かったのですが、上記{}を使った記法を知りたいです
2018/12/17(月) 21:59:33.57ID:rOWm4H3m
>>387
処理順序が {}の展開→変数の展開 の順になっているからevalするしか無さそうだけど
面倒だし、ファイル名に対してはスペースの扱い怖いな
$ echo $(eval echo abc\{1..$hoge\})
abc1 abc2 abc3
処理順序が {}の展開→変数の展開 の順になっているからevalするしか無さそうだけど
面倒だし、ファイル名に対してはスペースの扱い怖いな
$ echo $(eval echo abc\{1..$hoge\})
abc1 abc2 abc3
2018/12/17(月) 22:06:52.90ID:mLXh0j4T
i=1
while [ $i -le 10 ]; do
echo ${i}
i=$((i+1))
done
while [ $i -le 10 ]; do
echo ${i}
i=$((i+1))
done
2018/12/17(月) 22:25:31.98ID:2bzO2+ne
391login:Penguin
2018/12/18(火) 00:52:52.26ID:gFEfARad age
2018/12/19(水) 00:45:56.58ID:DG5csFsk
manページを開いたときにターミナルエミュレータのタイトルを変更することって可能ですか?
具体的にはmanページのタイトルを取得して,printf '\e]0;%s\e\\' '<タイトル文字>'
みたいな出力をかます。
具体的にはmanページのタイトルを取得して,printf '\e]0;%s\e\\' '<タイトル文字>'
みたいな出力をかます。
2018/12/20(木) 12:57:12.93ID:eVBCtBcV
2018/12/22(土) 14:00:39.65ID:b6LODgj3
ディレクトリを移動するときのcdとカレントディレクトリを表示するpwdってそれぞれ何の略ですか?
2018/12/22(土) 14:20:22.97ID:Kggs6Gd8
change directory
print working directory
じゃね?
print working directory
じゃね?
2018/12/22(土) 14:23:52.44ID:oWNfAzIV
>>394
man や info に書いてありますよ
man や info に書いてありますよ
2018/12/22(土) 14:25:13.37ID:PtT8lgYE
>>394
man
man
2018/12/22(土) 17:27:14.00ID:Kggs6Gd8
ITに限らず略語の意味は
what pwd (stands) for
でググっても見つかる
what pwd (stands) for
でググっても見つかる
2018/12/22(土) 20:12:35.93ID:TtAeAAdm
シェルスクリプトで
touch $LOGERR
exec 2> $LOGERR
コマンド
$LOGERRがあるならメール送ったり、$LOGERRを削除
みたいな部分があるのですが、
2> $LOGERR はエラーログを記録するのはわかるのですが、
execコマンドはそもそも何をしているのでしょうか?
コマンド 2> $LOGERR はコマンドを実行してそのエラーログを格納するのは理解できるのですが、
execというものを使ったことがないので、よくわかっていません。
touch $LOGERR
exec 2> $LOGERR
コマンド
$LOGERRがあるならメール送ったり、$LOGERRを削除
みたいな部分があるのですが、
2> $LOGERR はエラーログを記録するのはわかるのですが、
execコマンドはそもそも何をしているのでしょうか?
コマンド 2> $LOGERR はコマンドを実行してそのエラーログを格納するのは理解できるのですが、
execというものを使ったことがないので、よくわかっていません。
2018/12/22(土) 21:01:13.58ID:0mXx4pJn
>>399
exec以降のコマンドの標準エラー出力が$LOGERRにリダイレクトされるようになる
exec以降のコマンドの標準エラー出力が$LOGERRにリダイレクトされるようになる
2018/12/23(日) 04:58:50.78ID:GaOF1T9V
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
foo
tmp.txt
これでtmp.txtが開きっぱなしになるから端末1で何かを実行する度表示される
端末番号ならファイルを使わず直接画面をリダイレクトできたり
ttyで端末番号を調べて端末2が/dev/pts/2として端末1からこうする
$ exec > /dev/pts/2
これで端末1の操作内容が端末2で表示される
$ echo hello > /dev/pts/2なんてやると相手に文字が送れる
他にも名前付きパイプとかscriptとか
$ 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
foo
tmp.txt
これでtmp.txtが開きっぱなしになるから端末1で何かを実行する度表示される
端末番号ならファイルを使わず直接画面をリダイレクトできたり
ttyで端末番号を調べて端末2が/dev/pts/2として端末1からこうする
$ exec > /dev/pts/2
これで端末1の操作内容が端末2で表示される
$ echo hello > /dev/pts/2なんてやると相手に文字が送れる
他にも名前付きパイプとかscriptとか
2018/12/23(日) 05:37:56.93ID:HJ+H2evR
>>399
シェルスクリプトのexecは、カーネルのexecシステムコールを呼び出すもの
機能としては外部コマンド呼び出しに近いが、外部コマンドが終了しても処理が戻ってくることはない
callではなくgotoといったらわかるかもしれないな
プロセスの入れ替え。だからpidも変わらないし、プロセスツリーが深くなったりもしない
これがexecの機能なのだが、補足としてexecで呼び出す外部コマンドを指定しなかった場合は
エラーになったり終了するのではなく、現在のプロセス(カレントシェル)の処理が
そのまま続行するという仕様がある
この仕様を利用し、execで(外部コマンドを書かずに)リダイレクトのみを書いておくことで
カレントシェルの出力先を変更して処理を続行することが出来る
(もちろん外部コマンドを書くと、リダイレクト先を変更した上で外部コマンドが実行される)
/bin/foo >/tmp/foo # fooコマンドを呼び出し、fooコマンドが終了したら戻ってくる(fooコマンドの出力はすべて/tmp/fooに書き込まれる)
exec /bin/foo >/tmp/foo # fooコマンドを呼び出し、fooコマンドが終了しても戻ってこない(fooコマンドの出力はすべて/tmp/fooに書き込まれる)
exec >/tmp/foo # (外部コマンドが指定されてないので)そのまま続行する。(以降のカレントシェルの出力はすべて/tmp/fooに書き込まれる)
ということ
シェルスクリプトのexecは、カーネルのexecシステムコールを呼び出すもの
機能としては外部コマンド呼び出しに近いが、外部コマンドが終了しても処理が戻ってくることはない
callではなくgotoといったらわかるかもしれないな
プロセスの入れ替え。だからpidも変わらないし、プロセスツリーが深くなったりもしない
これがexecの機能なのだが、補足としてexecで呼び出す外部コマンドを指定しなかった場合は
エラーになったり終了するのではなく、現在のプロセス(カレントシェル)の処理が
そのまま続行するという仕様がある
この仕様を利用し、execで(外部コマンドを書かずに)リダイレクトのみを書いておくことで
カレントシェルの出力先を変更して処理を続行することが出来る
(もちろん外部コマンドを書くと、リダイレクト先を変更した上で外部コマンドが実行される)
/bin/foo >/tmp/foo # fooコマンドを呼び出し、fooコマンドが終了したら戻ってくる(fooコマンドの出力はすべて/tmp/fooに書き込まれる)
exec /bin/foo >/tmp/foo # fooコマンドを呼び出し、fooコマンドが終了しても戻ってこない(fooコマンドの出力はすべて/tmp/fooに書き込まれる)
exec >/tmp/foo # (外部コマンドが指定されてないので)そのまま続行する。(以降のカレントシェルの出力はすべて/tmp/fooに書き込まれる)
ということ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【W杯】韓国警察、「洪明甫(ホン・ミョンボ)監督選任」関連でサッカー協会を捜査中…「積極的に進める」★3 [ホイミン★]
- 亀梨和也が田中みな実と結婚発表 妊娠も「新しい命も授かっています」ファンクラブサイトで ★5 [首都圏の虎★]
- “DeNAに最大15億円支援”など、経産省がXで説明 「大企業への利益提供ではない」⋯コナミ、スクエニ、セガなどにも [少考さん★]
- ブラジル監督「日本戦は決勝のつもり」名将の最大級リスペクトにSNSで興奮殺到 ★2 [首都圏の虎★]
- 【W杯】ブラジル監督「日本戦は決勝のつもり」名将の最大級リスペクトにSNSで興奮殺到 [首都圏の虎★]
- 高市首相… 経歴詐称疑惑で米下院関係者が決定的証言「インターンだった」SNSで猛拡散 ★7 [少考さん★]
- 【実況】博衣こよりのえちえち手描き切り抜き鑑賞🧪★2
- 【実況】博衣こよりのえちえち手描き切り抜き鑑賞🧪★3
- 【高市悲報】石油枯渇まであと157日 [616817505]
- 🦊Vtuber日本代表は不知火フレアだよな⚽…🏃 🏡
- 【緊急高市速報】ドラム🥁、受注停止 [469534301]
- 金融市場関係者、高市政権54点の評価 [256556981]