1.pwd
可立刻得知您目前所在的工作目录的绝对路径名称
2.id
用于显示用户的ID,以及所属群组的ID。
3.ls
注意:目录一般显示为蓝色;文件一般显示为白色;连接一般显示为绿色。
以某种方式显示对应目录下的文件 ,隐藏文件就是在文件名前面加了个点。
解释:
d是目录文件(文件类型),后面是权限:rwx(owner:可读可写可执行)r-x(group:可读不可写可执行)r-x(other:可读不可写可执行) 2:硬链接数
第一栏root:文件拥有者,资源创建者,第二栏:group名字,是资源使用者,大小,修改时间,名字
4.mkdir aaa
在当前目录下创建aaa目录
mkdir -p ./a/b/c或mkdir -p a/b/c:在当前目录创建a,在a目录创建b,在b目录创建c(深度创建)
mkdir ./{b,c}dir或者mkdir {b,c}dir :在当前目录下创建bdir,cdir目录
5.rmdir aaa
删除当前目录下的空目录aaa
6.cat
find . -name "*.c" :将目前目录及其子目录下所有后缀是c 的文件列出来。
find 目录 -name 文件名: 在指定目录下查找文件
find 目录 -name 文件名 | less : 以分页形式显示
11.gcc
①各选项的含义:
-E:仅作预处理,不进行编译、汇编和链接
-S:仅编译到汇编语言,不进行汇编和链接
-c:编译、汇编到目标代码(也就是计算机可识别的二进制)
-o:执行命令后文件的命名
-g:生成调试信息
-w:不生成任何警告
-Wall:生成所有的警告
-m32 生成32位机器的汇编代码;
②gcc编译的四个步骤:
预处理:gcc -E Test.c -o Test.i
编译: gcc -S Test.i -o Test.s
汇编: gcc -c Test.s -o Test.o
链接生成可执行文件: gcc Test.o -o Test
12.tee
ping google.com | tee output.txt : 将ping输出到控制台的信息保存到output.txt中
13.cd
.:当前目录,./也表示当前目录
cd ~:进入家目录=cd,也就是进入到了/下的root目录
cd ..进入上一级目录
cd -:回到上一层路径,只能返回最近的一次
路径:
linux系统中,所有的文件与目录都是由根目录/开始,不是以/开头的就是相对路径;
.:表示当前目录,也可以用./表示;
..:表示上一级目录,也可以用../表示;
~:代表用户自己的宿主目录;
/:处于Linux文件系统树形结构的最顶端
14.touch
touch a:若a存在,则刷新它的修改和change时间,若不存在则创造空文件a。
16.type
每个外部命令对应一个应用程序
type ifconfig : 找到ifconfig这个应用程序的路径(只找外部命令)
而平常直接输入:ifconfig 就相当于再输入它的快捷方式
若显示:a shell builtin:则是一个内部命令
whereis类似于它,不过得先yum安装man
17.file
file /sbin/ifconfig:会显示这个应用程序的详细信息
若有一个ELF,表示这是一个二进制可执行程序(类似于windows下的exe)
若有一个text executable:则是一个文本命令
当查看yum文件的时候,会发现:
#!/usr/bin/python:表示先启动这个二进制可执行文件,再用这个文件处理一个文本文件,这个文件里面的东西都是解释性语言(python),即读一行解释一行。
注意:计算机只能加载可执行文件,不能加载文本文件。
18.yum
yum install man man-pages:安装man这个程序,以及一个帮助手册
19.echo
echo "hello" : 打印hello
echo $$:$可以取一个变量,在这儿取$的值,结果是打印一个进程id
echo $path
但是正规写法是:echo ${变量名}
echo ${a}haha:打印变量a的值+haha字符串
20.ps 显示进程状态
ps -fe:打印所有进程和它的id
21.pstree
以树状图显示进程之间的关系。
注意:shell就是可以接受用户输入命令的程序,是用户和计算机之间沟通的翻译官,而bash属于shell,linux当中的shell就是bash,而bash的作用就是:用命令行接受用户输入的命令(bash看来就是字符串),然后将字符串进行分割,看看是不是内部命令,若是外部命令则需要找到相应的实体然后运行它,最后返回结果。
具体地,当输入命令后,bash先看这个命令是不是内部命令,若不是,则在path里面找这个命令(应用程序)的位置,然后过去执行,找不到则显示command not found.
22。help
它会打印出所有的内部命令,不过man更强大
23. du命令用于显示目录或文件的大小。
方便阅读的格式显示test目录所占空间情况# du -h test
608K test/test6 308K test/test4 4.0K test/scf/lib 4.0K test/scf/service/deploy/product 4.0K test/scf/service/deploy/info 12K test/scf/service/deploy 16K test/scf/service 4.0K test/scf/doc 4.0K test/scf/bin 32K test/scf 8.0K test/test3 1.3M test
-s或--summarize 仅显示总计
24.mv
mv ./a Videos :将当前目录的a剪切到Videos目录下,还有重命名功能
25.ln
ln a b: 使用硬链接,对a连接出来一个b来
ln -s a b:使用软链接
26.stat
stat a :显示a的元数据
a文件的权限属于a的元数据
change记录改变元数据的时间。若改变profile文件的权限,则stat后可以发现change变了,若改变profile文件里面的内容时,则modify,change都变了,因为大小发生了变化导致元数据发生了变化,使得change变了。
28.grep
grep "asd" a: 返回a文件中,含有asd的行
grep -v "asd" a:显示不含asd的行
-e:使用扩展正则表达式
grep "^asd" grep.txt :查找以asd开头的行
grep "^asd\>" grep.txt:查找以asd开头的行,且asd是一个单词的结束
grep "a[0-9]b" grep.txt:含 a数字b 的行
grep "a[0-9]\+b" grep.txt:含 a多个数字b 的行,由于+是红色,不是基本的,需要再加\
grep "a[0-9]\{4\}b" grep.txt:含 a4个数字b 的行,由于{}是红色,不是基本的,需要再加\
grep "a.*b" grep.txt: 该单词首位是a,b,中间任意字符,所在行
grep "\(a\)\1" grep.txt: ()表示一个组,\1表示第一个组
29.cut
cut -d" " -f1 grep.txt : 自定义分隔符“ ”,以它作为分割符,显示grep.txt第一列的数据
cut -d" " -s -f1 grep.txt : ....,仅仅显示被切割的行
cut -d" " -s -f1-3 grep.txt :.....,显示第一至第三列,以“ ”作为分割
30.sort
sort a : 默认对第一个字符按字典序排列行
sort -t" " -k2 -n a:以“ ”为分割,对第二列,以数值序进行排序
31.wc :统计用的命令,可以用man wc看看帮助
wc -l a:打印a的文件的行数
32.sed可以不用vi进入文件,而是直接操作
sed "1a\hello" a : 在a文件的第一行的后面加一行,内容为hello,打印到屏幕,但是不改变原文件
sed -i "1a\hello" a : 要改动原文件
sed "2d" a :把第二行删了再显示,但不改变文件
sed "/aa/d" a :查找asd所在行,然后删了
sed "s/fuck/good/" a 或者sed "s@fuck@good@" a 或者 sed "s#fuck#good#" a :把fuck换位good
init文件当中的:id:3:.....中的3是启动后进入命令行模式,5是图形用户界面,但是该程序在Linux中属于用户模式,安装了才能用
sed "s/\(id:\)[0-6]/\15/" a:把id:数字替换为id:5
33.awk
awk -F':' '{print $1 }' passwd :读入passwd文件的每一行,以:作为分隔符,如果不写-F":"就默认以空格和制表符为分隔符,对于每一行执行{}里面的语句,而大括号里面的是给awk看的而不是bash,所以要用单引号,对每一行打印第一列
echo "$a" : 由于bash解析,则打印a值
echo '$a':打印$a
awk -F':' 'BEGIN{print "name\tshell"} {print $1 "\t" $7} end{print "hello"}' passwd: 先执行begin方法,打印name shell,然后读取每一行并执行匿名方法,打印第一列和第七列,最后执行end方法。
awk -F':' '/root/{print $0}' passwd : 打印passwd文件里面,含有root关键字的行($0代表整行,$1代表第一列)
多个匿名方法:
awk -F' ' '/root/{print "asd"$0} {print $0}' a : 将a文件的每行拿出来分别经过所有的匿名方法。
awk -F' ' '{print NR"\t"NF"\t"$0}' a :NR是一个内部变量——行号,NF是列数
例子:
Tom 0 12-12-11 car 3000
John 1 13-01-13 bike 1000
vivi 1 13-01-18 car 2800
Tom 0 13-01-29 car 2500
John 1 13-01-28 bike 3500
awk '{split($3,date,"-");if(date[2]=="01"){name[$1]+=$5;}}END{for(i in name){print i"\t"name[i]}}' a: split:对字符串$3以‘-’作为分割,分割后的元素被存到date数组里面。这里面的数组下标从1开始。新建name变量,以$1作为name的key,让它+上该行第5列的数据。意思是:统计出01月份里,员工们的工资分别是多少,结果放到name的value里面。最后再END{}当中,i遍历key,打印出name[i],即打印出所有员工的工资。
awk '{split($3,date,"-");if(date[2]=="01"){name[$1]+=$5;};if($2=="0"){role[$1]="M"}else{role[$1]='W'}}END{for(i in name){print i"\t"name[i]}}' a:加入‘男‘,‘女’的显示
34.source或.或bash或者#!
vi新建一个a.txt,里面写:echo "asd"
source a.txt就能执行了,或者. a.txt
bash a.txt : 先开启一个bash进程,此时当前进程id更换(可以用echo $$查看),随后读入a.txt
还有一种方法,在a.txt里面的开头一行写上:#!/bin/bash
随后chmod +x a.txt将普通文件变成程序
最后直接./a.txt就能执行了,此时也是又开辟一个新bash进程,然后让它读取文件去执行。
35.函数
函数的本质就是命令,外部命令包括执行程序,脚本,函数
直接定义:fun(){
echo "asd"
echo $$
}
此时定义好了
最后在命令行里面直接执行,输入:fun即可,可以再用type fun看看
36.bash7步扩展
37.netstat 查看建立了什么连接
netstat -nap : n:以ip地址显示,不进行ip地址与逻辑名称的转换,a:所有,p:进程
38.router -n
查看路由表
39.arp -a:
打印arp表