Linux 命令总结

我们需要掌握Linux命令150个,常用的也就80个。

命令 --help 命令的简单帮助

man ==命令的复杂帮助

help ==命令的帮助(bash的内置命令帮助)

ls ==list 查看目录列表,-l(long),-d(directory),-F给不同文件类型结尾加标识,-p给目录加斜线,-r reverse反转排序,-t按修改时间排序

--color=auto 给输出的不同类型文件加不同颜色

-a 显示隐藏文件

--time-style=long-iso,显示友好的长格式时间。

mkdir ==make directory 作用是创建目录,例如:mkdir /data -p 递归创建目录。

cd ==change directory 作用切换路径,例如:cd /

touch ==摸一下的意思,作用是创建文件,例如:touch oldboy.txt

vi ==编辑器,相当于记事本,有编辑功能,但较弱。

vim ==复杂编辑器或者说高级编辑器,相当于EmEditor,editplus,notepad++

echo ==打印输出内容,配合“>或>>”可以为文件覆盖及追加内容

-n不换行输出;-e解析转义字符 \t tab \n 回车 \b 退格

echo "oldboy

oldgirl" >oldboy.txt

cat ==查看文件内容,-n查看行号

特殊用法:增加多行内容

cat >>/data/oldboy.txt<<EOF

I am studying linux.

EOF

EOF要成对出现,EOF可以被任意成对内容替换。

cp ==copy 复制命令,例如:cp oldboy.txt /tmp/

-r:递归,用于复制目录;-p:保持属性。

-a:相当于 -pdr

cp'cp -i' -i 需要确认

mv ==移动目录或文件,例:mv /data /root/

pwd ==print work directory 查看当前用户所在的路径

rm ==remove 删除文件或目录;强制删除 -f ,删除目录 -r

生产场景尽量不要使用rm,如果非要用,一定要先cp等备份。

替代方法:mv移动到一个临时目录。相当于回收站。

find删除

find /root/data/ -type f -exec rm -f {} \;

find /root/data/ -type f|xargs rm -f

find***** ==查找-type 按文件类型查找;-name 按照名字查找,查找的内容最好用双引号括起来;! 取反。-a(and)并且,-o(or)或。-maxdepth [数字] 查找深度,-mtime 修改时间

find /oldboy -maxdepth 1 -type d ! -name "oldboy"

head ==头部,取文件的前N行,不接参数默认前10行;

取前三行-n 3,简写就是-3。

tail ==尾巴,取文件的最后N行,不接参数默认前10行;

取最后三行-n 3,简写就是-3。-f跟踪一个文件尾部的实时变化。

awk***** ==一门语言,可以过滤内容(擅长取列),打印,删除。Linux三剑客 老大

awk -F "分隔符号" '{print $1}' 文件

<==$1第一列,$2第二列...$NF最后一列,$(NF-1)倒数第二列

例:awk '{if(NR<31 && NR>19) printf $1"\n"}' test.txt

NR代表行号,&&(and)并且,\n回车换行,$0 表示整行

awk多分隔符用法:

[root@oldboy-test ~]# cat oldboy.txt

I am oldboy,myqq is 49000448

[root@oldboy oldboy]# awk -F "[, ]" '{print $3" "$6}' oldboy.txt

oldboy 49000448

grep***** ==擅长过滤器,把想要的或者不想要的分离开。-v 排除。Linux三剑客 老三。

-i 不区分大小写,-E 过滤多个字符串,-o 输出精确匹配的字符而不是默认的整行。

--color=auto 给匹配到的字符串加颜色(不是整行),-n 打印匹配内容行的行号

#Context control:

-B 除了显示匹配的一行之外,并显示该行之前的num行

-A 除了显示匹配的一行之外,并显示该行之后的num行

-C 除了显示匹配的一行之外,并显示该行之前后各num行

grep "string" -B 10 test.txt

grep一般常用参数:

-a:在二进制文件中,以文本文件的方式搜索数据

-c:计算找到 ’搜索字符串’ 的次数

-o:仅显示出匹配regexp的内容(用于统计出现在文中的次数)

-i*****:忽略大小写的不同,所以大小写视为相同*****

-n*****:在行首显示匹配内容行的行号*****

