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

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

3
sedで尾をエミュレートする
私は(バイナリの限られた数のミニシステムを持ってbash、cp、cat、sed...、)。tailコマンドがないので、テール機能をエミュレートできるかどうか疑問に思っていますsed cat foo.txt | tail -n 10 sed cat foo.txt | sed -n '1,10p'で1行目から10行目までを印刷できることはわかっていますが、最後の10行をどのように印刷しますか?
8 bash  sed 

4
csvをHTMLテーブルに変換
Medical.csv次の形式の行を含むファイルがあります。 field: 'participation.type', displayName: 'program_type', type: 'String',path:'participation' field: 'participation.program', displayName: 'program_name', type: 'String',path:'participation' 私が書きたいbashスクリプトを持つHTMLテーブルに変換しfield、displayNameかつtype動的ヘッダーなど。 Csv2HtmlConverter.sh(で答えに触発使用してHTMLテーブルに変換するCSV形式)であります echo "<table>" ; while read INPUT ; do echo "<tr><td>${INPUT//,/</td><td>}</td></tr>" ; done < Medical.csv ; echo "</table>" 上記のスクリプトの結果は以下のようになりますが、ある程度は問題ありませんが<th>field</th>、<th>displayName</th>動的にを追加したいと思います。 <table> <tr><td>field: 'participation.type'</td><td> displayName: 'program_type'</td><td> type: 'String'</td><td>path:'participation'</td></tr> <tr><td>field: 'participation.program'</td><td> displayName: 'program_name'</td><td> type: 'String'</td><td>path:'participation'</td></tr> </table>

