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

他のBourne / POSIXシェルとは対照的に、GNUのBourne Again SHellに固有の質問。Unixシェル全般に関する質問については、代わりに/ shellタグを使用してください。

2
アクセス許可を保持せずにファイルを移動する方法
問題は、ファイルを移動するときにエラーを表示できるようにしたいが、権限の問題ではエラーが表示されないようにすることです。言い換えれば、ファイルが完全に送信されないかどうかは気になりますが、次のようなエラーは見たくありません。 mv: `/home/blah/backup/pgsql.tar.gz 'の所有権を保持できませんでした:操作は許可されていません だから私のような何かをしたいです:mv $backupfile $destination --ignore-permissions。 バックアップファイルは1 MiBから5 GiBの任意のもので、NFSを介して転送されます。
42 bash  mv 


7
単一のステートメントにIFSを設定する
単一のコマンド/ビルトインのスコープに対してカスタムIFS値を設定できることを知っています。単一のステートメントにカスタムIFS値を設定する方法はありますか?明らかにそうではありません、これに基づいてグローバルIFS値は以下に基づいて影響を受けるためです #check environment IFS value, it is space-tab-newline printf "%s" "$IFS" | od -bc 0000000 040 011 012 \t \n 0000003 #invoke built-in with custom IFS IFS=$'\n' read -r -d '' -a arr <<< "$str" #environment IFS value remains unchanged as seen below printf "%s" "$IFS" | od -bc 0000000 …
42 bash 


10
パイプが空であるかどうかを確認し、空でない場合はデータに対してコマンドを実行する方法は?
bashスクリプトで行をパイプし、プログラムに渡す前にパイプにデータがあるかどうかを確認したいと思います。 私が見つけた検索ですが、test -t 0ここでは機能しません。常にfalseを返します。では、パイプにデータがあることを確認する方法は? 例: echo "string" | [ -t 0 ] && echo "empty" || echo "fill" 出力: fill echo "string" | tail -n+2 | [ -t 0 ] && echo "empty" || echo "fill" 出力: fill 前述のパイプラインが出力を生成したかどうかをテストする標準/標準的な方法とは異なりますか?入力をプログラムに渡すために保存する必要があります。これは、あるプロセスから別のプロセスに出力をパイプする方法を一般化しますが、最初のプロセスに出力がある場合にのみ実行しますか?電子メールの送信に焦点を当てています。
42 bash  shell  pipe 

9
Ctrl + Cでbashスクリプトを停止できません
日付を出力してリモートマシンにpingするためのループを備えた単純なbashスクリプトを作成しました。 #!/bin/bash while true; do # *** DATE: Thu Sep 17 10:17:50 CEST 2015 *** echo -e "\n*** DATE:" `date` " ***"; echo "********************************************" ping -c5 $1; done ターミナルから実行すると、で停止できませんCtrl+C。^Cターミナルに送信するようですが、スクリプトは停止しません。 MacAir:~ tomas$ ping-tester.bash www.google.com *** DATE: Thu Sep 17 23:58:42 CEST 2015 *** ******************************************** PING www.google.com (216.58.211.228): 56 data bytes 64 …
42 bash  terminal  signals 

7
複数のファイルをワイルドカードでコピーするにはどうすればよいですか?
ABC。*に多数のファイルを含むフォルダーがあります(このようなファイルは約100個あります)。それらをすべてDEF。*で始まる名前の新しいファイルに複製したい だから、私は欲しい ABC.Page1 ABC.Page2 ABC.Topic12 ...etc にコピーされました DEF.Page1 DEF.Page2 DEF.Topic12 ...etc バッチコマンド(BASHなど)でこれを行う最も簡単な方法は何ですか?私はsed、awk、またはxargsを含むものを考えていますが、構文を理解するのが困難です。Pythonスクリプトを書くことはできますが、おそらくあまり複雑ではないコマンドラインソリューションがあると考えています。

4
最大のファイルを再帰的に見つける
ディレクトリ内で最大のファイルを再帰的に見つけようとしています。そのディレクトリ内にサブディレクトリがある場合、関数はそのディレクトリ内に移動し、最大のファイルがあるかどうかを確認する必要があります。最大のファイルが見つかると、出力が相対パス名と最大のファイルの名前とサイズとともに表示されます。 例: dude@shell2 (~...assignment/solutions) % bash maxfile.sh ~/test class/asn dude.h.gch: 9481628 これは私が持っているものです: #!/bin/sh clear recursiveS() { for d in *; do if [ -d $d ]; then (cd $d; echo $(pwd)/$line; du -a; recursiveS;) fi done } recursiveS 私は今しばらくの間立ち往生しています。多数の既存のUnixツールをパイプライン化することでこれを実装することはできません。どんなアイデアでもいいでしょう!


2
lsからの出力には改行がありますが、1行で表示されます。どうして?
私は、シェルに関する比較的基本的なポイントを見落としていると思います。デフォルトでは、lsコマンドからの出力は出力を改行で区切りますが、シェルは出力を1行で表示します。 誰も私にこれを説明できますか?出力は単にスペースで区切られていると常に思っていましたが、改行で区切られた出力が表示されるようになったので、出力が別の行に表示されるはずです。 例: cpoweradm@debian:~/lpi103-4$ ls text* text1 text2 text3 odは、出力が改行で区切られていることを示しています。 cpoweradm@debian:~/lpi103-4$ ls text* | od -c 0000000 t e x t 1 \n t e x t 2 \n t e x t 0000020 3 \n 0000022 改行がある場合、出力が次のように表示されないのはなぜですか。 text1 text2 text3
41 bash  terminal  ls  od 


3
コマンドとしての変数; eval vs bash -c
私が作っbashスクリプトの誰かに読んでいたし、私は著者がコマンドとして変数を評価するためにevalを使用していないことに気づいた 著者が使用します bash -c "$1" の代わりに eval "$1" evalを使用することが推奨される方法であり、おそらくいずれにせよ高速であると思います。本当? 2つの間に実際的な違いはありますか?両者の顕著な違いは何ですか?

7
ファイルからの入力でxargsを使用する
次のファイルがあるとします bob john sue 現在、これらの直接のような(この場合)URLパターンにcorrospond http://example.com/persons/bob.tar、john.tar、sue.tar。 これらの線を使って、それらを実行したいxargsです。しかし、実行中のコマンドに何が渡されるのかわかりません。プロンプト(たとえば、各行を単にエコーするcat file | xargs echo $PARAM)またはbashスクリプトからパラメーターにアクセスするにはどうすればよいですか。
41 bash  scripting  xargs 

6
現在のディレクトリのすべてのファイル名で、ある文字を別の文字に置き換える方法は?
現在のフォルダ内のすべてのファイル/サブディレクトリの名前を変更するにはどうすればよいですか? たとえば、スペースを含む多くのファイルとサブディレクトリがあり、すべてのスペースをアンダースコアに置き換えたいとします。 File 1 File 2 File 3 Dir 1 Dir 3 名前を変更する必要があります File_1 File_2 File_3 Dir_1 Dir_3
41 linux  bash  rename 

2
〜は常に$ HOMEに等しい
これはおそらく以前に尋ねられたことを知っていますが、Googleで見つけることができませんでした。 与えられた Linuxカーネル $ HOMEを変更する構成はありません バッシュ ウィル~ == $HOME真でありますか?

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