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解析转义字符 tab
回车 退格
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"
"}' test.txt
NR代表行号,&&(and)并且,
回车换行,$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 '$aeof' 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命令查帮助