-v*****:反向选择,即不显示 ‘搜索字符串’ 内容的那一行*****

-E*****:扩展的grep,即egrep*****

--color=auto***:以特定颜色高亮显示匹配关键字(不是整行)***

#提示: -i -v 为常用参数。

-A:After的意思,显示匹配字符串及其后n行的数据

-B:beforce的意思,显示匹配字符串及其前n行的数据

-C:显示匹配字符串及其前后各num行的数据

sed***** ==(stream editor)擅长取行、替换 Linux三剑客 老二。

过滤:sed -n '/过滤的内容/处理的命令' 文件

-n 取消sed的默认输出

-i 改变文件内容。

处理的命令:p print打印;d delete删除

例子:

sed '/oldboy/d' test.txt

sed -n '/oldboy/p' test.txt

sed替换:*****

sed -i 's#oldboy#oldgirl#g' test.txt

s 常说的查找并替换,用一个字符串替换成另一个

g (global)与s联合使用时,表示对当前行全局替换(与下一个g意义不同)

-i 修改文件内容

"#"是分隔符,可以用 / @ 等替换

sed -r 's#(.*)#I am \1#g' test.txt

= 表示行号

sed '/$/a\\n' test.txt 可以在文件的每行末尾添加一个回车

sed '$a\eof' test.txt 可以在文件的末尾添加'eof'

yum ==Linux里的包管理器,yum帮助解决依赖问题。

yum update -y <==upgrade,windows打补丁。

例子:yum install tree(包名) -y

下载tree包,然后调用rpm命令安装tree包

如果需要依赖包,帮你下载帮你提前安装。

yum grouplist 里选包组,然后yum groupinstall "包组" -y

yum search 关键字或 yum search all

yum remove tree -y <==不要用

remove or erase

Are used to remove the specified packages from the system as

well as removing any packages which depend on the package being

removed.

rpm ==安装参数 -i install -v verify -h hash ;

-ivh(安装、显示输出、人类可读展示)

例子:rpm -ivh 包名.rpm(提前下载好)

最大问题,依赖问题不好解决:安装a提示需要b,安装b提示需要c...

[root@oldboy66-23 ~]# rpm -qa tree <== -q query -a all

tree-1.5.3-3.el6.x86_64

tree ==显示目录树结构 -L 层数,-d 目录

alias ==查看以及定义别名(外号、小名)

例子:

oldboy='echo "I am oldboy linux."'

alias rm='echo "rm can not be used,pls use mv"'

别名生效的位置:针对root用户:/root/.bashrc

所有用户都生效:/etc/bashrc或/etc/profile定义

生效source /etc/profile

别名的作用:

1)通过给危险命令加一些保护参数,防止人为误操作。

2)把很多复杂的字符串或命令变成一个简单的字符串或命令。

unalias ==取消别名

seq == sequence=seq序列 -s 指定序列的分隔符;-w

Usage: seq [OPTION]... LAST

or: seq [OPTION]... FIRST LAST

or: seq [OPTION]... FIRST INCREMENT LAST

history ==打印用户操作的历史记录。-c清除所有记录,-d清除指定记录

hostname ==查看主机名(uname -n)

uname ==打印系统信息 -r内核;-m32还是64位;-n主机名;-a所有

su ==用户角色切换;su - 用户名、-相当于是一个参数,切换用户环境变量

从普通用户到root,需要输入root密码。从root到普通用户无需密码

普通用户 大臣,root 皇帝。

getenforce ==检查selinux状态

setenforce ==设置SELINUX状态 1启用 0警告、不启用

runlevel ==查看当前系统运行级别

init ==切换运行级别,后面接对应级别的数字

init 5 === startx 切换桌面环境。需桌面软件包

chkconfig ==设定开机自启动服务

diff ==比较,接两个文件。

vimdiff ==高级比较,高亮显示两个文件内容区别

which ==查找命令所在路径,搜索范围来自全局环境PATH变量对应的路径。

history ==显示历史记录,-c清除所有记录,-d清除指定记录

whereis ==查找相关信息 -b查二进制命令

locate ==从数据库里查相关信息,新命令需提前updatedb更新数据库

ulimit ==-SHn -a Modify shell resource limits

