root专有命令目录: /sbin /usr/sbin
all users: /bin /usr/bin
第一节:文件处理
ls:
ls -R /mnt/sdc 显示目录树
# ls -a /home
# ls -l /home
drwxr-xr-x 2 root root 4096 Apr 17 22:51
文件类型:d-目录directory --二进制文件 l-软链接文件link
2:硬链接数
root root:所有者,所属组
4096:文件、目录的大小 单位:数据块 512B
Apr 17 22:51 :文件创建时间或者最后修改的时间
# ls -i //目录,节点号 -i node号
# ls -lish
# ls -lSr |more //以尺寸大小排列文件和目录
# ls -ld /home //查看目录home 不同于:ls -l /home
# ls -d */ //只看目录,不看文件
ll
ll -n
ll -i //输出节点号
ll -h //查看文件大小,单位:MB
cd
pwd
touch
toch file //创建文件,文件已存在,则修改最后修改时间
mkdir
mkdir -p /Volume/sdb //创建多级目录
cp
cp -R [源文件或目录] [目的文件或目录] //-R 复制目录
cp /etc/inittab /home/inittab
cp /etc/inittab /etc/fstab /home/test //将inittab、fstab复制到目录test下
cp -R apache-tomcat-7.0.63 /usr/tomcat //将目录 apache-tomcat-7.0.63下所有的文件及子目录复制到 目录tomcat下
cp -p //保留源文件时间值
合并目录
\cp -Rf 要合并目录 目标目录的父级目录
有两个目录test和new,test目录下有子目录和文件,new目录下有更改过的一些test下的子目录和文件,以及一些新增的文件,现在对两个目录进行合并以及覆盖test下的旧文件
cp -frap new/* test/
-f 强制覆盖,不询问yes/no(-i的默认的,即默认为交互模式,询问是否覆盖)
-r 递归复制,包含目录
-a 做一个备份,这里可以不用这个参数,我们可以先备份整个test目录
-p 保持新文件的属性不变
mv
重命名、剪切移动
/**同一个文件系统移动只修改inode信息,瞬间完成;不同文件系统之间移动,是整个文件的迁移*/
mv apache-tomcat-7.0.63 /usr/tomcat
rm
删除,本质:修改inode信息,将数据块标记为可用,瞬间完成
rm -rf /home/tools/apache-tomcat-7.0.63 //-r 删除目录
echo
cd root \
&& echo -e "[mysql]\nhost=127.0.0.1\nuser=root" > .my.cnf \
&& echo password=$(grep 'root@localhost:' /home/mysql/mysql/log/mysqld.log | awk '{ print $11 }') >> .my.cnf
cat
cat /etc/fstab //全文查看
cat file1 file2 file3 > filecopy
cat id_rsa.pub >> .ssh/authorized_keys //追加
tee
tee kubeadm-init.log
more
分页查看
# more /etc/services
空格或者f,显示下一页
Enter 显示下一行
q或Q,退出
head
查看文件前几行,默认看10行
# head -num [文件名]
# head -20 /etc/services
tail
查看文件最后几行
# tail -num [文件名]
# tail -20 /etc/services
# tail -f file/log //自动加载,动态显示,主要用于监视日志文件
ln
ln [源文件] [目标文件]
# ln /etc/services /home/hardlnservices
1、硬链接(类似于cp -p +同步更新)
2、本质:ls -i /etc/services和/home/hardlnservices使用同一个inode
3、删除源文件,硬链接相当于一个拷贝,依然存在
4、硬链接不能跨文件系统(分区)创建
5、很少使用
# ln -s /etc/services /home/softlnservices
1、软链接 lrwxrwxrwx 类似于windows的快捷方式
2、删除源文件,软链接失效
3、无文件系统(分区)限制
第二节:权限管理
chmod
chmod:change the permissions mode of a file
方式一:
u g o (u - 所有者;g - 所属组;o - 其他人)
+ - =
r w x
chmod +x filename
chmod u+wx filename
chmod o-rw filename
chmod g=rwx filename
chmod g+w filename
方式二:
r-4 w-2 x-1
rwxr-xr-- 754
chmod 641 filename
chomd 777 /home/dir1/file1 //其他用户没法删除file1
chomd 644 /home/dir1/file1 && chmod 777 /home/dir1 //其他用户可以删除file1
rwx含义
符号 权限 对文件的含义 对目录的含义
r 读权限 可以查看文件内容 可以列出目录中的内容
w 写权限 可以修改文件内容 可以在目录中创建、删除文件
x 执行权限 可以执行文件 可以进入目录
文件
目录r-x、rwx
其他: u+s g+s o+t
SetUID=4 (非常危险)
-rwsr-xr-x (可执行程序)
SetUID的定义:当一个可执行程序具有SetUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。
# chmod u+s /bin/touch
# chmod 4755 /bin/touch
# chmod u-s /bin/touch
# chmod 755 /bin/touch
查找SetUID程序
# find / -perm -4000 -o -perm -2000 > /backup/setuid.list.20160725
# find / -perm -0777 //0777
# find / -perm -0777 -a type f //0777 二进制文件
# find / -perm -0777 -a type d //0777 目录
SetGID=2
-rwxr-sr-x (可执行程序)
# chmod g+s /bin/touch
# chmod 2755 /bin/touch 6755
粘着位 = 1
drwxrwxrwt
# chmod 1777 /hr //权限为777的目录,设置了粘着位t 每一个用户都有写权限(可创建文件),但只能删除该目录下自己是所有者的文件。
# chmod o+t /brother
# ls -ld /tmp
chown
chown [用户] [文件或目录]
chown –R oracle:oinstall /opt/oracle
chown oracle:oinstall /u01/app/oracle
chgrp
chgrp:change group ownership
chgrp [用户组] [文件或目录]
umask
//权限掩码值查询
umask
0022 0-特殊权限 022-用户权限位,权限掩码值 777-022=755
缺省的创建的文件:不能授予可执行x权限
umask -S
//改变权限掩码值
umask 027 //750
第三节:文件搜索命令
which
查找命令,并显示该命令的别名
which ls
whereis
查找命令,和该命令的帮助文档位置
whereis iptables
linux, not unix
locate
locate - find files by name
locate ifcfg-Auto_eth3
错误:locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
解决:updatedb
第四节:帮助命令
man
man - manual
man [命令或配置文件]
man ls //命令
man services //配置文件 services - Internet network services list
man passwd //同时也有一个配置文件/etc/passwd 会优先查看命令passwd的帮助
man 5 passwd //查看配置文件passwd的帮助
//linux, not unix
info{}
whatis //提取 命令作用说明
whatis ls
whatis mkdir
whatis service
--help //列出命令的选项信息
ls --help
mkdir --help
aprops //查看与配置文件 相关配置文件的详细信息
aprops services
aprops fstab
makewhatis
whatis
aprops
//查看bash shell内置命名的帮助
help
man cd //查看shell内置命令
help cd //查看内置命令的帮助
第六节:压缩命令
gzip
gzip file
1、只能压缩文件
2、源文件被删除
gunzip
gunzip file.gz
或者 gzip -d file.gz
1、不保留源文件
tar
打包压缩
tar [选项][cvf] [tar.gz文件名] [目录]
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
功能描述:打包压缩
压缩后的文件格式:.tar.gz
tar -zcvf sbms.tar.gz sbms
解压
tar -zxvf apache-tomcat-7.0.63.tar.gz
-x 解包.tar文件
解包
tar -xvf MySQL-5.5.44-1.el6.x86_64.rpm-bundle.tar
分包压缩
tar czf - registry | split -b 128m - registry.tar.gz_
解压
cat registry.tar.gz_* | tar zvxf -
合包
cat bigfilesplit.tar.gz_* >bigfile.tar.gz
cat registry.tar.gz_* > registry.tar.gz
zip
windows 和 linux通用的格式,注意编码问题
zip 选项[-r] [压缩后的文件名称] [文件或目录]
-r 压缩目录
压缩后的格式:.zip
zip -r sbms.zip sbms
unzip
unzip sbms.zip
unzip -O CP936 resource.zip //用GBK,GB18030也可以
bz2
bzip2 -k file //-k 压缩后保留源文件
bunzip2 -k file //-k 解压后,保留源文件
第七节:网络通信命令
write
write <用户名> 被通信用户已经登录,才能收到
Ctrl+D 退出
write Mary < /home/samlee/love.txt
wall
wall - write all //用来发广播
wall [message]
#wall
[messsage]
ping
ping www.baidu.com
ping -c 10 www.baidu.com
ping -s 65507 -c 5 192.168.15.175
ifconfig
ifconfig //for linux
ifconfig -a //for unix
ifconfig eth0 //显示一个以太网卡的配置
ifconfig eth0 192.168.1.18 netmask 255.255.255.0 //修改IP地址,临时
ifconfig -h
ifconfig eth0 promisc //设置 'eth0' 成混杂模式以嗅探数据包 (sniffing)
curl
curl www.baidu.com //get
curl -XPOST -d "param1=value1¶m2=value2" www.baidu.com
-I 只显示头部信息。
i 显示全部信息。
-v 显示解析全过程。
查看本机ip地址
[root@liuyao-test-ip-172-37-66-182 clickadmin]# curl cip.cc
IP : 161.189.61.238
地址 : 美国 美国
数据二 : 美国
数据三 :
URL : http://www.cip.cc/161.189.61.238
wget
最基本使用
wget www.***.com/***.tar.gz
get方式并指定下载的文件名
wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080
post
wget --post-data="user=user1&pass=pass1&submit=Login" http://domain.com/path/page_need_login.php
ip a
[clickadmin@ip-172-35-88-71 ~]$ hostname -i
172.35.88.71
[clickadmin@ip-172-35-88-71 ~]$ hostname -I
172.35.88.71 172.36.60.0 172.36.60.1
route -n
traceroute www.baidu.com
telnet
dig
nslookup
第八节:shell应用技巧
常用键盘
Tab: To complete command lines
Ctrl+C: Cancel current command line
Ctrl+U: Clear to end of line 清理光标前半部分
Ctrl+K: Clear to start of line 清理光标后半部分
Ctrl+L: Clear whole screen 清屏,相当于clear
Ctrl+A: go to the head
Ctrl+E: go to the tail
history
# vim /etc/profile
export HISTTIMEFORMAT = "%F %T `whoami` "
!188
alias 命令别名
添加别名
#alias copy=cp
#alias rmdir="rm -rf"
#alias watchserverdebug="tail -1000f /home/ntlog/nettyServer/debug.log"
#alias watchwebwarn="tail -1000f /home/ntlog/springboot/warn.log"
删除别名
#unalias copy
输入/输出重定向 //计划任务
同标准I/O一样,Shell对于每一个进程预先定义3个文件描述字(0、1、2)。分别对应于:
0 (STDIN)标准输入; //键盘
1 (STDOUT)标准输出; //显示器、投影
2 (STDERR)标准错误输出; //显示器、投影
输出重定向
ls -R /home > /opt/test.log
date >> /opt/test.log
输入重定向
wall < /etc/motd
错误重定向
cp -R /usr /backup/urs.bak 2> /bak.error
(cd home; pwd; ls; date) 2> /opt/test.log
管道
管道:将一个命令的输出传送给另一个命令,作为另一个命令的输入。
命令1|命令2|命令3.... |命令n
ls -l /etc | more
wc -l /etc/services
cat /etc/services | grep tftp
cat /etc/services | grep tftp | wc -l //查看行数
ls -l /etc | grep init | wc -l
yum list | grep mysql
命令连接符 ; || &&
; 各命令按顺序依次执行,主要用于执行时间比较长的任务
cd /home; pwd; ls; date
(cd /home; pwd; ls; date) 2> /opt/test.log
&& 第1个命令执行成功,第2个命令才会执行
command1 && command2
cd home && pwd && ls && date
write Mary < /home/samlee/love.txt && rm -f /home/samlee/love.txt
|| 第1个命令执行成功,第2个命令不会执行 //第1个命令执行失败,第2个命令才会执行
command1 || command2
write Mary < /home/samlee/love.txt || mail Mary < /home/samlee/love.txt //mail伪命令
命令替换符
命令1 `命令2` //将命令2的输出,作为命令1的参数
ls -l `which touch`
watch
watch "kubectl get pod -owide"