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

シェルスクリプトは、オペレーティングシステムのシェルまたはコマンドラインインタープリター用に記述されたスクリプトです。

1
シェルスクリプトの外部で宣言された関数を実行する
現在、私のZSHにはいくつかのソース関数があります。例えば: % declare -f ... a lot of shell functions appears here. 現在、そのリストから特定の関数を呼び出すシェルスクリプトを書いています(prompt_dirOh-My-ZshのPowerlevel9kのテーマから)。 私のスクリプトは次のとおりです。 #!/bin/zsh echo_prompt_segment(){ # bunch of source-code here } zsh_oddeven_dir(){ prompt_dir echo } zsh_oddeven_dir 問題は、私のスクリプトがこれらの機能にアクセスできないことです。 % ./oddeven-pwd.sh zsh_oddeven_dir:1: command not found: prompt_dir declare -fスクリプト内から行うと、スクリプト内には次の2つの関数しかありません。 % ./oddeven-pwd.sh echo_prompt_segment () { } zsh_oddeven_dir () { declare -f } スクリプトの上で宣言された関数にアクセスして実行できますか?もしそうなら、どのように?

1
そのようなファイル、又はディレクトリはありません
サーバーで次のコマンドを実行します。 mongorestore -c basic --drop -v --db my_db -u user -p pass dump/basic.bson 完璧に動作します。 しかし、この1行をスクリプト(sh)ファイルに入れると: Failed: error scanning filesystem: lstat dump/basic.bson そしてもちろん、私はそのようなファイルのかなりの数をそのスクリプトファイルに入れるつもりです。 そのダンプディレクトリの権限も変更しましたが、役に立ちませんでした。おそらく関係ありません。私は見当もつかない。私はここの誰かが持っていると確信しています) 実行しているように見えます: Distributor ID: Debian Description: Debian GNU/Linux 7.8 (wheezy) Release: 7.8 Codename: wheezy いずれにせよ、それはGoogle CloudのVPSです。

2
lsコマンドの色をfindまたはduの出力とマージする方法は?
cwdのファイルとフォルダーのサイズをリストする簡単なエイリアスがあります。 (この場合のドットファイルを含み、ゼロサイズを無視します) du -sh .[!.]* * | sort -hr | grep -v '^0' findでも同様に達成できます: find .[!.]* * -maxdepth 0 -exec du -sh {} \; | sort -hr | grep -v '^0' 出力例: // .ssh & .byobu are folders - .zsh* are files // currently not able to distinguish them by …

1
スクリプトからユーザーコマンドを実行する方法
rootとして実行できないvlcコマンドを実行する必要があります。ルートとしてログインしています。コマンドをスクリプト(shell script)に入れてコマンドを実行したい。これを行うにはどうすればよいですか。私のスクリプトは #!/bin/sh su - user vlc -vvv bigbuck.mp4 --sout '#rtp{dst=99.195.203.99,port=8090,sdp=rtsp://99.195.203.99:8091/test.sdp}' & コマンドプロンプトから私がsu-userを実行し、vlcコマンドを実行すると、動作しますが、シェルスクリプトに入れて動作しません。私を助けてください。

3
SSHとSCPがエラーを出している
私は同じステップをやっています( openSSHでパスワードを入力せずにSSHとSCPを実行する )しかし、scpまたは 'ssh -l'コマンドの実行中は、パスワードの入力を求められます。私が数日前にした同じステップ、それはうまく働いていました、しかし今それは働いていません。 私がしたこと: LOCALとREMOTEの2台のマシンがあります。 どちらのマシンでも、rootユーザーでputtyにログインします。 両方のマシンで、私は 'ssh -V'をチェックしました、両方で同じバージョンの同じ製品を見つけます。 ローカルでは、/ root / .sshフォルダから実行します。 ssh-keygen キーファイル名をappkeyとしました。 5. / root / .sshにappkey、appkey.pubが生成されます。 6.リモートでは、ローカルのappkey.pubのコンテンツをコピーし、リモートのauthorized_keysファイルの最後に貼り付けました。 7.リモートでは、私は実行します chmod 755〜/ .ssh chmod 644〜/ .ssh / authorized_keys ローカルで、私はscpと 'ssh -l'コマンドを実行しようとしました、しかしそれはまだパスワードを求めています。 私は代わりにauthorized_keysファイルを追加する代わりに、私はromote /root/.sshフォルダにappkey.putをコピーした、他の方法を試してみました