wget ==下载 wget http://url

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 下载到指定路径改名

--spider 爬虫,检查网站是不是好的,不会下载只是检查

-T seconds --timeout=seconds 超时时间。

--tries=2 指定重试的次数

-q --quiet 关闭输出

visudo ==编辑sudo配置文件(相当于vi /etc/sudoers)-c 检查语法

sudo ==调兵虎符,sudo配置文件授权之后,执行命令时候需要命令前带sudo

ifup ==启动网卡

ifdown ==停止网卡

fsck ==-A磁盘检查(不要检查好磁盘),卸载的状态检查。

dmesg ==内核打印的错误信息,例如硬件故障警告

tar ==打包(zcvf),解包(zxvf、xf),查看包内容(tf),-C指定路径解包。

--exclude和-X 排除打包

--exclude=opt/test.txt <==排除opt/test.txt

-X, --exclude-from=FILE

exclude patterns listed in FILE

tar zcvfX oldboy.tar.gz paichu.txt ./oldboy <==使用X参数按文件内容排除打包,排除paichu.txt文件的内容。

-P 使用绝对路径打包(危险),-j bzip包的解压缩。

-C 指定路径解压 tar zxvf oldboy.tar.gz -C /tmp/ <==指定/tmp目录解压

gzip unzip zip ==压缩解压缩

cut ==切割,简单的取列命令 -d指定分隔符,-f数字 取第几列。-f3,6

-c按字符取。

[root@oldboy-test ~]# cat oldboy.txt

I am oldboy myqq is 49000448

[root@oldboy-test ~]# cut -c 6-12,21- oldboy.txt

oldboy 49000448

wc ==打印行号,字节数等 -l 行数(企业案例)

有关使用wc命令的工作实战案例可参考:

http://oldboy.blog.51cto.com/2561410/577227

stat == - display file or file system status

chmod == change mode改变文件权限

useradd ==添加用户 -u 指定uid ,-g 指定所属组 ,-s 指定登录shell ,-M 取消家目录

-e 指定用户过期时间

usermod ==修改用户 -u 指定uid ,-g 指定所属组 ,-s 指定登录shell

-e 指定用户过期时间

chage ==查看及修改用户密码相关信息 -l 查看,-E 修改帐号过期时间

passwd ==修改用户密码 --stdin 非交互式设置密码

who ==show who is logged on

w ==show who is logged on and what they are doing

whoami ==查看当前用户

uniq ==字符串去重 -c计数

相关文件:老男孩教育uniq命令.txt

sort ==字符串排序 -n,-r,-t,-k,-u(-u 一般用不到,很少用到)

相关文件:sort 排序命令-k参数小技巧总结.txt

#############磁盘管理##############

dumpe2fs == - dump ext2/ext3/ext4 filesystem information

fdisk -l ==查看磁盘及分区信息,fdisk /dev/sdb *****

parted ==一般用于大于2T的磁盘分区 ***

partprobe ==通知系统分区表的变化 ***

mkfs ==格式化磁盘分区 mkfs -t ext4 -I inodesize -b blocksize ***

tune2fs ==调整文件系统参数 tune2fs -c -1 /dev/sdb1

mount ==挂载 mount -t ext4 -o loop,noatime,noexec /opt/sdb1 /mnt *****

df -h ==以人类可读的信息查看磁盘挂载信息,-i查看挂载的磁盘inode使用情况 *****

du -sh ==查看目录和文件大小 ****

dd == ***

e2fsck ==check a Linux ext2/ext3/ext4 file system

resize2fs ==ext2/ext3/ext4 file system resizer

free -m ==查看内存大小(buffer,cache);看“-/+ buffers/cache:”的这一行 *****

fsck ==磁盘检查 fsck -C -f -t ext3 /dev/sda6 ***

check and repair a Linux file system

卸载状态检查,没问题的分区不要操作。

fsck -y /dev/sda1

-y 对文件系统做一些具体的检查 For some filesystem-specific checkers

-A Walk through the /etc/fstab file and try to check all file sys-

tems in one run. This option is typically used from the /etc/rc

system initialization file, instead of multiple commands for

checking a single file system.

(-C 显示进度条,-t 指定文件系统类型)

#############磁盘管理##############

