ラベル shell/bash の投稿を表示しています。 すべての投稿を表示
ラベル shell/bash の投稿を表示しています。 すべての投稿を表示

2016/09/26

[mac][bash][shell]cpコマンド その2

相当前にディレクトリをコピーするcpコマンドを書きましたが、ディレクトリーと同様にファイルをコピーすることができて、その場合

cp コピーしたいファイル名 コピーしたファイルを置きたいディレクトリ名
でおk

2016/09/24

[mac][bash]ドット(.)から始まるファイル名を作成したい

ドット(.)から始まるファイル名を作成するにはどうすればいいのだろうか?

Q: .(ドット)で始まるファイル名を作りたい
によると、ターミナルから、コマンドを実行すれば作成することができるみたいで、確かに、

mkdir .hoge
って打ったらドット(.)付きのディレクトリを作ることができました。

2016/09/23

[mac][bash]ターミナルからディレクトリを作成 mkdir

ターミナルからディレクトリを作成したい場合は、どうすればいいのだろうか?
【保存版】Macでターミナルで使える基本のコマンド8選
によると、

mkdir hoge
でおkみたいです。

2016/06/15

[cshell]rmオプションについて

昨日のgit initの取り消しのエントリーでrmコマンドを使ったのですが、オプションの意味を把握してなかったので、ちょっと調べてみることに。

ちなみに、昨日叩いたコマンドはこれ↓

rm -rf .git

【 rm 】 ファイルやディレクトリを削除する
によると
-rはディレクトリ内を再帰的に削除して
-fは警告メッセージを表示しない
とのことなので、
ディレクトリ内を再帰的に削除してかつ警告メッセージを表示しない
ということになります。

2013/03/19

[mac os x][bash]ファイル名を縦一列に表示

昨日に引き続いて今日もbash関連。

ターミナルでlsを打つと2行で表示されてしまうのだが、これを縦1列で表示することはできないのだろうか?

同じことを考えている人がどうやらOKWaveに投稿しておりそれを読むと下のように実行することで1列で表示できるようです。

ls -1
確かに1列で表示されましたー。

これは便利だなー。

2013/03/18

[mac os x][bash]ファイルの数を取得

ターミナルからある特定のディレクトリにあるファイルの数をカウントする必要があったので、方法を調べました。

lsコマンドでファイル数を取得を見ると、下のコマンドを打つといけちゃうようです。

ls | wc -l
おー確かに、取得できたー。

2012/09/19

[shell]cpコマンド

前回に引き続き、今回もFacebook developersでダウンロードしたiOS SDKをインストールした時の話。
Photobucket
pkgファイルのインストールされた先が、

/Documents/

だったのでディレクトリごとコピーをしたのだが、その時使ったコマンドは、
【 ディレクトリごとコピーする 】を参考にしながら、

cp -r コピー元のディレクトリ コピー先のディレクトリ

と指定することによって無事にコピーすることができました。
ファイルベースのコピーは、以前、書いたcpで書いたのですが、ディレクトリベースのコピーは今回、はじめてだったので、改めてエントリーを書きました。

[shell]rmオプションについて

Photobucket
Facebook developersでiOS SDKをダウンロードしたときのこと。

pkgファイルをダウンロードし、インストールを行ったのだが、インストールされた先が、

/Documents/

になっており、気持ち悪かったので、ディレクトリごとコピーして削除することにしました。

削除の時に、前回書いたrmを見ながらターミナル経由で実行したのですが、ディレクトリ内にファイルなどが残っていると削除してくれないようです。

そこで、UNIXの部屋 コマンド検索: rmを読みながら、

rm -rf FacebookSDK

と打って、無事に削除することができました。

これで一安心。

2010/01/08

[cshell]パイプについて

最近、オライリーの正規表現を読んでいるのですが、その延長線上で、unixのshellプログラムを組む時にパイプを誤って正規表現の「or」と解釈してしまいました。

こちらを参考にすると、

A | B | C

Aという処理が完了した後、その結果を元にBを実行し、さらにBが完了しだい、Cを実行するという流れみたいです。

最初、これを読んだ時に、プログラムが横に長くなって不便利なんじゃーないかと思ったのですが、実はそうではなくて、逆に、これを使わずに組むとなると縦に長くしまって余計に煩雑になってしまうんですね。

気をつけたいところです。

2010/01/06

[cshell]特定のファイルがあるかどうか検索

あるディレクトリに特定のファイルがあるかどうか検索したい場合、下記のようなコマンドを打つことで確認することができます。

#!/bin/csh

find /bar -name "hoge*" -print

上のプログラムは、barというフォルダにあるhogeという名前のつくファイルを検索し、検索結果を標準出力せよ

と指示するプログラムです。

""の中では性器表現(失礼、正規表現でした)が適用できるようです。

(こちらを参考にしました。)

ちなみに検索結果をファイルに出力したい場合は、
#!/bin/csh

find /bar -name "hoge*" -print > search_result.txt

みたいな感じで出力できます。

2009/08/18

[cshell]ftp中のコメントについて

cshellでftpコマンドを使う場合に、ftp中にshellのコメントを入れるとエラーになるみたいです。

ftp -n bar.com << _test
user test_user test_password
lcd /bar1
cd /bar2
・・・ちょっと省略・・・

#define

get foo.txt
bye
_test


#defineはコメントなのですが、上を実行すると、エラーになります。

cshellで使われる変数は評価されるみたいなのですが、うーん、ちょっとうなずいちゃうな。

まーいつも通り気にしなきゃーいいんだけど。

