まずは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
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に書き込まれる)
ということ
2018/12/23(日) 05:51:49.71ID:HJ+H2evR
リダイレクト先の変更そのものは、execの機能ではないというのが重要な所だな
シェルの通常のリダイレクト先の変更と、execの機能をうまく組み合わせた応用
だからmanみたりしても、execの説明に直接的に書いてないわけだ
また>>401の端末2つ〜あたりの話もリダイレクトやデバイスファイルの
基本機能の話なのでexecとは全く関係ない
シェルの通常のリダイレクト先の変更と、execの機能をうまく組み合わせた応用
だからmanみたりしても、execの説明に直接的に書いてないわけだ
また>>401の端末2つ〜あたりの話もリダイレクトやデバイスファイルの
基本機能の話なのでexecとは全く関係ない
404399
2018/12/23(日) 09:58:04.05ID:91g6WTHO >>400-403
レスありがとうございます。
ユーザ権限でexec lsやexec ps -aef などをすると、確かに標準出力をした後にバッサリ切断されました
素人的に「?」なのは、exec lsなど後にコマンドが来るのはわかるのですが、
exec 2> $LOGERR の「2>」はコマンドでは無いと思うのですが、もしかして「2>」はリダイレクトコマンドの省略型なのでしょうか?
>exec以降のコマンドの標準エラー出力が
とありますが、それをエラー出力に戻すこともexecコマンドなのでしょうか。
バックアップのシェルスクリプトで見かけたのですが、execコマンドを意図的に使っているのは
execコマンドを使わないとできないことなのか、この時代なら使わないに越したことは無いのでしょうか?
スクリプトの最後に
---
if [ -s "$LOGERR" ]
then
echo
else
eval rm -f "$LOGERR"
fi
---
とあるのですが、echoで終わっているのに何か意味があるのか気になるのと、
eval rmコマンドというのがありますが、普通にrmではダメなのでしょうか?
execやevalなど、コマンドの前に何か来るのに慣れていないので、
人が作ったスクリプトというのは理解するのが難しいです。
レスありがとうございます。
ユーザ権限でexec lsやexec ps -aef などをすると、確かに標準出力をした後にバッサリ切断されました
素人的に「?」なのは、exec lsなど後にコマンドが来るのはわかるのですが、
exec 2> $LOGERR の「2>」はコマンドでは無いと思うのですが、もしかして「2>」はリダイレクトコマンドの省略型なのでしょうか?
>exec以降のコマンドの標準エラー出力が
とありますが、それをエラー出力に戻すこともexecコマンドなのでしょうか。
バックアップのシェルスクリプトで見かけたのですが、execコマンドを意図的に使っているのは
execコマンドを使わないとできないことなのか、この時代なら使わないに越したことは無いのでしょうか?
スクリプトの最後に
---
if [ -s "$LOGERR" ]
then
echo
else
eval rm -f "$LOGERR"
fi
---
とあるのですが、echoで終わっているのに何か意味があるのか気になるのと、
eval rmコマンドというのがありますが、普通にrmではダメなのでしょうか?
execやevalなど、コマンドの前に何か来るのに慣れていないので、
人が作ったスクリプトというのは理解するのが難しいです。
2018/12/23(日) 12:35:37.77ID:QZhSFgej
やりたいこと:
USBメモリのパーティションを分けて、Windowsからファイル読み書きできる領域と、LinuxOSをインストールする領域として利用したい
やったこと:
先頭10GBをNTFSでフォーマット(/dev/sda1)
残り22GBぐらいをext4でフォーマットしてManjaroをインスコ(/dev/sda2)
ブートローダもインスコして起動成功(/dev/sda)
困ってること:
このManjaroから /dev/sda1 にファイルアクセスしたいのですが、Manjaro内でマウントするとOSが落ちます
「sudo mount /dev/sda1 /mnt」でバサッと死ぬのでエラーメッセージ無し
こういう構造の場合はマウントできないものなのか、何かやり方があるのか知りたいです
USBメモリのパーティションを分けて、Windowsからファイル読み書きできる領域と、LinuxOSをインストールする領域として利用したい
やったこと:
先頭10GBをNTFSでフォーマット(/dev/sda1)
残り22GBぐらいをext4でフォーマットしてManjaroをインスコ(/dev/sda2)
ブートローダもインスコして起動成功(/dev/sda)
困ってること:
このManjaroから /dev/sda1 にファイルアクセスしたいのですが、Manjaro内でマウントするとOSが落ちます
「sudo mount /dev/sda1 /mnt」でバサッと死ぬのでエラーメッセージ無し
こういう構造の場合はマウントできないものなのか、何かやり方があるのか知りたいです
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本代表FW塩貝健人の発言にブラジル代表主将マルキーニョスが返答「ブラジルは今も素晴らしいセレソンだ」 [王子★]
- 【速報】 レバノンで巨大な爆発 動画あり [お断り★]
- あぼーん
- 亀梨和也が田中みな実と結婚発表 妊娠も「新しい命も授かっています」ファンクラブサイトで ★6 [首都圏の虎★]
- 新卒一括採用はオワコンか 強まる即戦力志向、中途比率は5割超え [どどん★]
- 「デュエルって何ですか?」 日本代表ブラジル戦へ 『サンモニ』膳場貴子アナがサッカー解説者に質問… 新しいサッカーの言葉 [冬月記者★]
- 貧乏人「自転車ないから皆に走ってついていった。チューチューの端もらってた」 こんな事、ジャップでありえる?(´・ω・`) [592058334]
- 【悲報】 日本人さん、ついに「たこ焼き」が食えなくなる [303493227]
- 【悲報】AIバブル、崩壊 マイクロン大暴落😇😇😇 [802294884]
- 😰🏡
- 【高市悲報】円は対米ドルで161.97円まで下落、1986年以来の安値を記録 [733893279]
- 滝沢秀明と赤西仁がショッピング