knowhow linux

LINUX

BASH

hello="A B C D"

echo "$hello" # A B C D

echo '$hello'  # $hello

單引用作用將會"$"被解釋爲單獨的字符,而不是量前.

c=`ls -l`        # 'ls -l'賦值給'a'

1.           echo $c          #然而, 如果沒有引號的將會ls果中多餘的tab行符.

2.           echo "$c"        #如果加上引號的, 那麼就會保留ls果中的空白符.

 

1.           #!/bin/bash

2.           for i in 7 9 2 4 5 12

3.           do

4.           echo $i

5.           done | sort -n

6.           exit 0

 

1.           #!/bin/bash

2.           # /etc/fstab.

3.           File=/etc/fstab

4.           {

5.             read line1

6.             read line2

7.           } < $File

8.           echo "First line in $File is:"

9.           echo "$line1"

10.         echo "Second line in $File is:"

11.         echo "$line2"

 

1.           # /etc/fstab.

2.           File=/etc/fstab

3.           {

4.             read line1

5.             read line2

6.           } < $File

2-8: 將所有找到的文件(在工作目24內修改的文件)打一個包

1.           #!/bin/bash   

2.           tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`

將一個文件描述符出到另一個文件描述符

1.           #!/bin/bash

2.           exec 4>out.txt

3.           exec 5>&4

4.           date 1>&5

 

* 置只讀變 $ var=value
             $ readonly var      #
var只可操作,不可修改

             $ readonly         #
直接readonly示所有隻讀變

 

[root@redflag ~]# read [-pt] variable

     -p:後面接提示字符

     -t 後面可以接等待的秒數。

    例如:

    [root@redflag ~]# read -p "Please keyin your name: " -t 30 named

1) ${var:-value}:如果var未定,返回一個默認值

     如果var存在且非空,表達式${var:-value}值爲$var;如果var未定,表達式${var:-value}value

 

置方式

str沒有

str空字符串

Str非空字符串

var=${str-expr}

var=expr

var=

var=$str

var=${str:-expr}

var=expr

var=expr

var=$str

var=${str+expr}

var=

var=expr

var=expr

var=${str:+expr}

var=

var=

var=expr

var=${str=expr}

str=expr

var=expr

str

var=

str

var=$str

var=${str:=expr}

str=expr

var=expr

str=expr

var=expr

str

var=$str

var=${str?expr}

expr出至stderr

var=

var=$str

var=${str:?expr}

expr出至stderr

expr出至stderr

var=$str

 

 

 

 

 

量的置方式

${量名#}

量從開始符合關字,將符合的最短內容

${量名##}

量內容從開始符合關字,將符合的最內容

${量名%}

量從尾向前的內容開始符合關字,將符合的最短內容

${量名%%}

量從尾向前的內容開始符合關字,將符合的最內容

${量名/old/new}

量內容符合old字符串,第一個舊字符串被新字符串取代

${量名/old/new}

量內容符合old字符串,所有舊字符串被新字符串取代

         

 

#!/bin/bash
echo "$0 $1 and $2"
echo "The number of para is $#"
set Jake Nicky Scott
echo "Para number is :$#All the para is :$*"

 

$$: shell程的PID

$!:
後臺運行的程的PID

$?:
退出狀

1.           while getopts xy options 2>/dev/null //只截取xy,其他的都是/

2.           do

3.               case $options in

4.                   x) echo "you entered x ";;

5.                   y) echo "you entered y" ;;

6.                   /?) echo "only -x and -y are valid options "  1>&2 ;;

7.               esac

8.           done

9.           exit 0

局部

1.           pearFunc () {

2.           typeset pear=2 # local pear=2

3.           echo "In pearFunc():pear is $pear"

4.           }

Bash Shell 調試

bash -n 腳本名
但不行腳本中的命令,通常用來檢查

bash -v
腳本名
示腳本中的所有行

bash -x
腳本名
量替(如果有的),行命令之前,命令

set -x
跟蹤腳本的

set +x
腳本跟蹤功能

 

 

最有用的命令

#tail -f /var/log/httpd/access_log #監視Apache訪問

basename ls –ltr ⇒結果:ls

 

last

例如,我們想在/etc目錄中查找大於500000字節,並且在24小時內修改的某個文件,則可以使用-and ()把兩個查找參數鏈接起來組合成一個混合的查找方式。
find /etc -size +500000c -and -mtime +1

 

network

1.           配置一臺主機的網絡實,其內容包括:網關,DNS,IP地址,子網掩
實現方式有兩種
:
,直接修改/etc/sysconfig/network-scripts/ifcfg-eth0文件

DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.100.3
GATEWAY=255.255.255.0
BROADCAST=192.168.100.254
ONBOOT=yes
添加
DNS
修改
:/etc/resolv.conf
  nameserver 192.168.100.1
修改主機名/etc/sysconfig/network

HOSTNAME=myhost
瞭解析本機的NetBISO,可將/etc/hosts文件修改如下內容
:
192.168.100.3   myhost
#!/bin/bash

2.           # findstring.sh:

3.           # 在一個指定目的所有文件中找一個特定的字符串.

4.            

5.           directory=/usr/bin/

6.           fstring="Free Software Foundation" # 看哪個文件中包含FSF.

7.            

8.           for file in $( find $directory -type f -name '*' | sort )

9.           do

10.         strings -f $file | grep "$fstring" | sed -e "s%$directory%%"

11.         # "sed"表達式中, 掉正常的替分隔符"/", "/"碰巧是我需要過濾的字符串之一.

12.         # 如果不用"%"代替"/"分隔符,那麼個操作將失,出一個錯誤消息.().

13.         done

14.         exit 0


了使用服生效,行腳本:/etc/init.d/network restart即可.

VIM

 

在某個用下,LINUX上運行vncserver

Vnc密碼:123456

重定向

  cmd > file 2>&1 stdout stderr 一起重定向到 file 文件中;

  cmd 2> file stderr 重定向到 file 文件中;

  cmd 2>> file stderr 重定向到 file 文件中(追加)

  cmd >> file 2>&1 stderr stderr 一起重定向到 file 文件中(追加)

 

gdb

set args

show args

bt (查看堆棧)

p (變量名) – 編譯時要加-g

r

n

c

q

 

route add -net 192.168.2.0/24 eth0

 

oracle listen start だめ。/etc/hostsに必ず以下のものを存在すべき。

Localhost localhost.domain

 

CentOS 5.3Shift_JISを使いたい

まず、ロケルデータがあるかチェック

1

# ls -l /usr/lib/locale/ja_JP.SJIS

ディレクトリが存在しない場合は、

 

 

1

# localedef -f SHIFT_JIS -i ja_JP /usr/lib/locale/ja_JP.SJIS

その後、

?

1

# vi /etc/sysconfig/i18n

2

LANG="ja_JP.SJIS"

 

3

SUPPORTED="ja_JP.SJIS:ja_JP:ja"

4

SYSFONT="latarcyrheb-sun16"

で、再ログインするとShift_JISがデフォルトの文字コードになっている。

# nslookup google.com

下記の返答がかえってきたら、ミラーを引きにいけてないので、ネットワークの設定を疑う

;; connection timed out; no servers could be reached

IPアドレスを確認

# ifconfig
eth0      Link encap:Ethernet  HWaddr **:**:**:**:**:**
inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:44 errors:0 dropped:0 overruns:0 frame:1
          TX packets:81 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4045 (3.9 KiB)  TX bytes:14779 (14.4 KiB)
          Interrupt:177

赤文字のaddrIPを確認K

デフォルトゲートウェイを確認

#vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
GETWAT=172.28.139.1

ちゃんとむき先はあっているのか確認

名前解決の設定確認

# vi /etc/resolv.conf
nameserver 172.28.138.11

 

使用ISO文件建立本地yum倉庫

2009-08-26 13:51

Yum 倉庫

了避免從網載軟件包可能生的件包不完整、下速度慢、網故障等問題,我們強烈建您使用本地的 DVD/CD iso yum 倉庫這樣在安裝的候速度快,而且可以保所有件包都能利安裝。

下面的操作都是在您安裝好 RHEL/CentOS 行的。

先從光安裝createrepo工具,以及網工具 wget

# rpm -ivh rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm
# rpm -ivh wget-1.10.2-7.el5.i386.rpm

createrepo命令用於生成 yum倉庫所必的一些信息,些信息都存放在 repodata/ 底下,您打開看看就會明白它做了些什麼事情。

如果您使用的是官方的 DVD ISO需要將它複製到系上,掛後製作 yum 倉庫

# mkdir /mnt/cdrom/
# mount -o loop /home/OS/CentOS/CentOS-5.2-i386-bin-DVD.iso /mnt/cdrom/
# cd /mnt
# createrepo .

如果您使用的是多個 CD iso 文件,需要先複製到系上,掛後製作 yum 倉庫

有幾個 ISO 建幾個目,並將對應 ISO 上去:

# mkdir -p /mnt/{1,2,3,4,5,6}
# mount -o loop /home/OS/CentOS/CentOS5.2-disc1.iso /mnt/1
# mount -o loop /home/OS/CentOS/CentOS5.2-disc2.iso /mnt/2
# mount -o loop /home/OS/CentOS/CentOS5.2-disc3.iso /mnt/3
# mount -o loop /home/OS/CentOS/CentOS5.2-disc4.iso /mnt/4
# mount -o loop /home/OS/CentOS/CentOS5.2-disc5.iso /mnt/5

yum 倉庫

# cd /mnt/
# createrepo .

清空並重新定 yum倉庫

/etc/yum.repos.d/下面的文件全部除:

# rm -f /etc/yum.repos.d/*

建新的yum倉庫的定文件:/etc/yum.repos.d/dvdiso.repo,然後加入以下內容:

[DVDISO]
name=DVD ISO
baseurl=file:///mnt/
enabled=1
gpgcheck=0

'yum clean all' 命令,將所有 yum metadata 等信息清空,再重新取最新的倉庫信息:

# yum clean all
# yum list

如果在 'yum list' 命令的出中能看到才製作的倉庫裏的件包的名字,那就是 OK 了。着安裝一個件包看是否成功:

# yum install mysql-server

rpm -ql kdevelop-3.3.4-1.fc6

Debug:kdbg-2.0.2-1.2.1.rpm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章