最近Linuxの使用を開始しました。次のことを行うスクリプトを作成したいと思います。
これを行うスクリプトを作成するにはどうすればよいですか?また、フルパスを使用せずに任意の端末から呼び出すことができるスクリプトを作成するにはどうすればよいですか?つまり、たとえば/ usr/home/document/gen-work-planではなくgen-work-planと入力するだけです...
誰も私がこれを行う方法を知っていますか?
回答の投稿に抵抗できませんでした...
ファイルを作成するには、現在の日付をタイトルとして、ヘッダーを内部に使用して、1行または2行を取ります。ただし、必要な場合:
...それよりも数行多くかかります。
以下のスクリプトは:
次のように、ファイルに現在の日付を追加します。
Workplan 12-12-12
gedit
でファイルを開き、ウィンドウが表示されるのを待って(!)、ウィンドウを左上に移動し、サイズを50%(幅)、100%(高さ)に変更します
#!/usr/bin/env python3
import time
import subprocess
import os
import time
# --- add the absolute path to the directory where you'd like to store the Workplans
filedir = "/home/jacob"
# ---
curr = "Workplan "+time.strftime("%d-%m-%Y"); out = curr+".txt"
file = os.path.join(filedir, out)
# check for the file to exist (you wouldn't overwrite it)
if not os.path.exists(file):
# write "Workplan" + date to the file
open(file, "wt").write(curr)
# open the file with gedit
subprocess.Popen(["gedit", file])
# wait for the window to appear, move/resize it
t = 0
while t < 20:
t += 1; time.sleep(1)
wlist = subprocess.check_output(["wmctrl", "-l"]).decode("utf-8")
if out in wlist:
w = [l.split()[0] for l in wlist.splitlines() if out in l][0]
for cmd in [["xdotool", "windowmove", w, "0", "0"],
["xdotool", "windowsize", w, "47%", "100%"]]:
subprocess.call(cmd)
break
スクリプトにはxdotool
とwmctrl
の両方が必要です。
Sudo apt-get install xdotool wmctrl
~/bin
にworkplan
(拡張子なし!)として保存します。 ~/bin
がまだ存在しない場合は作成します。 スクリプトを実行可能にします。スクリプトの先頭で、(絶対!)パスを設定して作業計画を保存します:
# --- set the abs. path to where you'd like to store the "Workplans"
filedir = "/home/jacob/Bureaublad"
# ---
ログアウトして再度ログインし、次のコマンドを実行します:
workplan
Pythonでファイルを作成するには、単純に次を使用できます。
open("file", "wt").write("sometext")
movingおよびresizingの場合、ウィンドウが出力に表示されるかどうかを確認して、ウィンドウが表示されるのを待つ必要があります。コマンド:
wmctrl -l
スクリプト内:
while t < 20:
t += 1; time.sleep(1)
wlist = subprocess.check_output(["wmctrl", "-l"]).decode("utf-8")
if out in wlist:
次に、ウィンドウが存在するようになったら、ウィンドウID(wmctrl -l
の出力の行の最初の文字列)を分割し、ウィンドウを左上に移動してサイズを変更します。
w = [l.split()[0] for l in wlist.splitlines() if curr in l][0]
for cmd in [["xdotool", "windowmove", w, "0", "0"],
["xdotool", "windowsize", w, "47%", "100%"]]:
subprocess.call(cmd)
break
何かのようなもの:
#!/bin/bash
today=$(date "+%Y-%m-%d")
echo "Work Plan $today" > work_plan_"$today"
gedit work_plan_"$today"
chmod +x gen-work-plan
で実行可能にすることを忘れないでください。
パスなしで実行するには、スクリプトを含むディレクトリを$PATH
の~/.bashrc
に追加します(セキュリティ上推奨):
export PATH=$PATH:_Location_of_the_file_
または、/usr/bin
でシンボリックリンクします:
ln -s _location_/gen-work-plan /usr/bin/gen-work-plan
これは私が使用するシンプルなbashスクリプトです
#!/bin/bash
dat=$(date "+%Y-%m-%d")
touch work_plan_$dat
echo "Work Plan $dat" > work_plan_$dat
if [ -f work_plan_$dat ]; then
echo "Successfully created file work_plan_$dat"
fi
gedit work_plan_$dat
このスクリプトをパスなしで実行するには、その場所を$PATH
環境変数に含める必要があります。あなたはこの行でそれを行うことができます
PATH=/an/example/path:"$PATH"
この行を~/.bashrc
ファイルに追加できます
[〜#〜] or [〜#〜]
このコマンドでシンボリックリンクを作成できます
Sudo ln -s /full/path/to/your/file /usr/local/bin/name_of_new_command
その後、ファイルが実行可能であることを確認し、必要に応じて次のコマンドを実行します
chmod +x /full/path/to/your/file
この回答に対するc0rpのクレジット https://askubuntu.com/users/164083/c0rp
ソース、以下のリンクを参照してください