1
ファイルをx個所のルールにコピーするスクリプトが満たされている
私は指定されたフォルダを要求する自動化スクリプトを作成したいと思います。 filesが.mkvで、ファイル名に "sample"が含まれておらず、< x位置への2GBのコピー filesが.mkvで、ファイル名に "sample"が含まれておらず、> 2GBをz位置にコピーします。 これらの要件を満たしていないファイルについては、選択した親フォルダと共にファイルを削除する必要があります。

1
どのようにFIND-Eをフィルタします。ファイル名の先頭と末尾を使用してREGEXしますか?
私は現在ファイルのリストを取得するためにこのコマンドを使っています: find -E . -regex '.*\.(jpg|jpeg|png|gif|pdf)' そのコマンドを使用して、私はこのリストを取得します: 今: documentA.pdf documentB.jpeg 001documentC.png ... 私の目的はこのリストをフィルタリングすることなので、私は3つの整数で始まり、以前に設定された拡張子で終わるファイルだけを取得するでしょう。 目標: 001documentC.png コマンドを微調整する方法 find -E . -regex だから私はそのような行動を得るだろうか?私は正規表現文字列を作成しました: ([0-9][0-9][0-9]).*\.(jpg|jpeg|png|gif|pdf)、でテスト済み regexPal.com しかし、findコマンドではうまく動作させることができませんでした。

2
写真をネットワークドライブに自動バックアップ
私の妻のウルトラブックは、写真でいっぱいになりつつあります。私は私たちの写真がすべて入っているNASを持っています。私がやりたいことは、NASにすべての写真を保存すること(簡単)ですが、ウルトラブックには過去12か月からのすべての写真を保管してください。もう一度これを行うことができます。しかし、2つのことを行うスクリプトを実行したいと思います。 NASに置かれた新しい写真を自動的に彼女のウルトラブックに移動します。 ウルトラブックの12か月以上前の写真をすべて削除します(バックアップはNASに残ります)。 #1を両方向にコピーすれば素晴らしいでしょうが、私は一方通行でしか生きられません。もし誰かが私に素晴らしいアイデアをくれたら。私はmsでsynctoyを試しましたが、それはすべてをコピーするでしょう。 ありがとう。私達は窓8を動かします、NASは同義語です。

2
どのようにしてbashで関数入力のためのメタキャラクターを解析しますか
私は入力として*を取得するbashで関数を書きました。そのため、その特定のディレクトリ内のすべてのファイルをリストする必要があります。しかしそうではありません。 これが私が書いたものです: # a function that mass deletes files in a directory but asks before deleting yrm() { echo "The following files are going to be deleted:" ls "${1}" read -e -n 1 -p "Do you want to delete these files? Y/n" ANSWER ${ANSWER:="n"} 2> /dev/null if [ $ANSWER == …

1
Macパッケージのpostinstallスクリプトが実行されていません
私は、私がscriptsディレクトリとpostinstallスクリプトを指定したパッケージメーカーとスクリプトからインストーラを作成しました。パッケージをインストールすると、アプリケーションは正常にインストールされますが、指定したスクリプトは実行されません。どこかで実行可能ビットを設定する必要がありますが、私はこのビットを設定することを見つけられませんでした。 以下は私のスクリプトです。これで私はplistでパス変数を設定しています。これを教えてください。 #!/bin/bash FILE=~/.MacOSX/environment.plist PLIST=/usr/libexec/PlistBuddy # if the file doesn't exist, try to create folder if [ ! -f $FILE ] then mkdir -p ~/.MacOSX fi # then just add entries (file will be created if it doesn't exist) $PLIST -c "Add :Variable1 string 'Value1'" $FILE $PLIST -c "Add :Variable2 …

