有用的Linux操作系统的基础命令总结

来源:互联网 发布:ae影视后期制作软件 编辑:程序博客网 时间:2024/06/18 14:30

实验环境为red hat Linux 6.2。部分系统可能会有差别请区别对待!微笑


Linux shell有关的命令:

cat /etc/shells 查看当前系统支持的shell

cat /etc/passwd 查看当前系统所有用户和密码

echo $0   输出shell本身的文件名

$$    shell本身的PIDProcessID

$?    最后运行的命令结束代码(返回值)

echo $? grep匹配成功输出为0否则为1

bash --version 显示当前bash版本信息

ctrl alt F1 图形化界面

ctrl alt F2-F6 控制台界面

------------------------

Linux系统的登陆流程

1.BIOS引导

MBR中装载启动引导管理器(LILOGRUB)运行该启动引导

2.GRUB启动引导

读取/boot/grub.conf文件并显示启动菜单

3.内核阶段

挂载根文件系统

4.Sys V init初始化阶段

启动/sbin/init程序和读取/etc/inittab文件


Linux基础命令(注意字母大小写)

ls -a 显示所有文件包括隐藏文件

ls -l 显示详细信息

ls -F  目录后加一符号,可执行文件加*,文件夹加/

cd - 回到上一步操作目录

cd ~ 回到home目录

cd .. 回到上层目录,cd ../../ 回到上两层目录

mkdir 新建文件夹

mkdir A B C 连续建立A B C三个文件夹

mkdir -p abc/123/bcd -p 建立多级目录

rmdir 删除空目录

rm  -i test 询问是否删除test文件

    -r 目录名 删除目录和该目录下的所有文件和子目录

    -f 不经确认强制删除文件

touch 创建文件

echo aaa >>1.txt    创建文件并写入(>>连续写入,>覆盖写入)

echo 为屏幕输出

mv 1.txt 2.txt 移动目录或文件

mv 1a.txt -b 1b.txt    先对1b.txt备份(1b.txt~),再复制1a.txt1b.txt,再 删除1a.txt   

mv *.txt  /tmp 所有.txt文件移动到/tmp目录下

cp 源文件 目的文件 连同源文件中的子目录一同拷贝

cp -r 源文件 目的文件 连同源文件中的子目录一同拷贝 -r批量

scp 1.txt root@172.18.12.87:/tmp/ 拷贝文件到目的主机的一个目录

scp -r 1.txt root@172.18.12.87:/tmp/  ./ 从目的主机拷贝文件到本地目录

more 1.txt 查看文件内容,分页查看,可查找文件内容

cat test 显示文件内容

cat file1 file2 顺序显示两个文件的内容

cat file1 file2 >>file3 1 2中的文件重定向到3

cat -n --number 1开始对所有输出的行数编号

   -b 和 -n 相似,只不过对于空白行不编号

   -A 显示制表符(windowslinux文本编辑回车的格式符 不一样)

su 提升权限至root用户     

sudo 该条命令提升权限  

su- 切换root用户,环境变量也切换过来了

useradd 添加用户

userdel 删除用户

passwd 修改密码

pwd 查看当前路径

man 命令符 帮助命令等同于 [命令符 --help]

ipconfig/flushdns windows系统刷新DNS解析缓存

chmod 777 1.sh u g o添加最高读写和执行权限

chmod +x 1.sh u g o添加执行权限到文件

chmod g+r 1.sh   grup添加读权限到文件

chmod o-w 1.sh other剥夺写权限到文件

chown oracle:dba text 将 text 文件的属主和属组分别改为 oracledba

-------------------------------------------------------------------------------

