linux-基础命令

文件管理

文件查看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
tail
more

看前十行: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

  1. 新增用户adduser/useradd
    useradd [-u uid] [-g gid] username
    创建root的别名用户:useradd -u 0 aaa
    查找系统中root的别名用户,并打印: cat /etc/passwd |grep "x:0" |grep -v "root:x"

  2. 修改用户usermod
    改变用户的uid:usermod -u 777 root
    改变用户的gid组:usermod -g 1002 bbb

  3. 删除用户userdel
    userdel [-r] [用户帐号]
    -r  删除用户登入目录以及目录中所有文件

用户组管理 groupadd/mod/del

  1. 新增组groupadd
    groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
    相关文件:
    /etc/group 组账户信息。
    /etc/gshadow 安全组账户信息。
    /etc/login.defs Shadow密码套件配置。
    groupadd -g 344 runoob
    -r:创建系统工作组,系统工作组的组ID小于 500

  2. 修改组groupmod
    更改群组识别码或名称
    改gid:groupmod -g gid groupname
    组名linuxso改为linux:groupmod -n linux linuxso

  3. 删除组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

原文地址:https://www.cnblogs.com/Rain99-/p/13797609.html