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

シェルスクリプト、シェルによって解釈される実行可能ファイル(bash、zshなど)に関する質問。

6
要素の長さに従って配列をバッシュソートしますか?
文字列の配列がある場合、各要素の長さに従って配列をソートしたいと思います。 例えば... array=( "tiny string" "the longest string in the list" "middle string" "medium string" "also a medium string" "short string" ) ソートする必要があります... "the longest string in the list" "also a medium string" "medium string" "middle string" "short string" "tiny string" (おまけとして、リストが同じ長さの文字列をアルファベット順に並べ替えるといいでしょう。上記の例では、同じ長さでもmedium string前に並べ替えられmiddle stringていました。しかし、解決)。 配列がインプレースで並べ替えられている(「配列」が変更されている)場合、または新しい並べ替えられた配列が作成された場合は問題ありません。


2
XMLコマンドライン(シェルスクリプト)の操作
シェルスクリプトのコマンドラインからXMLを操作する方法 表形式のデータを操作したり、環境変数を置き換えたり、テキストフラグメントを正規表現に置き換えたりするためのコマンドはたくさんありますが、XMLについては何も見つかりませんでした。 私のビルドスクリプトは、xmlドキュメントのメインタグ内にコンテンツを含むタグを挿入する必要があり、その目的でOSにjava、perl、またはpythonをインストールするのはやり過ぎです(私のスクリプトは、Dockerイメージを使用してgitlabで行われるため、 maven:3.5-jdk-8画像で利用できるツールでの私の仕事は夢でしょう)。 私のビルドスクリプトで、それが仕事だろうが、それはだから、私は、sedを持つXMLを操作したくない悪。 例:次のxmlがあります。 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- a lot of other tags--> </project> そして、私は次のブロックを挿入したいと思います: <distributionManagement> <repository> <id>private-releases</id> <url>https://my.private.server.com/nexus/repository/maven-releases/</url> </repository> </distributionManagement> プロジェクトタグの内部(そして、それが最初にあるか最後にあるかは完全に問題ではありません。

3
文字列変数によるシェルコマンドの保護
プログラミング言語内で、単純なシェルコマンドを実行します cd var; echo > create_a_file_here varが、私は、ファイル「create_a_file_here」を作成したい場所に(たぶん)ディレクトリの文字列を含む変数であること。これで、誰かがこのコード行を見つけた場合、たとえば、次のコードを割り当てることにより、コードを悪用することが可能です。 var = "; rm -rf /" 物事はかなり醜くなります。上記のケースを回避する1つの方法は、「;」などの特殊文字をvarの文字列で検索することです。シェルコマンドを実行する前に、これはおそらくすべてのエクスプロイトをカバーしているとは思いません。 「cd var」がディレクトリのみを変更し、それ以外は変更しないようにするための良い方法を知っている人はいますか?

7
`source`コマンドの反対
source変数の値を読み取り/印刷するために、bashスクリプトでコマンドを使用します more linuxmachines_mount_point.txt export linuxmachine01="sdb sdc sdf sdd sde sdg" export linuxmachine02="sde sdd sdb sdf sdc" export linuxmachine03="sdb sdd sdc sde sdf" export linuxmachine06="sdb sde sdf sdd" source linuxmachines_mount_point.txt echo $linuxmachine01 sdb sdc sdf sdd sde sdg source変数を設定解除するための反対は何ですか? 予期された結果 echo $linuxmachine01 < no output >

4
フォルダーを同時に移動して再作成するにはどうすればよいですか?
私は、statisticsデータファイルが定期的に格納されるUbuntuサーバーで呼び出されるフォルダーを持っています。新しいファイルを保存するために使用できるようにフォルダを再作成statisticsしbackup-xxながら、フォルダの名前を変更するにはどうすればよいstatisticsですか? statisticsフォルダ内のファイルはPHPによって作成されますfile_put_contents。 フォルダーには多数のファイルがあるため、フォルダーの名前を変更することをお勧めしstatisticsます。