2
予期しないログから印刷できない文字を削除しますか?
ファイルから次の文字シーケンスを削除するにはどうすればよいですか?^[[64;8H、^[[?25h、^[[1;64rなどまたは最初の場所でそれらを追加する期待を避けますか? バックグラウンド: 特定のタスクにexpectスクリプトのコレクションを使用しています。 私が収集している出力ファイルには、上記のタイプの文字が含まれていることがよくあります(emacs / vi / cat -vで表示されます)。以下のようなtrコマンドをいくつか試しましたが、[64; 8Hなどが表示されるだけです。 tr -dc '[:print:]\n' < input 編集: 問題のある行での上記の結果 [1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....
8 bash  expect  tr 

2
新規インストール後にアプリを再インストールしますか?
私はDebianを使用しており、ドライブのパーティションを分割して再インストールしたいと考えています。新規インストール後に現在インストールされているすべてのパッケージを復元する簡単な方法はありますか? 私はバックアップアプリのリストを作成することでそれを行うことを考えています: #generate list of installed packages dpkg -l | awk '{ print $2 }' ORS="\n" | tail -n +6 > reinstallList.txt そして、新規インストールを実行した後、私はできるはずです: #install from backup at reinstallList.txt sudo apt-get install $(< reinstallList.txt) これを行うより良い方法はありますか?
8 bash  debian  apt  backup  dpkg 

2
バッシュのグロビングと引数の受け渡し
次の簡略化されたbashスクリプトがあります #!/bin/bash files=("$@") if [ "X$files" = "X" ]; then files=$HOME/print/*.pdf; fi for file in "${files[@]}"; do ls "$file"; done 引数(ファイル名)をパラメーターとして渡すと、このスクリプトは適切なファイル名を出力します。一方、引数を渡さない場合は、出力されます /home/user/print/*.pdf: No such file or directory この場合、ファイル名が展開されないのはなぜですか、どうすれば修正できますか?通常の "files = $ *"よりも優先されることを読んだので、files=("$@")and "${files[@]}"構文を使用していることに注意してください。


5
Bash:URLから画像の寸法を決定する最速の方法
私は、画像のサイズを決定するbashの本当に速い方法を理解しようとしています。 画像を取得し、imagemagickを使用して画像の高さと幅を決定できることはわかっています。これが最速の方法ではないのではないかと心配しています。 また、機能のごく一部のみが必要な場合にimagemagickをインストールする必要があることにも関心があります。リソース(CPU、RAM、ストレージ)が非常に限られている組み込みシステムを使用しています。 何か案は?

6
Bash:変数のコンテンツで発生する最初の数値を取得する方法
変数の最初の数を取得する方法 変数があります: STR="My horse weighs 3000 kg but the car weighs more" STR="Maruska found 000011 mushrooms but only 001 was not with meat" STR="Yesterday I almost won the lottery 0000020 CZK but in the end it was only 05 CZK" 私は数字を取得する必要があります: 3000 11 20
8 bash 

3
bash $ {VAR // search / replace}と奇妙な正規表現の動作
$ {VAR // search / replace}パラメータ展開を使用して、変数を検索および置換しようとしています。私はかなり長くて邪悪なPS1を持っているので、拡張後のサイズを計算します。そのためには、そこに詰め込んだ一連のエスケープシーケンスを削除する必要があります。ただし、すべてのANSI CSI SGRシーケンスを削除しようとすると、構文の問題に遭遇しました。 私のPS1を考えると: PS1=\[\033]0;[\h] \w\007\]\[\033[1m\]\[\033[37m\](\[\033[m\]\[\033[35m\]\u@\[\033[m \]\[\033[32m\]\h\[\033[1m\]\[\033[37m\]\[\033[1m\])\[\033[m\]-\[\033[1m\](\[\033[m \]\t\[\033[37m\]\[\033[1m\])\[\033[m\]-\[\033[1m\](\[\033[m\]\[\033[36m\]\w\[\033[1m \]\[\033[37m\])\[\033[35m\]${git_branch}\[\033[m\]\n$ (はい、それは私が知っている病気です...) 私がやろうとしていること: # readability search='\\\[\\033\[[0-9]*m\\\]' # do the magic sane="${PS1//$search/}" しかし、これらは[0-9](ほとんどの[0-9]場合、.代わりにaのように扱われる)時点で貪欲であるようです: echo "${PS1//$search/}" \[\033]0;[\h] \w\007\]\n$ を削除して*に変更[0-9]すると[0-9][0-9](よりわかりやすくなります)、期待される結果に近づきます。 $ search='\\\[\\033\[[0-9][0-9]m\\\]' $ echo "${PS1//$search/}" \[\033]0;[\h] \w\007\]\[\033[1m\](\[\033[m\]\u@\[\033[m\]\h\[\033[1m \]\[\033[1m\])\[\033[m\]-\[\033[1m\](\[\033[m\]\t\[\033[1m\])\[\033[m\]-\[\033[1m \](\[\033[m\]\w\[\033[1m\])$(git_branch)\[\033[m\]\n$ なぜ*(ゼロ以上)クレイジーなことをしているのですか?ここで何か不足していますか?同じ正規表現をsedに渡すと、期待どおりの結果が得られます。 echo $PS1 | sed "s/$search//g" \[\033]0;[\h] \w\007\](\u@\h)-(\t)-(\w)$(git_branch)\n$

3
いくつかのコマンドで予期しないカラー化された出力を取得する
これを自分.bashrcに追加して、カラー化された出力を取得しますless: # Colorize less man pages. export LESS_TERMCAP_md=$'\e[01;34m' export LESS_TERMCAP_us=$'\e[01;33m' export LESS_TERMCAP_so=$'\e[01;44;37m' export LESS_TERMCAP_mb=$'\e[01;31m' export LESS_TERMCAP_mr=$'\e[01;35m' export LESS_TERMCAP_me=$'\e[00m' export LESS_TERMCAP_ue=$'\e[00m' export LESS_TERMCAP_se=$'\e[00m' ...そして今、突然の特定のコマンド(環境変数の表示に関連しているようです)はすべて、これらの新しい設定に一致するカラー出力を生成します。私は間違ってエスケープしていますか?それともこの意図的な行動ですか?他のエスケープバリエーションをいくつか試しましたが、では機能しませんでしたless。 たとえば、これはenvコマンドのスクリーンショットです。 php -i 出力も色分けされていますが、環境変数セクションのみです。
8 bash  colors  xterm 

2
サブシェルのプロンプトを変更する方法
私はとりわけ、サブシェルを作成する単純なスクリプトを作成しようとしています。 #!/bin/sh # setup "${@:-$SHELL}" # teardown 問題は、デフォルトのプロンプトを変更する必要があるためです。たとえば、次のようにします。 $#デフォルトのシェル $ ./myscript(myscript)$# サブシェル (myscript)$ exit $ 私は変更しようとしていないPROMPTとPS1、これらの作品のどれも。どうやってやるの? PS .:可能であれば、BashとZSHの両方で機能するソリューションが必要です。
8 bash  zsh  prompt 

4
sudoなしで別のユーザーとしてコマンドのリストを実行できないのはなぜですか?
この質問は他のフォーラムで別の方法で尋ねられました。しかし、なぜbashで以下を実行できないのか、きちんとした説明はありません。 #!/bin/bash command1 SWITCH_USER_TO rag command2 command3 通常、推奨される方法は #!/bin/bash command1 sudo -u rag command2 sudo -u rag command3 しかしbash、bashスクリプトの実行中のある時点で別のユーザーに変更し、残りのコマンドを別のユーザーとして実行できないのはなぜですか?
8 bash  sudo  su 

3
`while`ループの最適化
ボタンを押すとRaspberry Piを再起動するミニスクリプトを作成しました。スクリプトは、wiringPi(gpioコマンド)を使用してピン0(Raspberry Piの標準の番号付け順序ではピン17)を入力に設定し、値が1になるまで(つまり、ボタンが押されるか押し下げられるまで)読み取ります。 これが私のスクリプトです: gpio mode 0 in while (true) do if [ `gpio read 0` -eq 1 ] then echo password | sudo -S reboot break fi done & スクリプトはすべて正常に機能します。 ただし、Piに慣れていない方のために、非常に限られたハードウェアリソース(512 MBのメモリを含む)が付属しているため、私が使用しているようなループで簡単に消費できます。 ここで達成しようとしているのは、bashが値がから0に変わったときに1、無条件ループのように専用にする必要なしに、それを見つける別の方法を見つけることです。これは可能ですか?あなたのアイデアを共有してください。

3
Bashでリダイレクトを停止する方法
私が使う : exec >script.log 2>&1 スクリプトですべての出力をファイルにリダイレクトします。スクリプトの最後に、メッセージを画面に出力したいと思います。リダイレクトを停止するにはどうすればよいですか?

1
シェルスクリプトへの入力に端末のオートコンプリートパス機能を使用する
次のようなスクリプトを作成したいと思います。(1)ユーザーがタブを使用してオートコンプリートを実行できるようにするパスを取得し、(2)ユーザーからファイル名を取得し、(3)そのパスに拡張子が付いたファイルを作成します。 txt。 私の質問は次のとおりです。「自動補完」パスである入力を要求するようにbashに指示するにはどうすればよいですか? 注:パスにはほとんどの場合スペースが含まれます。

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