lsattr ==查看特殊属性。

chattr ==设置特殊属性,例如:+i 不可变

解析命令:

方法:反引号``或$()

tar zcvf etc-`date +%F`.tar.gz /etc

tar zcvf oldboy-$(date +%F).tar.gz /etc

暂时不用理的命令

ps

locate

whereis

export

netstat(ss)

ifconfig

source

ntpdate

less* ==按屏(空格,page up/page down)或按行(回车)查看文件

more ==按屏(空格)或按行(回车)查看文件(不能向上翻)

快捷键:

TAB 命令、路径补全

特殊字符命令:

>或1> 重定向,会清除文件里所有以前数据,增加新数据。

>>或1>> 追加重定向,文件结尾加入内容,不会删除已有的文件内容。

<0 输入重定向

<<0 追加输入重定向

2> 错误重定向

2>> 错误追加重定向

===============================

1.标准输入(stdin): 代码为0,使用<或<< 数据流向从右向左

2.正常输出(stdout):代码为1,使用>或>> 数据流向从左向右

3.错误输出(stderr):代码为2,使用2>或2>>

箭头的指向就是数据的流向。

下面的3种方法是等价的

/dev/null 空设备 黑洞

1) 1>/dev/null 2>/dev/null

2) 1>/dev/null 2>&1 *****用得最多的

3) &>/dev/null

\ 转义符;让一个有意义的字符,脱掉马甲。\.代表点号。

.. 相对路径,表示当前目录的上一级目录,例如:/mnt/oldboy,mnt就是oldboy的上级目录。

. 相对路径,表示当前目录,即当前命令行的目录。以点开头的文件代表隐藏文件。

| 管道(把前一个命令结果的输出交给后一个程序继续处理)

~ 用户的家目录,针对root环境 ~就代表/root。

{} 输出字符序列或者数字序列

! ......

基础正则表达式:一些特殊的符号 表示一些特殊的作用和功能

定义好的,不能改变。

. 单个任意字符

* 重复前面任意0个或多个字符

.* 匹配任意字符

sed -i 's#(可以用正则匹配)#\1#g' oldboy.txt

把前面正则匹配的括号内的结果,在后面用\1取出来操作。

^ 表示以...开头,^oldboy 以oldboy开头

$ 表示以...结尾,oldboy$ 以oldboy结尾

正则表达式实战举例:

1)^word 搜索以word开头的。vi ^一行的开头

2)word$ 搜索以word结尾的。vi $一行的末尾

3)^$ 表示空行,能理解么?

4). 代表且只能代表任意一个字符。

5)\ 例 \. 就只代表点本身,转义符号,让有着特殊身份意义的字符,脱掉马甲,还原原形。\$。

6)* 例 s* 重复0个或多个前面的一个字符

7).* 匹配所有字符。延伸 ^.* 以任意多个字符开头。 .*$ 以任意多个字符结尾

8)[abc] 匹配字符集合内的任意一个字符[a-zA-Z],[0-9]。

9)[^abc] 匹配不包含^后的任意字符的内容。中括号里的^为取反,注意和以..开头区别。

10)a\{n,m\} 重复n到m次,前一个重复的字符。如果用egrep/sed -r可以去掉转义符。

11)\{n,\} 重复至少n次,前一个重复的字符。如果用egrep/sed -r可以去掉转义符。

12)\{n\} 重复n次,前一个重复的字符。如果用egrep/sed -r可以去掉转义符。

13)\{,m\} ??????

注意:egrep,grep -E或sed -r过滤一般特殊字符可以不转义。

环境变量:

PATH 系统路径变量,执行ls,cp等非内置命令时,系统会查找PATH里对应的路径是否有,如果没有就报告找不到该命令。

当执行which cp来查看命令所在路径的时候,也是从PATH变量去搜索。

临时修改:export PATH="/tmp:$PATH" ,永久修改前面临时修改的命令放到/etc/profile下,使用source /etc/profile使得修改立刻生效。

相对路径:

不从/开始,而是从当前目录开始。例如:data/,mnt/oldboy

绝对路径:

从/开始的目录,就叫绝对路径。例如:/data/,/mnt/oldboy

bash内置命令:用help命令查帮助