4
シェルプロンプトで引数を出力し、シェルプロンプトでそれらを書き込むように引用できますか?
シェルスクリプトでは、"$@"必要に応じて引用することで、スクリプトの引数に展開されます。たとえば、これはスクリプトの引数をgccに転送します。 gcc -fPIC "$@" <<<ただし、bashのpass-to-stdin構文を使用する"@$"と、期待どおりに機能しません。 #!/bin/bash cat <<< "$@" ./test.sh foo "bar baz"与えられたスクリプトを呼び出す foo bar baz 私は期待します foo "bar baz" シェルプロンプトでそれらを書くように、その引数を出力するシェルスクリプトを書く方法はありますか?たとえば、ヒントにスクリプト引数を含め、次に使用するコマンドに関するヒント。

7
file2から行の正確なブロック(file1の内容)をgrep
2つのファイルがfile1ありfile2ます。 のサンプルコンテンツfile1は次のとおりです。 A B C D E F G H の内容file2は次のようなものです: A B few other lines E F few more other lines A B C D E F G H few more other lines G H したがって、file1コンテンツのブロック全体file2のみを検索したいと考えています。つまり、出力には次の行のみが含まれます。 A B C D E F G H 注意してください:-一緒に来る行のみが出力の一部になるはずです。

5
複数のファイルで最後に出現する文字列を見つける
文字列の最後の出現を見つけるには、複数のログファイル(過去24時間に生成されたすべてのファイル、すべて同じディレクトリに保存されている)を検索する必要があります。これは私が書いたコマンドです: find . -mtime 1 | grep fileprefix | xargs grep 'search string' | tail -1 しかし、これは1つのファイルの最後の行のみを返します。これを調整してすべての行を取得する方法に関する提案はありますか?

5
シェルスクリプト:テキストの途中で文字列を取得します。
大きなテキストファイルがあり、その一部が次のようになっています(編集された値)。 JULIANA XXXX006060 LI1033322 THC BRL 730.00 XXXX006296 AA1004737 THC BRL 1,740.00 SANTOS JULIANA XXXX006668 AA1004786 THC BRL 8,150.00 SANTOS JULIANA CABINDA XXXX006697 AA1004777 THC BRL 2,325.00 SANTOS JULIANA XXXX006699 AA1004790 THC BRL 2,325.00 JULIANA BATA XXXX006141 CCC012946 THC BRL 1,460.00 JULIANA BATA XXXX006153 CCC013054 THC BRL 870.00 JULIANA XXXX006269 …


2
printfが予想より多くの引数を出力するのはなぜですか?
このシェルスクリプトが入力を2回出力するのはなぜですか? スクリプトが5以降の入力を無視することを期待していました。 脚本: #! /bin/bash echo "Enter 5 words : " read a b c d e printf "> %s %s %s %s %s <" $a $b $c $d $e 出力: user@linux:~$ pico ifs2.sh user@linux:~$ ./ifs2.sh Enter 5 words : 1 2 3 4 5 > 1 2 3 4 …

4
CLIを使用して日付でファイルを別のディレクトリに移動する
古いハードドライブから整理しようとしている写真がたくさんあります。を実行するとls -l、これらのすべてのファイルの作成日が2012年以前であることがわかります。理想的には、これらを自動的にマウントするように設定されていない私のコンピューターの2番目のハードドライブに移動したいと思います。できれば、いくつかのコマンドがリンクされたバッチとしてこれをすべて行うことができます。これまでのところ、ls -l | grep -i 2012によって提供された日付で2012のファイルのみを吐き出していますls -l。ここでの秘訣はcp、これらのファイルすべてを新しいディレクトリに配置することです。各ファイルをコピーする必要があるため、これで次にどこへ行くかわかりません。次のコマンドセットは何ですか?


2
ホストが生きているかどうかを確認するシェルコマンド/スクリプト?
シェルコマンド(主にbash)のみを使用して、特定のホストが起動しているかどうかを確認する方法をさらに見つけようとしています。理想的には、ホスト名とIPアドレスの両方で機能することができます。現在、私が知っている唯一のネイティブな方法はping です。ここで説明するように、おそらくスクリプトに統合されています。他のアイデアは?

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