shell
base command
Common tools command
目录和文件操作
ls:
-a显示隐藏属性的文件
-l列出详细的信息
-d显示目录
cd:
cd …上一级
pwd:
当前目录
mkdir
-m 加上权限
touch
建立空文件
cp
cp [] source_file targe_file
-f 不提示直接覆盖
-p把修改时间同步复制
-r如果是目录,递归复制
mv
移动文件
rm
-f 不提示
-r递归
cat
查看文件
which
显示应用程序的位置
whereis
显示命令或者文件的帮助信息
grep
tar
从一个文件中找到有关键字的行,并输出行
-c 创建新的文档
-v 显示详细的处理信息
-f 要操作的文件名
-r 追加文件
-z 利用gzip压缩
-j利用bzip2压缩
-x解压
tar -zcvf my.tar.gz /home/zz/document
tar -zxvf my.tar.gz
or
tar -jcvf ma.tar.bz2 /home/zz/document
tar -jxvf ma.tar.bz2
gzip
-d 解压
-n压缩等级
find查找命令
find [查找目录] [查找规则] [查找完后的操作]
1.find /home -iname file 忽略名字大小写进行查找
2.find /home -iname “file*” 通配符“”,可以是任何东西,?任意单个字符,[123],
3.find /hoem -[ctime/mtime/atime] [+n/-n] 其中ctime更改过的文件,mtime修改过的文件,atime存取的文件,+n表示n天之前,-n表示n天前之内,当然time可以变成min,由天数过度到分钟
4.find /home -[user/group/nouser/nogroup] root 根据用户查找
5.find /home -perm 777根据权限查找
6.find /home -type [f/d/l/s/b/c/p] 分别为file、diretocry、link、socket,block、char、pipe
7.find /home -size xxx
8.find /home -empty 查找为空的文件
9.find /hoem -links 2 查找连接数为2的文件
10.find /home -link [2/-2]连接数大于2 or less 2
11.find /home 条件1 -[a/o/not] 条件2
12.find /home -name file -ok ls -l查找完成之后执行相关的文件
dd
dd if=/dev/zero of=/swapfile bs=1024 count=262144
mkfs
mkfs /dev/xxx 格式化磁盘,如果想格式化成某一个格式,先fdisk进行,然后用mkfs就行
awk
https://blog.youkuaiyun.com/qq_33564134/article/details/82723919
sed
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
注:正则表达式
.
∗
其
余
加
上
转
义
字
符
s
e
d
′
s
/
要
被
取
代
的
字
串
/
新
的
字
串
/
g
′
n
l
/
e
t
c
/
p
a
s
s
w
d
∣
s
e
d
−
e
′
3
,
^.* 其余加上转义字符 sed 's/要被取代的字串/新的字串/g' nl /etc/passwd | sed -e '3,
.∗其余加上转义字符sed′s/要被取代的字串/新的字串/g′nl/etc/passwd∣sed−e′3,d’ -e ‘s/bash/blueshell/’
sed -i ‘s/.$/!/g’ regular_express.txt
grep
grep -E "[1-9]" 1.txt
expr
date,cal
id,who,users
hostid主机id
wahtis查询命令的功能
== bc,let== echo “2+3”|bc let 2+3
cal cal 1 2017
shell 内建命令
pstree查看进程树
-p 进程的pid
-u 所属账号名称
seq 顺序字符 seq 1 11 -f可以设置格式 seq -f “%3g” 1 seq -f 1 1010
declare ,set设置变量
tail,cat,head,more,less查看文件
bind绑定键盘bind -x ‘"\C-l":ls -l’ showkey -a来查看
read-p提示 读取键盘输入 -t是等待时间
&,bg,fg,jobs,ctrl+z将任务放到后台执行firefox & 或者friefox ctrl+z挂起bg将1变成后台执行,fg变成前台执行
ulimit限制用户的空间
enable-n:关闭指定的内部命令;-a:显示所有激活的内部命令;-f:从指定文件中读取内部命令。
export设置环境变量
env显示环境变量
declare,set ,unset
alias,unalias
kill
echo
系统安全
openssl:
openssl sha1 -out digest.txt file.txt digest.txt 是file.txt的签名
用DSS1(SHA1)算法为文件file.txt签名,输出到文件dsasign.bin。签名的private key必须为DSA算法产生的,保存在文件dsakey.pem中。openssl dgst -dss1 -sign dsakey.pem -out dsasign.bin file.txt
用dss1算法验证file.txt的数字签名dsasign.bin,验证的private key为DSA算法产生的文件dsakey.pem。openssl dgst -dss1 -prverify dsakey.pem -signature dsasign.bin file.txt
lastb列出登录失败的用户
lastlog最近一次的登录信息
chroot把根目录换成指定的目录
last列出登录信息
进程和作业管理
watch周期性查看 -n时间间隔,-d区域
watch -n 1 -d netstat -ant 每隔一秒高亮显示网络链接数的变化情况
serviceservice network status/restart/stop
周期性执行文件
时间指定方式:
绝对时间:HH:MM , DD.MM.YY , MM/DD/YY
相对时间:now+#单位即可
单位:minutes,hours,days,weeks
模糊时间:noon,midnight,teatime
at
例子:
at now+1minutes
at> ls > 1.txt
at> <EOT>
#然后用watch -n 1 -d "ls |grep 1.txt"监视是否执行就好
#查看任务at -l 或者 atq
#at -d 1
batch是在系统空闲时候执行的
crontab [-u username] [-l|-e|-r]
参数说明:
-u:只有root用户可以执行这个任务,也即帮其他用户新建、删除任务
-e:编辑任务内容
-l:查询任务内容
-r:删除任务内容
ps-aux
用户和工作组管理
chage
chage [选项] 用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
zz@ubuntu:~$ sudo chage -M 20 dd
zz@ubuntu:~$ sudo chage -l dd
最近一次密码修改时间 : Nov 18, 2018
密码过期时间 : Dec 08, 2018
密码失效时间 : 从不
帐户过期时间 : 从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :20
在密码过期之前警告的天数 :7
zz@ubuntu:~$ sudo chage -I 20 dd
zz@ubuntu:~$ sudo chage -l dd
最近一次密码修改时间 : Nov 18, 2018
密码过期时间 : Dec 08, 2018
密码失效时间 : Dec 28, 2018
帐户过期时间 : 从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :20
在密码过期之前警告的天数 :7
passwd
sudo passwd -l dd 禁止用户登录
sudo passwd -u dd允许用户登录
touch /etc/nologin不许所有用户登录,除开root
同时可以用来修改密码
groupdel,groupadd,groupmod
groupadd damon //创建damon工作组
groupdel damon //删除这个工作组
groupmod -n 名字 or -g 识别码
gpasswd
gpasswd(选项)(参数)
-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
zz@ubuntu:~$ sudo groupadd mygroup
zz@ubuntu:~$ sudo gpasswd -a dd mygroup
正在将用户“dd”加入到“mygroup”组中
chpasswd批量修改密码
chpasswd < user.txt 格式:name:passwd zz:1234
newusers批量增加用户
groupsgroups dd显示dd所在的用户组
useradd,usermod.userdel
-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s:指定用户登入后所使用的shell;
-u:指定用户id。
文件系统
e2label命令用来设置第二扩展文件系统的卷标。
e2label /dev/hda2 /new
这时在/etc/fstab里加入这样一句
label=/new /new ext3 defaults 1 1
mountmount /dev/sr0 /yum1 有个-l
至于解除挂载unmount /dev/sr0
fdisk磁盘分区,格式
df磁盘空间的情况
tune2fs挂载次数限制,格式转换等
mkfs格式化 mkfs //dev/sdb1
网络应用
axel如下载lnmp安装包指定10个线程,存到/tmp/:
axel -n 10 -o /tmp/ http://www.linuxde.net/lnmp.tar.gz
curl=
wget
ip
ip link list
pi route list
host
ping
nslookup
dig域名查询工具
arp
traceroute
netstat
ssh-agent秘钥管理器
namp
ssh
dhclient释放-r 获取dhclient ip
hostname
ifup eth0激活网络接口
ifcfg(参数)
网络接口:指定要操作的网络接口;
add/del:添加或删除网络接口上的地址;
ip地址:指定IP地址和子网掩码;
Stop:停用指定的网络接口的IP地址。
ifconfig
ifdown
route
shell编程
1.创建20个空白文件
#bash shell
#usege:新建20个空白文件
create_file()
{
file_name=myfile
for((i=1;i<=20;i++))
do
{
houzui=$(($houzui+1))
file_name=myfile$houzui
touch $file_name
echo "$file_name is created success"
}
done
}
menu()
{
create_file
}
menu
另见:https://blog.youkuaiyun.com/qq_33564134/article/details/79007099