都是一些零散的小知识,在学习中不断完善。
知识一.
解释执行:执行效率高,但与平台有关。
编译执行:执行效率低,但具有平台无关性。
知识二.
gcc –Wall 选项:让GCC提供所有的警告信息。
知识三.
字符常量用单引号括起来,eg‘}’ (注意:单引号只能括一个字符)
知识四.
在UNIX系统中,管道是一种先进先出的单向数据通路。利用管道符号“|”,可以把一个命令的标准输出连接到另一个命令的标准输入。
eg ls /usr | wc –w
(“-w”选项表示以字为单位进行计数)
知识五.
return 0 成功完成
return 非0 失败
知识六.
重定向输出:
eg ls –l > lsoutput.txt
(把 ls 命令的输出保存到文件lsoutput.txt中,若文件已存在,则覆盖原文件)
eg ls –l >> lsoutput.txt
(把 ls 命令的输出保存到文件lsoutput.txt中,若文件已存在,则将信息添加到文件尾部)
知识七.
linux的通用“回收站”/dev/null来有效地丢弃所有的输出信息,如下所示:
kill –l 1234 > /dev/null 2>&1
(这条命令将把标准输出和标准错误输出都重定向到同一个文件中,注意操作符出现的顺序,这条命令的含义是“将标准输出重定向到文件/dev/null,然后将标准错误输出重定向到与标准输出相同的地方。”)
知识八.
grep –l POSIX * | more
(搜索并输出当前目录下包含POSIX字符串的文件名)
知识九.
一般情况下,linux和UNIX很少利用文件扩展名来决定文件的类型。你可以为脚本使用.sh或者其他扩展名,但shell并不关心这一点。大多数预安装的脚本程序并没有使用任何文件扩展名,检查这些文件是否是脚本程序的最好方法是使用file命令,例如,file testshell 或 file /bin/bash。
知识十.
当编辑完shell文件(例如文件名为test)后,要用chmod +x test命令把它设置为可执行。
知识十一.
因为test命令在shell脚本程序以外用的很少,所以那些很少编写shell脚本的linux用户往往会将自己编写的简单程序命名为test。如果程序不能正常工作,很可能是因为它与shell中的test命令发生了冲突。(以后别用test做为文件名了)
知识十二.
一般来说,如果需要循环至少执行一次,那么就使用while循环;如果可能根本都不需要执行循环,就使用until循环。
知识十三.
linux指令:touch file_one (检查文件file_one是否存在,如果不存在就创建它)
rm –f file_two (强制删除文件file_two,忽略不存在的文件,不提示确认)
知识十四.
echo命令总是返回true
知识十五.
kill命令:当需要中断一个前台进程的时候,通常是使用< Ctrl+c >组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于kill命令。该命令可以终止后台进程。kill命令是通过向进程发送指定的信号来结束进程的。如果没有指定发送信号,那么默认值为TERM信号。TERM信号将终止所有不能捕获该信号的进程。至于那些可以捕获该信号的进程可能就需要使用kill(9)信号了,该信号是不能被捕捉的。
kill命令的语法格式很简单,大致有以下两种方式:
kill [-s 信号 | -p ] [ -a ]进程号 ...
kill -l [信号]
-s 指定需要送出的信号。既可以是信号名也可以对应数字。
-p 指定kill命令只是显示进程的pid,并不真正送出结束信号。
-l 显示信号名称列表,这也可以在/usr/include/linux/signal.h文件中找到。
应用实例一:
(1)强行中止(经常使用杀掉)一个进程标识号为324的进程:
#kill-9324
知识十六.
Linux下NAT操作:
案例
1.源NAT(SNAT)
比如,更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0-j SNAT --to1.2.3.4
系统在路由及过虑等处理直到数据包要被送出时才进行SNAT。
有一种SNAT的特殊情况是ip欺骗,也就是所谓的Masquerading,通常建议在使用拨号上网的时候使用,或者说在合法ip地址不固定的情况下使用。比如
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
2.目的NAT(DNAT)
比如,更改所有来自192.168.1.0/24的数据包的目的ip地址为1.2.3.4:
iptables -t nat-A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT --to1.2.3.4
系统是先进行DNAT,然后才进行路由及过虑等操作。
有一种DNAT的特殊情况是重定向,也就是所谓的Redirection,这时候就相当于将符合条件的数据包的目的ip地址改为数据包进入系统时的网络接口的ip地址。通常是在与squid配置形成透明代理时使用,假设squid的监听端口是3128,我们可以通过以下语句来将来自192.168.1.0/24,目的端口为80的数据包重定向到squid监听
端口:
iptables -t nat-A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT--to-port 3128
知识十七.
linux 指令:ifconfig -a -----在所有接口报告的选项
netstat -in -----n e t s t a t( 1 )命令也提供系统上的接口信息。- i参数将打印出接口信息,-n参数则打印出I P地址,而不是主机名字。
arp -a
-----用来检查arp高速缓存存放了最近I n t e r n e t地址到硬件地址之间的映射记录,参数-a的意思是显示高速缓存中所有的内容。
添加路由表中的表项:
route add default sun 1
route add slip bsdi 1
第3个参数(d e f a u l t和s l i p)代表目的端,第4个参数代表网关(路由器),最后一个参数代表路由的度量( m e t r i c )。r o u t e命令在度量值大于0时要为该路由设置G标志,否则,当耗费值为0时就不设置G标志。
搜索无线接入点:
iwlist wlan0 scanning
接入指定无线接入点:
iwconfig wlan0 essid "NETGEAR_11g(1)"
数据包通过指定的网卡出去:
route add 192.168.0.1 dev wlan0
删除上面的操作:
route del 192.168.0.1 dev wlan0
设置IP
sudo ifconfig eth0 133.133.133.190 netmask 255.255.255.0
这样就算设置好了网卡eth0的IP地址和子网掩码
重启网卡:/etc/init.d/networking restart
网卡自动获取IP:dhclient wlan0
知识十八
每个账号都可以有多个用户组的支持
知识十九
chgrp:改变文件所属用户组
例:chgrp -R users install.log
其中-R表示进行递归(recursive)的持续更改,即连同子目录下的所有文件、目录都更新成为这个用户组。常常用在更改某一目录内所有的文件情况。
chown:改变文件所有者
chmod:改变文件的权限
各权限的分数:r-4 w-2 x-1
例: -rwxrwx--- 分数则是owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 =0
例:chmod 777 .bashrc
知识二十 目录的相关操作
cd:切换目录
pwd:显示当前目录
mkdir:新建一个新的目录
rmdir:删除一个空的目录
. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表“目前用户身份”所在的主文件夹
~accout 代表accout这个用户的主文件夹
文件默认权限:umask
文件隐藏属性:chattr lsattr
知识二十一
Linux系统中,标准输入的文件结束符是控制字符Ctrl-D。