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 //只截取x和y,其他的都是/?
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.3でShift_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
赤文字のaddrのIPを確認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
- knowhow linux
- Linux 命令 Knowhow
- 内核编译常见错误排除 knowhow
- 提高PHP效率的50点KnowHow
- linux
- linux
- Linux
- Linux
- LINUX!
- Linux
- linux
- linux
- linux
- Linux
- linux
- linux
- linux
- linux
- 你怀念谷歌么?为什么?
- 南非世界杯主题曲:Waving Flag
- 进程管理命令 tskill,tasklist
- 安装ORACLE 11G 报找不到EM.EAR包
- 面试技巧
- knowhow linux
- 已知开始工作时间和工作日期计算工作日结束时间
- 让flash自动显示代码提示的两种方式
- 不要做一个浮躁的程序员
- 为何合众达 DM642 捕获和显示的SDRAM区为何要留720*588的大小?
- 计算变为人们梦寐以求的公用设施
- 2009年下半年信息系统项目管理师下午I案例分析答案之三
- informix安装配置
- 选择文件路径--浏览控件