0
ドメイン名リストのipを取得するシェルスクリプト:接続がタイムアウトしました。サーバーに到達できませんでした
私はコマンドを実行する必要がありますWeb内のいくつかのソースからの次のスクリプトがあります host ファイル内のドメイン名のIPアドレスを取得する myfile.txt。スクリプトは次のとおりです。 #! /bin/bash while read hostname; do ip=`host $hostname` if [ $? -eq 0 ]; then echo $ip else echo "UNKNOWN" fi done < myfile.txt 1)このスクリプトのしくみを教えてください。私はif文が何をするのかわかりません。また全体的に説明できますか? 2)いくつかの出力はこのようになります。 somesite.com has address 1.2.3.4 ;; connection timed out; no servers could be reached あなたは私に言うことができます後のIPは何ですか? has address サーバーにアクセスできない場合はどうなりますか?する host コマンドは、サーバーに接続しようとするか、単にDNSからそのIPを取得しますか? どうか明らかにしてください。

6
ファイル内の文字列を検索するより良い方法は?
ハードドライブのどこかのファイルで特定のテキスト文字列を見つけようとしています。これまでに思いついた最高のものは: find -type f / | xargs cat | grep "string to find" しかし、これは文字列がどこかに存在するかどうかを教えてくれます。 見つけたファイルを知るにはどうすればよいですか? もっと良い方法はありますか?

0
Powershellスクリプトの読み込みに時間がかかる
単純なPowerShellスクリプトの実行に数十秒以上かかるのはなぜですか? スクリプト全体(test-slow.ps1)は次のとおりです。 write-host "test" コマンドプロンプトから次のように呼び出します。 >echo %TIME% 15:07:12.64 >powershell .\test-slow.ps1 test >echo %TIME% 15:07:26.81 cmdプロンプトからpowershellインスタンスを起動し、そのインスタンス内からこの単純なスクリプトを実行した場合、違いはありません(または、他の何かがまだ間違っているという意味です)。 システム情報: PS> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 5 0 10240 16384 >systeminfo | findstr /B /C:"OS Name" /C:"OS Version" OS Name: Microsoft Windows 10 Pro OS Version: 10.0.10240 N/A Build 10240 …

1
読み取り用に `'を開けません:そのようなファイルまたはディレクトリはありません
RH6で.shファイルを実行しようとして、このエラーが発生しています... cannot open '' for reading: No such file or directory 私が実行しているスクリプトは、同じディレクトリにある他のスクリプトを内部的に参照しています。を使用して表示できますls -la。 注:このスクリプトはRH4で完全に正常に動作しています。スクリプトを実行しようとしている新しい新しいRH6マシンを入手しました。 abc.sh下記の私のスクリプト . fox_comm_server_details.sh . fox_comm_topic_names.sh . fox_comm_sh_tools.sh 他のスクリプト(.sh)ファイルを参照します。 私がabc.shを(withで./abc.sh)実行すると、 fox_comm_server_details.sh: cannot open [No such file or directory] 必要なスクリプトがディレクトリに存在することを確認し、それらに対する権限を持っています。abc.sh以下のように更新した場合... . ./fox_comm_server_details.sh . ./fox_comm_topic_names.sh . ./fox_comm_sh_tools.sh 今回は、ファイルの欠落について不平を言っているのではなく、以下で説明するようにいくつかの異なるエラーがあります... read_fox_comm_servers_list[134]: read_fox_comm_servers_list_defaults[37]: local: not found [No such file or directory] read_fox_comm_servers_listそして、次のようにread_fox_comm_servers_list_defaults定義されfox_comm_sh_tools.shている関数です... …

1
bashシェルエラーをファイルに保存する
chmodファイルを作成するときにエラーを保存しようとしています。私はコマンドを実行しています: chmod -R 766 * > chmod-errors.txt しかし、それは機能しません。私も試しました chmod -R 766 * | cat > chmod-errors.txt 私は何を間違えていますか?

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