※、常用命令:
ls | wc -l #统计当前目录下文件数(不含子目录内文件)
ld -d dirname #仅列出目录,不显示目录下的文件
pwd -P #显示当前目录所在实际路径,非链接路径
du -sch * #显示当前目录下各个文件或目录(不含子目录)的大小,以及总大小
df -h #显示磁盘空间信息
※、查看最近登录用户信息和IP地址: last -f /var/log/wtmp
※、显示日期 : date 格式化日期 date ‘+%Y-%m-%d %H:%M:%S’
或 : date ‘+%F %T’
显示当月日历 : cal
显示指定月份日历: cal 5 2016
※、命令行下进入计算器: bc –仅支持quit命令退出
scale=2 –指定小数位2位,Linux计算器默认仅输出整数,用scale调整小数位
10%3 –取余数,仅在输出整数时有效
※、查看命令帮助: man [command] 如: man date
※、/etc/profile 和 ~/.bash_profile 和 ~/.bashrc 的区别:
/etc/profile用于整个系统所有用户,
~/.bash_profile, ~/.profile和~/.bashrc 用于各个用户,这里的”~”符号就是各当前用户的$HOME
~/.bash_profile 和 ~/.profile 只在登陆时读取一次。
~/.bashrc 每次都读取
~/.bash_profile 和 ~/.profile 的区别在于,bash 只读取~/.bash_profile;而对于 ~/.profile 来说,不光bash, 其他shell 也读 ~/.profile
执行顺序为: /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
※、改变文件的权限
方式一、
1) 更改文件\目录权限: chmod 777 filename
其中第一位数字标识文件所有者的权限;第二位为文件所属组的权限,第三位为其他用户
数字表示的权限:r(读) - 4 w(写) - 2 x(执行) - 1
2) 更改文件所属组: chgrp grpname filename
3) 更改文件所有者: chown user filename
4) 更改文件所有者和群组:chown user:users filename
以上命令带参数 -R时,表示同时更改子目录的权限。
方式二、
a - 所有用户 u - 文件所属用户 g - 组内用户 o - 其他用户 以上可组合使用
chmod u=rwx,go=rx filename --更改文件权限为所有者rwx,组内用户和其他用户rx
chmod a+w filename --为所有用户增加对filename文件的 w 权限
chmod a- w filename --为所有用户去除对filename的 w 权限
chmod a=rw filename --将filename权限设置为所有用户可rw
※、CP命令: 复制文件到目标位置:
$> cp file1 /tmp/file1 --普通复制,默认覆盖,同时更改文件属性(命令操作者用户属性)
$> cp -i file1 /tmp/file1 --复制时,如果目标位置存在该文件,会询问是否覆盖 y-是 n-否
$> cp -a file1 /tmp/file1 --复制文件的所有属性,所属用户、所属组、创建时间等
$> cp -r ./dir1/ ../dir2/ --复制目录
※、显示文件内容到控制台:
1) cat filename –正向输出文件内容
cat命令参数详解:
cat -n filename --输出行号,包括空行
cat -b filename --输出非空白行行号
cat -A filename --输出特殊字符,如行尾显示$
cat -T filename --将[Tab]以 ^I 显示出来
cat -v filename --列出一些看不出来的特殊字符
2) tac filename –反向输出
3) nl filename –输出文件内容,同时显示行号
nl命令详解:
nl -b a filename --输出内容和行号
nl -b t filename --输出内容和行号,空白行不显示行号(默认值)
nl -n ln filename --行号靠左显示
nl -n rn filename --行号靠右显示
nl -n rz filename --行号靠右显示,且左补0
nl -n rz -w 2 filename --行号靠右显示,且左补0,但行号只占2位
4) more filename –一页一页显示文件内容(仅支持向后输出)
more命令详解:
more等待输入:
空格 --下翻一页
Enter --下翻一行
:f --立即显示当前文件名和显示的行数
q --退出more不再显示文件内容
5) less filename --与more类似,但支持往前查看([PageUp/PageDown])
6) head -n 2 filename --只查看文件的前2行
head -n -2 filename --不显示文件后2行
7) tail -n 2 filename --只查看文件的最后2行
8) head -n 4 filename | tail -n 2 --取文件的第3到4行
9) od filename --显示二进制文件内容
※、查看文件修改时间
ls -lrt --time=atime --查看文件最后被读取时间(cat/vi/more等命令)
ls -lrt --time=ctime --查看文件权限或属性的变更时间
ls -lrt --默认显示mtime,即内容被更改时间
touch命令会更改文件的时间属性:
touch filename --不存在时会创建空文件,存在时会修改文件所有时间为当前系统时间
※、文件的隐藏属性:
查看文件的隐藏属性:
lsattr filename
为文件增加保护(仅限于root执行):
chatrr +i filename --为文件增加保护,不能被任何用户(包括root自己)更改、删除
chattr +a filename --文件只允许增加数据(仅echo 'a'>>filename方式),不允许修改、删除。
※、find查找文件
find . -name filename --根据文件名,在目标路径(包含子目录)中精确查找
find . -name 'filename*' --根据文件名模糊查找
find . -size +500c --查找目标路径中大于500b的文件
find . -size +500k --查找目标路径中大于500Kb的文件
find . -type f --查找目标路径中正常文件(除目录、链接等文件外)
find . -type d --查找目标路径中目录文件
find . -mtime +4 --查找大于等于5天前有更改的文件
find . -mtime -4 --查找距当前4天内有更改的文件
find . -mtime 4 --查找距当前第4-5天内有更改的文件
find . -user username --查找username用户的文件
※、查看linux文件系统(FileSystem)类型:
file -s /dev/sda1
※、sed文本内容替换命令
sed '/text/d' filename --删除包含'text'内容的整行,并输出到屏幕(文件内容不改变)
sed -i '/text/d' filename --直接删除文件包含'text'内容的整行
sed 's/text/replace/g' filename --替换文件中'text'为'replace',并输出到屏幕
sed -i 's/text/replace/g' filename --直接替换文件中'text'为'replace'
※、bash字符串,单双引号区别:
单引号(”):单引号中任何字符都原样输出,不作任何转换,单引号中不能引用其他变量,
转义符无效,且单引号字符串中不能再出现单引号
双引号(”“): 双引号中可以使用变量或转义符
※、获取字符串长度:
name="Tom"
echo ${#name} #3
echo $(echo ${name} | wc -L) #3
※、数组
arr=("Tom" 'Jim' 15) #数组定义
echo ${arr[@]} #读取数组所有元素
echo ${arr[1]} #根据下标读取数组元素,下标从0开始
echo ${#arr[@]} #获取数组长度
echo ${#arr[1]} #获取数组元素的长度
※、函数 , shell函数返回值只能返回整数值
[root@#localhost ~]# vim test.sh
#!/bin/bash
function fun(){
echo "This is parameter 1: $1"
echo "This is parameter 2: $2"
}
fun $1 $2
[root@#localhost ~]# sh ./test.sh 10 20
※、Linux用户管理
添加用户:useradd
eg:
useradd -d /home/test -m -g root -s /bin/bash test
-c 添加注释
-d 指定用户主目录,如目录不存在,可指定-m创建该目录
-g 指定用户所属用户组
-G 指定用户所属附加组
-s 指定用户shell
-u 指定用户号,如果有-o选项,可以重复使用其他用户的用户号
※、脚本开机运行
需要开机运行的脚本加入/etc/rc.d/rc.local中,同时rc.local和脚本需要有可执行权限
※、history显示最近执行过的1000条命令
history -c 清空历史命令
显示命令执行时间:.bash_profile中加入:HISTTIMEFORMAT=”%Y-%m-%d %H:%M:%S ”
soruce .bash_profile
history n 显示最近执行的n条命令
!!运行上一次执行的命令
!n 运行history显示的第n条命令
※、磁盘管理:
列出硬盘和分区信息: fdisk -l
新加入的硬盘做分区: 1、fdisk /dev/sdb1 然后选择n(增加分区),在选择p(主分区),输入1,
回车后输入w保存。
2、格式化增加的分区:mkfs.ext4 /dev/sdb1
3、挂载硬盘:mount /dev/sdb1 /data01
卸载硬盘: umount /data01
设置硬盘开机自动挂载:如果使用UUID,则通过命令’blkid /dev/sdb1’获取磁盘UUID,
然后在/etc/fstab中加入:
UUID=e8a4d42c-d259-4cd3-85bc-e73091edb1ef /data01 xfs defaults 0 0
※、shell编程if判断(加!表示取反)
格式:
if [ 条件 ]; then
执行语句
else
执行语句
fi
条件表达式:
if [ -e file ] 如果文件file存在
if [ -f file ] 如果文件file存在(改文件为一般文件,非设备文件或目录)
if [ -d dir ] 如果目录dir存在
if [ -s file ] 如果文件file存在且非空(大小不为0)
if [ -r file ] 如果文件file存在且可读
if [ -w file ] 如果文件file存在且可写
if [ -x file ] 如果文件file存在且可执行
数字类型变量比较:
if [ $a -eq $b ] 如果a == b
if [ $a -ne $b ] 如果a != b
if [ $a -ge $b ] 如果a >= b
if [ $a -gt $b ] 如果a > b
if [ $a -le $b ] 如果a <= b
if [ $a -lt $b ] 如果a < b
字符串表达式:
if [ $a = $b ] 如果两个字符串相同
if [ $a != $b ] 如果两个字符串不相同
if [ -n $str ] 如果字符串非空,返回0(true)
if [ $str ] 如果字符串非空
if [ -z $str ] 如果字符串空
逻辑与(-a)、或(-o)判断
( [[ ]]中>、<用于字符串比较,按照asci字符顺序比较大小,如2>10返回true):
expr1: (a > b and a < c)
if (( $a > $b )) && (( $a < $c ))
或
if [[ $a > $b ]] && [[ $a < $c ]]
或
if [ $a -gt $b -a $a -lt $c ]
expr2: ( a > b 或 a > c)
if (( $a > $b )) || (( $a > $c ))
或
if [[ $a > $b ]] || [[ $a > $c ]]
或
if [ $a -gt $b -o $a -gt $c ]
※、grep命令
grep -v “test” 匹配除”test”以外的内容
※、printf和echo区别
printf输出默认不换行,且可以使用变量替换:
a="Linux"
printf 'Hi %s' $a 输出 Hi Linux
echo 'Hi %s' $a 输出 Hi %sLinux