文件管理
文件查看cat
cat file
显示行号:cat -n file
显示原始文本:cat -v file
更改文件权限chmod
chmod
chmod [-cfvR] mode file
mode:
[ugoa...][[+-=][rwxX]...][,...]
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
将文件 file1.txt 设为所有人皆可读取 :chmod ugo+r file1.txt
R-4
W-2
X-1
RWX=4+2+1=7
rwxrwxrwx=777
修改文件权限:chmod 777 file
[-cfvR]:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
递归更改文件夹权限:chomd -R 777 /opt/farmsec
改属主属组chown
chown
chown [-cfhvR] user[:group] file
改文件属主属组 :chown runoob:runoobgroup file1.txt
改文件夹属主属组chown -R runoob:runoobgroup /opt/farmsec
对比文件diff
diff
diff file1 file2
文件查看head/tail/more/less
看前十行:head file -n10
看后十行:tail file -n10
组合看特定几行
一页一页查看:more file
space 下一页, b 键往回一页
less
[pagedown]向下翻动一页,[pageup]向上翻动一页
实时监控日志
tail -f log
文件移动更名mv
mv
mv [options] source dest
-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件
-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示
文件 aaa 更名为 bbb:mv aaa bbb
将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs:mv info/ logs
将/usr/student下的所有文件和目录移到当前目录下,命令行为:mv /usr/student/* .
文件删除rm
rm
删文件:rm [options] file
删目录及文件:rm -rf dir
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除
文件分割split
按字节分割:split -b 1000 file
按行数分割:split -l 10 file
新建文件touch
touch filename
文件预设权限umask
umask
新建文件的权限为预设的权限
预设的权限可通过,777-umask输出的数字得知
也可直接umask -S
得知预设权限
文件查找which
which file
在环境变量$PATH设置的目录里查找
文件复制cp
cp
cp [options] source dest
复制整个目录:cp –r test/ newtest
文件查找whereis
whereis
whereis 文件
只能用于查找二进制文件、源代码文件和man手册页
远程文件复制scp
scp
linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令,加密
复制远程的整个目录到本地:scp user@ip:/home/root/ .
本地复制到远程:scp local_file user@ip:remote_folder
文档编辑
排序sort
sort
将文本文件内容加以排序
将文本文件的第一列以ASCII 码的次序排列:sort file
逆序:sort -r file
按数字大小排序:sort -n file
去重uniq
uniq
检查及删除文本文件中重复出现的行列
只删除相邻的重复,所以要与sort结合使用
去重:cat 11.txt |sort |uniq
去重并显示重复次数:cat 22.txt|sort |uniq -c
统计wc
wc
wc file
默认显示行数单词数字节数
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 只显示行数。
-w或--words 只显示字数。
磁盘管理
切换目录cd
cd
跳家目录:cd ~
跳/usr/bin:cd /usr/bin
~
家目录
.
当前目录
..
上一层目录
磁盘统计df
df
df -h
大小统计du
du
du -h 目录或文件
绝对路径pwd
pwd
列目录ls
ls
显示指定工作目录下之内容
列表详细显示所有文件:ls -al [目录]
包括隐藏文件 .file
网络通讯
显示网络netstat
netstat
netstat -ano
TCP:netstat -ant
系统管理
用户管理 useradd/mod/del
-
新增用户adduser/useradd
useradd [-u uid] [-g gid] username
创建root的别名用户:useradd -u 0 aaa
查找系统中root的别名用户,并打印:cat /etc/passwd |grep "x:0" |grep -v "root:x"
-
修改用户usermod
改变用户的uid:usermod -u 777 root
改变用户的gid组:usermod -g 1002 bbb
-
删除用户userdel
userdel [-r] [用户帐号]
-r 删除用户登入目录以及目录中所有文件
用户组管理 groupadd/mod/del
-
新增组groupadd
groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
相关文件:
/etc/group 组账户信息。
/etc/gshadow 安全组账户信息。
/etc/login.defs Shadow密码套件配置。
groupadd -g 344 runoob
-r:创建系统工作组,系统工作组的组ID小于 500 -
修改组groupmod
更改群组识别码或名称
改gid:groupmod -g gid groupname
组名linuxso改为linux:groupmod -n linux linuxso
-
删除组groupdel
groupdel hnuser
杀死进程kill
kill
kill pid
彻底杀死进程:kill -9 pid
列出选项:kill -l
杀死指定用户所有进程:kill -u user
登录信息last
显示用户最近登录信息,读取位于/var/log目录下名称为wtmp的文件,并把该文件记录的登录系统的用户名单全部显示出来。
last
查看进程ps
ps
显示所有包含其他使用者的进程:ps -aux
查看进程top
top
实时显示 process 的动态
root执行命令sudo
sudo
使用权限:在 /etc/sudoers 中有出现的使用者。
切换用户su
su
su user
在线用户信息who
显示系统中有哪些使用者正在上面
显示用户信息id
id [user]
在线用户w
显示目前登入系统的用户信息
w
系统设置
计划任务crontab
列出任务:crontab -l
编辑计划任务:crontab -e
* * * * * 命令
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (星期天 为0)
| | | +---------- 月 (1 - 12)
| | +--------------- 日 (1 - 31)
| +-------------------- 时 (0 - 23)
+------------------------- 分 (0 - 59)
1-6:1到6
1,6:1或6
*/3:每隔3
6-12/3:6到12中,每隔3
所有命令需要写成绝对路径形式,如: /usr/local/bin/docker
每一分钟执行一次 /bin/ls:* * * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup:0 6-12/3 * 12 * /usr/bin/backup
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha":20 0-23/2 * * * echo "haha"
redhat管理套件rpm
rpm
安装软件:rpm -ivh x.rpm
列出系统安装的所有软件包:rpm -qa
dpkg软件管理
dpkg -i x.deb
修改密码passwd
修改密码:passwd user
显示密码信息:passwd -S user
删除密码:passwd -d user
shell四剑客
文本提取awk
awk
行处理,默认空格作为分割符
输出每行第4个字段:awk '{print$4}' log.txt
指定分隔符,输出passswd中的用户名和uid:cat /etc/passwd |awk -F ':' '{print($1,$3)}'
print中,
表空格
输出多个字段与字符拼接:cat /etc/passwd |awk -F ':' '{print$1"-"$3}'
文本处理sed
sed
行处理,利用脚本来处理文本文件
sed [<script>] [文本文件]
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
全文搜索替换:cat /etc/passwd | sed 's/root/jesus/g'
s搜索
/是定界符,如果有转义问题可换#等
root是匹配的内容,jesus是替换的内容
g表替换全文,不加则替换一次
[危险]直接修改源文件:sed -i "s/my/your/" 123.txt
每行开头加#:sed 's/^/#/g' pets.txt
每行末尾加#:sed 's/$/#/g' pets.txt
删除空白行:sed '/^$/d' pets.txt
d表删除匹配行
删除头部匹配:sed '/^video/d'
删除尾部匹配的行:sed '/.cn$/d'
文本匹配grep
grep
用于查找文件里符合条件的字符串
匹配passwd中的root:grep 'root' /etc/passwd
正则匹配:cat /etc/passwd |grep -E 'root|sshd'
不匹配root:cat /etc/passwd |head -n5|grep -v 'root'
递归查找整个目录:grep -r 'root' /etc/
显示行号:grep -n 'root' /etc/passwd
文件查找find
find
根目录下搜索文件passwd:find / -name passwd
指定搜索文件和属主:find / -type f -user root -name passwd
在7天内修改过的,以文件名开头为test的文件: find / -type f -mtime -7 -name test*
在过去第7天修改的:find / -type f -mtime 7 -name test*
在7天前修改的:find / -type f -mtime +7 -name test*
一分钟内修改过的:find . -type f -mmin -1
大小-size
mtime内容修改/atime读取访问/ctime属性修改
mtime天/min分钟
文件查找locate
locate
在数据库中搜索,数据库未更新则不准确
locate passwd
更新数据库:updatedb
搜索 etc 目录下所有以 sh 开头的文件:locate /etc/sh
组合使用分析日志
统计日志中,访问量最大的10个IP:cat access_log|awk '{print$1}'|sort|uniq -c|sort -nr|head -n10
命令传递/规范输出xargs
xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
多/单行输入每行3个输出:cat test | xargs -n3 echo
多行输入单行输出:cat test.txt | xargs
命令传递,杀掉已建立的ssh连接,但不kill掉sshd的服务:ps -aux |grep sshd| grep -v /usr/sbin/sshd |awk '{print($2)}' |xargs kill -9