端末に貼り付けて、順番に実行したいコマンドのリストがあります。
最初はうまくいきましたが、コマンドは切り捨てられました。
コマンド例:
ogr2ogr -nlt PROMOTE_TO_MULTI -progress -skipfailures -overwrite -lco PRECISION=no -f PostgreSQL PG:"dbname='natural_earth' host='localhost' port='5432' user='natural_earth' password='natural_earth'" 50m_physical/ne_50m_lakes.shp
これらのコマンドのうち約150個があり、改行文字がオフの状態でgeditに保存され、端末にブロックとして直接貼り付けられます。
予想される結果:
$ ogr2ogr -nlt PROMOTE_TO_MULTI -progress -skipfailures -overwrite -lco PRECISION=no -f PostgreSQL PG:"dbname='natural_earth' host='localhost' port='5432' user='natural_earth' password='natural_earth'" 50m_physical/ne_50m_lakes.shp
0...10...20...30...40...50...60...70...80...90...100 - done.
これは最初の30のコマンドに対して機能し、それ以降はコマンドの切り捨てレベルが異なります。たとえば、次のようになります。
$ ogr2o
ogr2o: command not found
$ ogr
ogr: command not found
$ ogr2ogr -nlt PROMOTE_TO_MULTI -progress -skipfailures -overwrite -lco PRECISION=no -f PostgreSQL PG:"dbname='natural_earth' host='localhost' port='5432' user='natural_earth' password='natural_earth'" 50m_physical/ne_50m_graticules_all/ne_50m_grati
FAILURE:
Unable to open datasource `50m_physical/ne_50m_graticules_all/ne_50m_grati'
だから私はLinuxに初めて触れました。 geditからコピーして貼り付けるよりも実行するより良い方法があるかどうか疑問に思います。
私はLinux Mint 15 "olivia" Cinnamon 32ビットを実行しています。
答え1
実行したいコマンドを特別なファイルに入れ、シェルスクリプトとして実行します。引数を使用してシェルを呼び出すと、次のようになります。
sh your_commands
または、コマンドの前に追加します。ハッシュボーンそしてファイルを実行可能としてマークしますchmod a+x your_commands
。
#!/bin/sh
your commands
go
here
これにより、通常のバイナリのように動作し、次を実行できます。
/path/to/your_commands
source
あるいは、現在のシェル内のファイルからコマンドを実行するシェルの機能を使用できます(上記の2つのシェルが実行するアクションである新しいシェルを作成する代わりに)。
source your_commands
または
. your_commands
(どちらも同じ意味です。)
答え2
Stack Exchangeへようこそ。 Linux Mintへようこそ!
端末に貼り付けるよりも長いコマンドリストを実行するより良い方法があるかどうか尋ねました。やはりコマンドをファイルに保存し、シェルスクリプトとして実行します。
たとえば、コマンドを~/scripts/myscript.sh
(~
はホームディレクトリの略語)に保存する場合は、次のように入力して実行できます。
# change directory to where the script is
cd ~/scripts
# run the script with bash (most scripts are bash scripts)
bash myscript.sh
作業ディレクトリに注意してください
注意点:実行するディレクトリがbash myscript.sh
作業ディレクトリとして使用されます。スクリプトが50m_physical/lakes.sh
ディレクトリ内のファイルについて話している場合、~/mylakesproject
これはうまくいきます。
cd mylakesproject
bash ~/scripts/myscript.sh
# ~/mylakesproject/50m_physical/lakes.sh exists
これはうまくいきません:
cd myotherproject
bash ~/scripts/myscript.sh
# ~/myotherproject/50m_physical/lakes.sh does not exist
これも同様です。
cd scripts
bash myscript.sh
# ~/scripts/50m_physical/lakes.sh does not exist
頑張って楽しく過ごせます!