タグ付けされた質問 「shell」

シェルは、Unixのコマンドラインインターフェイスです。シェルにインタラクティブにコマンドを入力するか、スクリプトを記述してタスクを自動化できます。/ bin / shおよび最も互換性のあるシェル(ash、bash、ksh、zshなど)に適用される質問には、このタグを使用します。エラーのあるシェルスクリプトについては、ここに投稿する前にhttp://shellcheck.netで確認してください。

1
フォルダーに入るときに一時bashエイリアスを設定する
時々、非常にカスタマイズされたbashエイリアスが必要な場合があります。また、フォルダーに入ったときにキーバインドが必要な場合もあります(CLIから多くのコマンドを入力するのに使用されるプロジェクトになる場合があります)。 "projectAlpha /"のようなフォルダに入ると、次のようなカスタムエイリアスが期待できます。 alias doTaskX='./app arg1 arg2...|filter arg1 arg2...' ... それ以上に私は考えていました: エイリアスと一般的なコマンドを示す有用なメッセージを表示する プロジェクトの一般的なカスタムキーバインドを表示する しかし、プロジェクトのルートを離れるとすぐに、これらの設定は使用できなくなります。 今日それを行うための最良のアプローチは何ですか?
13 bash  shell  alias 

3
2つのエコーコマンドの出力間の\ nを削除する方法は?
各行に1つのファイル名を含むテキストファイルがあります。 111_c4l5r120.png 123_c4l4r60.png 135_c4l4r180.png 147_c4l3r60.png 15_c4l1r120.png ... この形に変換したい: 111_c4l5r120.png 111 123_c4l4r60.png 123 135_c4l4r180.png 135 147_c4l3r60.png 147 15_c4l1r120.png 15 ... このコードを使用して: #!/bin/bash while IFS='' read -r line || [[ -n "$line" ]]; do echo "$line" >> output.txt echo "$line" | cut -d'_' -f 1 >> output.txt done < "$1" しかし、結果は次のとおりです。 111_c4l5r120.png …

1
一部のプログラムはすぐにシェルに戻るのに、他のプログラムは実行が完了するまで戻らないのはなぜですか?
現代のオペレーティングシステムの本から、コマンドが実行されると、シェルは子プロセスを作成し、子が実行を終了するまで待機し、ユーザーからの別のコマンドを待機することを読みました。これは実際に多くのプログラムの場合ですgedit。端末は私が閉じるまでコマンドを受け取りませんgedit。しかし、Atomコードエディターを開くと、シェルはすぐに戻り、エディターが実行されていても次のコマンドを受け入れる準備ができています。ターミナルを閉じてもアトムは閉じません。これは、エディターが子プロセスとしてではなく開かれたことを意味しますか?これを可能にする基本的なメカニズムは何ですか? ランニングps au | grep atomは与える <username> 8042 0.0 0.0 15944 2264 pts/1 S+ 00:55 0:00 grep --color=auto atom

2
なぜ `watch`は$ lsの内容を` ls / tmp`にリストするのですか?
/tmp/ディレクトリ内のファイルの数を監視しようとしています。このため、私はこのコマンドが機能すると思った: watch sh -c 'ls /tmp/|wc -l' しかしls、引数がないかのように動作するようです。つまり、私はにいて~、そこに多数のファイルを取得します/tmp/。私は回避策を見つけましたが、それはうまくいくようです: watch sh -c 'ls\ /tmp/|wc -l' しかし、なぜlsとの間のスペースをエスケープする必要があるの/tmp/ですか?どのようにコマンドがによって変換されるwatchように、ls出力がにfeededされwcますが、/tmp/に引数として渡されていませんかls?
13 shell  ls  watch 

2
$ @から位置パラメータを削除する方法
基本的に、-infパラメータリストから最初に出現したものを「抜き取り」たいと思います。(残りのパラメーターは別のコマンドに渡されます。) 私が持っているスクリプトの構造は次のとおりです。 #!/bin/sh <CODE> for POSITIONAL_PARAM in "$@" do <CODE> if [ "$POSITIONAL_PARAM" = '-inf' ] then <PLUCK $POSITIONAL_PARAM FROM $@> break fi <CODE> done <CODE> some-other-command "$@" # end of script これを行う良い方法はありますか? ところで、私は主に該当する回答に興味がありますが/bin/sh、私は該当する回答にも興味があります/bin/bash。

3
rmdir -rfではなくrm -rfである理由
ディレクトリ内のすべてを削除するコマンドがなぜであるのか、私はいつも興味がありましたrm -rf。 なぜ同じことをするフラグがないのrmdirですか? rmdirディレクトリ操作に使用する方が直感的ではないでしょうか?
13 shell  files  directory 

3
「cat> file_name << blah」コマンドの理解方法
次のコマンドでは、catはhere-docのコンテンツを取得し、confという名前のファイルにリダイレクトします。 cat &gt; conf &lt;&lt; EOF var1="cat" var2="dog" var3="hamster" EOF ここでコマンドの順序を理解する方法は?いbash最初のプロセスのすべての他の(ここでは-docの部分)と最終ステップとしては、それが見える&gt; conf部分を?

