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

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


2
ディレクトリを指すシンボリックリンクを作成するために使用できるべき等べきコマンドは何ですか?
ディレクトリへのシンボリックリンクを作成するシェルスクリプトにコマンドを配置したいのですが、このスクリプトは何度も実行される可能性があるため、以降の呼び出しでは、コマンドは何も変更しません。 ディレクトリ構造は次のとおりです。 % tree /tmp/test_symlink /tmp/test_symlink ├── foo └── repo └── resources └── snippets ├── php.snippets ├── sh.snippets ├── snippets.snippets ├── sql.snippets └── vim.snippets foo/ディレクトリを指すスニペットと呼ばれるシンボリックリンクを作成したいと思います/tmp/test_symlink/repo/resources/snippets。 だから私は実行します: % ln -sfv /tmp/test_symlink/repo/resources/snippets /tmp/test_symlink/foo/snippets '/tmp/test_symlink/foo/snippets' -> '/tmp/test_symlink/repo/resources/snippets' 望ましい結果が得られます。 % tree /tmp/test_symlink /tmp/test_symlink ├── foo │ └── snippets -> /tmp/test_symlink/repo/resources/snippets └── repo └── resources …


4
Linuxでシェルスクリプトを使用してすべてのファイル名のスペースをアンダースコアに置き換える方法は?
すべてのXMLファイル名のスペースを置き換えるシェルスクリプトを試してみました for xml_file in $(find $1 -name "* .xml" -type f); do echo "removing spaces from XML file:" $xml_file mv "$xml_file" "${xml_file// /_}"; done という名前のxmlファイルがありxy z.xml、次のようになっているとします。 removing spaces from XML file: /home/krishna/test/xy mv: cannot stat `/home/krishna/test/xy': No such file or directory removing spaces from XML file: .xml mv: cannot stat …

1
zshでスクリプトを実行する-ファイルのアクセス許可
私は期待どおりに動作しないファイルの実行権限について混乱しています。おそらく私の期待が間違っているためです。とにかく: スクリプトファイルがあります。簡単にするためs、にあり~/binます。この例のために、ファイルには次の行のみが含まれています。 #!/bin/zsh echo "Test"; とても簡単です。 私はに移動し~/bin、ディレクトリ、およびchmod、ファイルのパーミッションsに400-すなわち、読み取り専用私のためだけ。実行許可なし。そのため、パスを入力してスクリプトを実行し、次のようにします。 % ./s zsh: permission denied: ./s ここまでは順調ですね。権限が間違っているため、ファイルを実行できません。500(実行されたアクセス許可が付与されている)までのアクセス許可のバンプも正常に機能します-これらのアクセス許可を使用すると、ファイルは正常に実行されます % ./s Test これはすべて予想どおりです。しかし、その後、私は(再度許可を実行する)にchmod戻って許可を与え、ファイルを400試してみるsourceと、これが起こります: % source s Test 権限はですが400、スクリプトが実行されます。 だからここに私の質問があります:なぜ./s失敗するのですか(そうするべきです)がsource s正常に実行されますか?これは、実行許可の全体的な目的に反しませんか? 400権限、sh sおよびzsh sまた仕事。 私はどこか恐ろしく間違っていることをしている、または理解していると確信しています。缶誰かのポイント私に場所を、との違いを説明し./s、source s、sh sとzsh s?

4
sedを使用したbash変数の処理
bash変数LATLNGには、そのような括弧内に緯度と経度の値が含まれています (53.3096,-6.28396) 私はこれらをLATとLONと呼ばれる変数に解析したいので、sedを介してそうしようとしています LAT=$(sed "s/(\(.*\),\(.*\))/\1/g" "$LATLNG") LON=$(sed "s/(\(.*\),\(.*\))/\2/g" "$LATLNG") ただし、次のエラーが表示されます。 sed: can't read (53.3096,-6.28396): No such file or directory

4
変数をループする
約20の異なるサーバーでrsyncを使用してファイルを更新するbashスクリプトを書いています。 rsyncの部分を把握しました。私が問題を抱えているのは、変数のリストを調べることです。 これまでの私のスクリプトは次のようになります。 #!/bin/bash SERVER1="192.xxx.xxx.2" SERVER2="192.xxx.xxx.3" SERVER3="192.xxx.xxx.4" SERVER4="192.xxx.xxx.5" SERVER5="192.xxx.xxx.6" SERVER6="192.xxx.xxx.7" for ((i=1; i<7; i++)) do echo [Server IP Address] done どこ [Server IP Address]関連する変数の値はべきか。したがって、i = 1の場合、$ SERVER1の値をエコーする必要があります。 これを含むいくつかの反復を試しました echo "$SERVER$i" # printed the value of i echo "SERVER$i" # printer "SERVER" plus the value of i ex: SERVER 1 where …




3
ディレクトリパスの最後のスラッシュを取り除く方法は?
1つの引数としてディレクトリを必要とするスクリプトがあります。2つの形式をサポートしたい:1つは a/b/c (最後にスラッシュはありません)そして別のものは a/b/c/ (最後にスラッシュがあります)。 私の質問:2つの形式のいずれかが与えられた場合、最初の形式を変更せずに保持し、2番目の形式の最後のスラッシュを削除して最初の形式に変換する方法を教えてください。

5
特定のフォルダーまでCDをバッシュアップする
私はMagentoで多くの仕事をしているので、一緒に仕事をしている多くの人たちと同じように入力しなければなりません。 cd ../../../../../../ ルート 'httpdocs'フォルダからまだいくつかのディレクトリだけを見つけるために、この擬似コードに続くスクリプトを作成しようとしています。 while lowest level directory != httpdocs cd ../ end while; かなり単純に思えますが、現在の作業ディレクトリの最後の部分がhttpdocsであるかどうかをチェックするために、何らかの形でgrepを実行する必要があると仮定しています。 私はこのためにbashを学ぶことを検討してきましたが、すでに似たようなものがすでに存在している必要があるように思われます。




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