u[user] g[grup] o[other]

 rwx       rwx        rwx    /*权限 r=4 x=1 w=2

-------------------------------------------------------------------------------

r(Read,读取) w(Write,写入) x(eXecute,执行)

S权限(SUID,Set UID 可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。

t权限(Sticky /tmp/var/tmp目录供所有用户暂时存取文件,该位可以理解为防删除位。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件。如果希望用户能够添加文件但同时不能删除文件,则可以对文件使用sticky bit位。设置该位后,就算用户对目录具有写权限,也不能删除该文件。

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

和进程相关的命令:

ps -A 显示所有进程

ps -ef e所有  f详细信息

ps -ef | grep sshd | grep -v "grep" | awk '{print $2}' -v  不显示

cat httpd.conf | grep -v "#" | grep -v ^$ #不显示,空行也不显示

ps -aux > ps001.txt 重定向(将所有进程以文本形式写入ps001.txt

top 动态显示进程   第二行最后0 zombie:非0说明有多少个僵尸进程。 0.0wa I/O读写操作问题[m t查看详细信息]

kill命令 杀死进程,-9强制杀死进程,杀死主进程后子程序也 会死亡

df -h 查看根目录下的磁盘空间,和使用率。hhuman 意思,df无法看到文件大小

du -h 查看当前目录空间大小

du -h --max-depth=1 abc/ 查看目录下深度为一的目录

mount /dev/cdrom /mnt/123 挂载的根节点

umount/dev/cdrom /mnt/123 直接挂载取消,[red hat]

 

vi对文件编辑的功能有三种模式:一般模式,编辑模式,命令行模式。

一般模式下按下ioa键可进入文本输入模式,esc退回一般模式。

命令行模式通过:/等指令进入。q!强行离开不保存,q为退出,wq为保存退出。


一般行模式下的命令:

0(数字) 跳到行首

$ 跳到行尾

e 光标移到字尾

b 左移一个字,到前一个字的开头

w 右移一个字,到后一个字的开头

enter 跳到下一行行首

space 光标右移一位

backspace 光标左移一位

G 跳到最后一行

1G 可以跳到第一行,任何行都能跳

gg 跳到第一行行首

x 从光标前面删除

X 从光标后面删除

dd 为删除一行,前面加数字为往下删除的行数

yy 复制游标所在行,后加数字为复制次数,前加数字为复制下几行

p 为粘贴

8yyGp 从当前行复制8行粘贴到文档尾部(例子)

u 为撤销

U 撤销当前行上做的所有更改

. 重复上一次的修改

uu 恢复原本模样

 

命令行模式下:

:set nu 给每行标号

:set nonu 取消行标号

:wq 后加文件名为另存为这个文件名,源文件保存

:wq 3.txt 另存为3.txt(例子)

:1,10s/too/tootoo/gc 110行的too替换成tootoo

s代表替换,g代表全局,c代表询问

 

*********************************************************************

关于网络配置的命令

ifconfig查看ip地址;

增加和删除ip ifconfig+网卡+IP地址;

ifconfig+netmask+子网掩码;

ifconfig+网卡+down,关闭网卡;

ifconfig+网卡+up,打开网卡。

route 查询路由,netstat -r 也是查看路由表而且WindowsLinux通用

route add -net 192.168.2.0 netmask 255.255.255.0 dev eno16777736 添加表项,dev是表示从哪个网卡

route add 0.0.0.0 gw 192.168.1.1 添加默认路由和网关

route 的常用参数说明如下:<<<

-v 使用冗余输出模式-A family 指定特定的地址族(例如"inet" "inet6"

-n 使用数字显示的地址(例如 202.38.75.75)而不是去解释域名

-e 使用与 netstat 相同的输出格式

-ee 参数会产生很长的输出,包括内核路由表的几乎所有信息

-net 目标 target 是一个网段-host目标 target是一个单独的主机

-F 显示内核 FIB 路由表。结果可能被-e-ee参数改变

-C 显示内核中路由缓存信息

del 删除一个路由表项

add 增加一个路由表项 >>>

 

netstat -atpa->allt->tcpp->pidu->udpl->listenn->端口号

nslookup 可双向解析域名解析成IP地址,解析的是域名不是URL

host [选项] [IP地址/域名/主机名]

-a 显示所查域名或 IP 地址、域名或主机名的相关信息

ping [选项] [主机名/IP地址]

C:\Windows\System32\drivers\etc windows下的host文件路径

/etc/resolv.conf linuxDNS服务器地址

Iptables -F 清空iptables防火墙所有服务

telnet的登录和传输均为明文,密码和相关敏感信息极易被监听获取

ssh则使用加密协议登录和传输

*********************************************************************

关于安装的命令:

yum安装 /*基于RPM包安装,把所有的RPM包管理起来

yum /*网易http://mirrors.163.com/

 

RPM安装 /*演示的内网安全扫描工具Nessus的安装

RPM -qa /*查询所有的RPM -q查询 第三方软件安装在opt目录

 

源码安装:打包工具tar

tar -c /*创建包

tar -x /*解包

tar -t /*列出包中内容

tar -r /*增加文件到指定包中

tar -f /*后跟指定包文件

tar -v /*显示详细过程

tar -C /*指定解包后的路径

/*解压完后安装命令./configue make ,make install 安装过程

 

tar命令:

-c :建立一个压缩文件的参数指令(create的意思)

-x :解开一个压缩文件的参数指令!

-t :查看 tarfile里面的文件! ---> c/x/t 仅能存在一个!不可同时存在!

-z :是否同时具有 gzip的属性?亦即是否需要用 gzip压缩?

-j :是否同时具有 bzip2的属性?亦即是否需要用 bzip2压缩?

-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

-f :使用档名,请留意,在 f之后要立即接档名喔!不要再加参数!

-p :使用原文件的原来属性(属性不会依据使用者而变)

-P :可以使用绝对路径来压缩!

-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!

--exclude FILE:在压缩的过程中,不要将 FILE打包!

*********************************************************************

Find命令用于查找指定文件 .是当前目录/是根目录~home目录,root权限下是root目录

find ~ -name "*.txt" -print 按名字查找home目录下所有txt文件并打印

find . -name "[A-Z]*".txt -print

find . -name "[A-Z,a-z,1-100]*".txt -print 查看以A-Za-z1-100开头的txt文件

find . -name "1.txt" -prune -o -name "*.txt" -print 查看所有不是1.txttxt文件

find . -path 目录查找  

find . -path "./aa" -prune -o -name "*.txt" -print

在当前目录除aa之外的子目录内搜索txt文件

find . \( -path "./aa" -o -path "./bb" \) -prune -o -name "*.txt" -print

aabb之外的子目录中查找txt文件

find . ! -name "." -type d -prune -o -type f -name "*.txt" -print

在当前目录,不再子目录中,查找txt文件

find . -perm 755 -print

在当前目录及子目录中,查找属主具有读写执行,其他具有读执行权限的文件

find . -type l -print 在当前目录及子目录下,查找符号链接文件  

find / -user www -type f -print 查找属主是www的文件

find / -nouser -type f -print 查找属主被删除的文件

find / -group mysql -type f -print 查找属组mysql的文件

find / -nogroup -type f -print 查找用户组被删掉的文件

find . -mtime -2 -type f -print 查找两天内修改的文件

find . -mtime +2 -type f -print 两天前修改的文件

mtime->被更改 atime->被访问 ctime->状态被改变

find . -newer "aa.txt" -type f -print 查找比aa.txt还新的文件

find . -newer "aa.txt" -type f -print 查找比aa.txt还旧的文件

find . -newer "aa.txt" ! -newer "b.txt" -type f -print 查找比aa.txt新,比b.txt旧的

find / -size +1M -type f -print大于1M的文件,等于1M不写加减号,-1M为小于

find . -size 6c -print 查找等于6字节的文件 c->字节 k->kb

find . -name 'del.txt' -ok rm {} \; 查找del.txt并删除,删除前提示确认

find . -name 'aa.txt' -exec cp {} {}.bak \; 查找aa.txt并备份为aa.txt.bak

 

*********************************************************************

cat 1.txt | grep -w "abcd" --color 匹配一个单词,--color加颜色

ps -ef | grep ssh | grep -v grep -v反选 -cw单词出现次数 -c出现次数多少行

grep -c "all" 1.txt 统计出现的次数

grep -n "abcd" 1.txt 显示匹配的行数

grep "abcd" 1.txt 2.txt 3.txt 查看匹配单词在哪个文件里具体位置

grep -l "abcd" 1.txt 2.txt 3.txt -l意为只显示文件名字,不显示具体位置

cat 1.txt | grep -i "ALL" -i不区分大小写

*********************************************************************

service camsd stop 停止 camsd 服务

service oracled start 启动 oracled 服务

service network restart 重启network服务

*********************************************************************

msconfig 打开开机启动项(Windows系统)

chkconfig --list 列出服务名

chkconfig --add httpd 增加httpd服务

chkconfig --del httpd 删除httpd服务

chkconfig --level httpd 2345 on 设置httpd在运行级别为2345的情况下 都是on(开启)状态

chkconfig --list mysqld 列出mysqld的服务设置情况

*********************************************************************

sed命令可以将数据行进行替换、删除、新增、选取等特定工作。

sed 参数 动作 文件,-i直接修改文件内容

nl /etc/passwd | sed '2,5d' 显示行号并删除2-5 d意为删除,nl显示行号

nl /etc/passwd | sed '2d' 只要删除第 2

nl /etc/passwd | sed '3,$d' 要删除第 3 到最后一行

nl /etc/passwd | sed '2a drink tea' 在第二行后加上drink tea字样

nl /etc/passwd | sed '2i drink tea' 在第二行前加上drink tea字样

nl /etc/passwd | sed '2a Drink tea or ......\ndrink beer' 增加两行以 上,则加\n

nl /etc/passwd | sed '2,5c number' 将第2-5行的内容取代成为number c取代

nl /etc/passwd | sed -n '5,7p' 仅列出 /etc/passwd文件内的第5-7

nl /etc/passwd | sed '/root/p' 搜索 /etc/passwdroot关键字的行

nl /etc/passwd | sed -n '/root/p' 使用-n的时候将只打印包含模板的行

nl /etc/passwd | sed '/root/d' 删除所有包含root的行,其他行输出

nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}' 搜索/etc/passwd,找到root 对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔, 这里把bash替换为blueshell,再输出这行。

nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}'

如果只替换/etc/passwd的第一个bash关键字为blueshell,就退出,加;q

/sbin/ifconfig eth0 利用 /sbin/ifconfig查询IP

/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' 将IP前面的部分删除

/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'

IP 后面的部分也予以删除

sed -i 's/\.$/\!/g' 1.txt 将1.txt内每一行结尾若为. 则换成!

sed -i '$a # This is a test' 1.txt 在1.txt最后一行加入This is a test

$代表的是最后一行,而a的动作是新增

sed -n "$=" if.txt 输出if.txt总行数

cat if.txt | wc -l 输出if.txt总行数

wc -l if.txt | awk '{print$1}' 输出if.txt总行数

sed -i '2s/C/b/' /home/1.txt 修改1.txt的第2行的Cb

sed -i 's/\r//' 192.168.2.0.txt 去除linuxwindows文件中^M(制表符不同)

wc -l if.txt 输出文件行数和文件名

*********************************************************************

awk命令:简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk是以文件的一行为处理单位的。

head -n 10 10行  tail -n 1010行,$1为第一列,以此类推。

 

last -n 5 | awk '{print $1}' 显示最近登录的5个帐号

cat /etc/passwd |awk -F ':' '{print $1}' 显示/etc/passwd的账户,

-F指定域分隔符为':'

cat /etc/passwd |awk -F ':' '{print $1"\t"$7}'

显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割

cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'

只显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"

awk -F: '/root/' /etc/passwd 搜索/etc/passwdroot关键字的所有行,注意F和:之间没有空格

awk -F: '/^root/' /etc/passwd 搜索支持正则,例如找root开头的:

awk -F : '{print $4}' 1.txt | sed '/^$/d' 输出第四列并去除全文空行

awk -F: '/root/{print $7}' /etc/passwd

搜索/etc/passwdroot关键字的所有行,并显示对应的shell$7)

awk 'NR==1' cfg.txt | awk -F '=' '{print $2}'     NR是已读的记录数,在此句可以理解为cfg.txt的第一行。

awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd

统计/etc/passwd:文件名,每行的行号,每行的列数,对应的完整行内容。

*********************************************************************

awk是一种程序语言,对文档资料的处理具有很强的功能。awk擅长从格式化报文或从一个大的文本文件中抽取数据。awk将一行文字按分隔符(filed-separator)分为多个域,依次记为$1$2 . . . $n$0代表所有域值。因此awk更适合于以域为单位来处理文件。

sed 是一个精简的,非交互式的编辑器,它能执行与编辑vi相同的编辑任务。作为编辑器,当然少不了插入(a/i/),删除(d),查找替换(s)等命令。

总结:

1. 如果文件是格式化的,即由分隔符分为多个域的,优先使用awk

2. awk适合按列(域)操作,sed适合按行操作;

3. awk适合对文件的抽取整理,sed适合对文件的编辑。

 

 

0 0