2009/06/17

[cshell]rmは

ファイルを削除します。
ただし、オプションがあるので、注意。

2009/06/14

[cshell]cpは

ファイルやディレクトリーをコピーするみたい。
(参考にしたのは、ここ)

ちょっと参考にプログラムを作成してみる。

#!/bin/csh

cp hoge.txt hoge1.txt

実際にこれを実行してみると、ファイルのコピーができました。

2009/06/03

[cshell]ファイルの存在確認

ここのサイトを参考にすると、ifでファイルの存在確認をすることができるみたいです。

ちょっとためしにソースを作ってみました。

#!/bin/csh
if (! -e "hoge.txt") then
echo "ファイルが見つかりません。"
else
echo "ファイルがありました。"
endif

「hoge.txt」というファイルがあった場合、「ファイルがありました。」と表示し、ない場合は、「ファイルが見つかりません。」と表示するのですが、これは便利ですね。

他にも、ファイル検査演算子があるらしく使いこなすのには、ちょっと時間がかかりそうです。

2009/06/02

[cshell]foreach

配列の宣言がわかったので、それをループでまわしてみる事にします。

このサイトを参考にサンプルソースを作ってみました。

#!/bin/csh
set foo = ("a" "b" "c" "d")

foreach i ($foo)
echo "Now is "$i
end

foreachとちょっと話題が離れますが、変数と文字の連結っと特に何も使わずに表示できちゃうんですね。

phpだと「.」やcfだと「&」が必要なのですが。

うーん、言語の仕様的にどうなのだろうか??

連結の場合は、何かわかるように、文字を挟んだ方がわかりやすい気がするのですが。

2009/06/01

[cshell]配列宣言

配列ってどうやって宣言するのかな?

配列にセットするには、以下のようにする。
set 変数名 = ( 値1 値2 値3 ・・・ 値n )
(値の区切りには半角スペースを用いる。半角スペースがデリミタ記号であると考えれば良いだろう)

via:配列について

というわけでさっそく、サンプルソースを作ってみる。

#!/bin/csh
set foo = ("a" "b" "c" "d")
echo $foo[1]

これを実行すると、「a」と表示されました。

最初は1からスタートなんですね。

2009/05/28

[cshell]sql plus接続

同じことを考えている人がいました。

シェルスクリプトを使用してORACLEなどDBへのアクセス・データ操作は可能なのでしょうか?。
・・・以下略

via:シェル(Unix/Linux)を使用してDBアクセス

回答もばっちり書いてありました。
(なんとラッキーな)

#!/bin/sh
sqlplus system/manager@ORACLE_SID >> EOF
select table_name from user_tables;
EOF #必ず行頭に!!
・・・以下略

via:シェル(Unix/Linux)を使用してDBアクセス

これさえメモっておけばオッケーでしょー♪

2009/05/27

[cshell]終了コードについて

一般的に終了コードは、シェル変数statusに格納されるみたいです。

通常,正常終了のときには0を,エラーのときには0以外の値を返すのが習慣です.シェルスクリプトのみならずさまざまなコマンド(機械語プログラム)は終了状態値を返すようになっているものが多く,返された終了コードはシェル変数status に格納されています.

via:Cシェルプログラミング

2009/05/26

[cshell]echoの出力結果をファイルに吐き出す

echoでよく変数を出力させるのですが、ログとしてファイルに残せなることがわかりました。

リダイレクション [>, >>, <]
# コマンドの出力を file へ上書きする
command >file

# コマンドの出力を file へ追記する
command >>file

via:入力と出力

上のサイトでは、commandと書かれていましたが、ここのサイトをみてみると、echoでも差し替え可能みたいです。

ちょっとサンプルを作ってみることに。

#!/bin/csh
echo "Now is `date +%Y:%m:%d:%H:%M:%S`" > "test.log"

これは、現在の時刻を、test.logファイルに書いてくださいねーという内容。

便利なのは、test.logがない場合は、自動的に作成されそこに、書き出してくれること。

逆に既に存在している場合は、上書きされるみたいです。

では次に、

#!/bin/csh
echo "Now is `date +%Y:%m:%d:%H:%M:%S`" >> "test.log"

先ほど、あまり変わっていないのですが、違いは、test.logを上書きするのではなく、どんどん追記していくこと。

これもまた便利なことに、ファイルが存在しない場合は、自動的に作ってくれるところ。

ログ管理を検討する時に、考慮したいかなと。

2009/05/25

[cshell]日付を表示

日付を表示するのにどうしたらよいかと模索。

まず単にターミナルからdateと入力すると、sysdateが表示されます。
(参考サイト)

これをcshell経由で表示したい場合は、

#!/bin/csh
echo "Now is `date`"

ここで注意したいのが「`」(バッククォート)の部分。

これは、ここのサイトを参考にすると、コマンドとして先に実行されるみたいです。
つまり、evaluateみたいな感覚でしょうか。(なんでもschemeにこじつける。)

あと、フォーマットを整えたい場合は、先ほどのサイトを参考にすると、

#!/bin/csh
echo "Now is `date +%Y:%m:%d:%H:%M:%S`"

みたいな感じで書けるみたいです。

ただこの時に注意したいのが、dateとフォーマットの形式の間に「 +」と書かなければいけないこと。

これを例えば、
「date+%Y」と書いてしまうとエラーが起こり、
「date + %Y」と書いてしまうと何も表示されない現象が発生します。

使う時に注意したいです。

(他に参考になったサイト:ターミナルで現在時刻を表示し続ける方法)