knowhow linux

来源:互联网 发布:女生头发加密手术 知乎 编辑:程序博客网 时间:2024/06/04 17:56

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