6
フォルダーに含まれる.gzファイルの抽出
約320116の.pdb.gzファイルを含むフォルダーがあります。それらをすべて圧縮解除します。gunzip * .gzを使用すると、エラー、つまり引数リストが長すぎます。フォルダーは約2GBです。適切な提案をお願いします。
13 shell 

4
bashをPythonに置き換えるにはどうすればよいですか?
このSOの質問に対する受け入れられた回答によると、Pythonはすばらしいbashの置き換えを行うことができます。 私の質問は、これです:シームレスなスイッチを作成するにはどうすればよいですか?そのような切り替えを行うために整理すべき主なことは、仮想端末を起動するときに、Bourneシェルのようなものではなく、Pythonシェルを呼び出します(どうですか?)。 それは理にかなっていますか?はいの場合、どうすればそれを行うことができますか?このWikipediaの一般的なシェルの比較には、単一のPythonシェルがリストされていません:コマンドシェルの比較
13 shell  python 

2
変数はcdに「〜」をどのように使用できますか?
$BASECDで変数を使用するにはどうすればよいですか。私は次を試しましたが、エラーが発生します $ cd ~/z/repo_1_ruby_193/ 23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 $ BASE="~/z" 23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 $ cd $BASE/repo_1_ruby_193 -bash: cd: ~/z/repo_1_ruby_193: No such file or directory 23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193

9
ファイル内のすべての行のペアワイズ展開を「cat」するコマンドラインツール
次のようなファイル(sample.txtというファイル)があるとします。 Row1,10 Row2,20 Row3,30 Row4,40 基本的に4行すべてのペアの組み合わせであるこのファイルからのストリームで作業できるようにしたいので(合計で16になるはずです)。たとえば、出力が次のようなストリーミング(つまり効率的な)コマンドを探しています。 Row1,10 Row1,10 Row1,10 Row2,20 Row1,10 Row3,30 Row1,10 Row4,40 Row2,20 Row1,10 Row1,20 Row2,20 ... Row4,40 Row4,40 私の使用例は、この出力を別のコマンド(awkなど)にストリーミングして、このペアごとの組み合わせに関するメトリックを計算することです。 私はawkでこれを行う方法がありますが、私の懸念は、END {}ブロックを使用すると、出力する前に基本的にファイル全体をメモリに保存することです。サンプルコード: awk '{arr[$1]=$1} END{for (a in arr){ for (a2 in arr) { print arr[a] " " arr[a2]}}}' samples/rows.txt Row3,30 Row3,30 Row3,30 Row4,40 Row3,30 Row1,10 Row3,30 Row2,20 Row4,40 …

1
「postgres」にシェルが必要なのはなぜですか?
私のDebian Wheezyシステムでは、postgresユーザー「postgres」、「PostgreSQL管理者」が/bin/bashシェルとして使用していることに気付きました。ただし、これが必要な理由はわかりません。これを変更/bin/falseすると、コマンドを使用できるようになりますpsql。 それでは、なぜシステムユーザーpostgresはシェルを必要とし、具体的にシェルを必要とするの/bin/bashですか?

6
コマンドオプションをどのように覚えていますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 さまざまなコマンドのオプションを覚えるためにどのようなトリックを使用しているか知りたいですか?マニュアルページを常に検索するのは時間がかかり、それほどクールではありません!
13 shell  command 

4
奇妙なSSHの問題、sshは-tで動作しますが、それなしでフリーズします
いつssh私のサーバの1つに、(私にプロンプトを与える前にハングアップし、その後にログインするようだが、message debug2: shell request accepted on channel 0 is the last log entry)。 奇妙なことはssh -t "/bin/bash"動作sshしない場合でも動作しますが。 これまでにわかったこと 同じ地理的位置にあるサーバーから正常にログインできます 私ならssh -t '/bin/bash'-どこからでも完全にログインできます。 サーバーに使用rsync する場合、それは動作しているようで、ロックします サーバーrsync から使用する場合、問題なく動作します 私が試したこと すべてのログインオプションを削除または変更する.profile、.bashrc /etc/profile ssh_config および/または sshd_config同じサーバーからの1つに変更する ルーティングを確認しました ネットワークの専門家にtcpdump役に立たなかった(多くの再送信があるようだが) 本当に何も考えられない 危険なネットワークカードドライバー/ファームウェアは別として。
13 shell  ssh  login 

1
exec 3 <&1は何をしますか?
exec現在のシェルでI / Oリダイレクションを実行できることは理解していますが、次のような使用方法しか見ていません。 exec 6&lt;&amp;0 # Link file descriptor #6 with stdin. # Saves stdin. exec 6&gt;&amp;1 # Link file descriptor #6 with stdout. # Saves stdout. それから、私はそれ&lt;が入力ストリーム用で&gt;あり、出力ストリーム用であることを理解しています。それではどうしexec 3&lt;&amp;1ますか? PS:Batsのソースコードからこれを見つけました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.