首页 > 代码库 > linux基础(11-20)

linux基础(11-20)

1.目录处理命令(上)

创建目录命令

mkdir -p 【目录名】
-p用来递归创建

mkdir -p outerdir/innerdir
desktop Jeff$ ls
$RECYCLE.BIN	Learning_Python	Thumbs.db	outerdir	实习小结.md A*算法		SSH设置		myBooks		毕业规范

切换目录命令

cd 【目录名】
cd ~cd 回到家目录
cd - 回到上次所在目录
cd .. 回到上一级目录
cd . 进入当前目录
另外control+L 清屏快捷键

绝对路径和相对路径

下面是Mac OS X的目录结构

JeffsMacBook-Pro:~ Jeff$ pwd
/Users/Jeff
JeffsMacBook-Pro:~ Jeff$ cd ..
JeffsMacBook-Pro:Users Jeff$ cd ..
JeffsMacBook-Pro:/ Jeff$ ls
Applications home Library installer.failurerequests Network net System private Users sbin Volumes tmp bin usr cores var dev 用户信息 etc

按两下tab键目录/命令补全

2.目录处理命令(下)

删除空目录

rmdir【目录名】

删除非空目录或文件

rm -rf 【目录/文件】
-r 删除目录
-f 强制
单纯rm或者rm -r会问你真的要删文件或者目录吗?
千万别打rm -rf /会删掉根目录下的所有文件!!!

复制命令

cp 【选项】【原文件/目录】【目标目录】
-r 复制目录
-p 连带文件属性复制
-d 若原文件是链接文件,则复制链接属性
-a 相当于-pdr,保证和原文件属性一模一样!

cp -r japan/ /Users/Jeff/Documents //复制japan目录下的目录到文稿目录下
cp -r japan /Users/Jeff/Documents //复制japan目录到文稿目录下

另外,ll就是ls -l命令!

剪切或改名命令

mv 【原文件或目录】【目标目录】
在同一目录下就是改名

3.其他帮助命令

选项帮助

命令 --help,如ls --help

shell内部命令帮助

help shell内部命令
whereis cd用来确定是否是shell内部命令,help cd用来获取内部命令帮助

详细命令帮助

info 命令 不推荐使用!!
-回车 进入子帮助页面
-u up进入上层页面
-n next进入下一个帮助小节
-p previous进入上一个帮助小节
-q quit退出

4.输出重定向

标准输入输出

设备设备文件名文件描述符类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdteer 2 标准错误输出

输出重定向

技术分享

ipconfig > ~/desktop/test.log,将内容保存在日志文件中
只要命令有输出就能重定向到文件中
特别注意,错误输出大于号和文件之间不能有空格!!!

正确和错误输出同时保存

技术分享

3和4作用是一样的!推荐3,4,5!
特别这个文件/dev/null,被称为『黑洞』,如果把命令重定向到这儿,系统就直接抛弃了

输入重定向

wc【选项】【文件名】
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数
这里首先引入这个例子——wc < test.logwc命令原本的输入是键盘,现在重新定向为文件,当然,其实不需要<
另外一个例子是——wc << ddy,它会要求你不断输入,知道再遇到ddy,就会停止并做相关统计,实际工作中基本不会用到

5.通配符

通配符

通配符作用
? 匹配一个任意字符
* 匹配0个或任意多个任意字符,也就是可以匹配任何内容
[] 匹配中括号中任意一个字符。例如[abc]代表一定匹配一个字符,或者a或者b或者c
[-] 匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如[^0-9]代表匹配一个不是数字的字符

Bash中其他特殊符号

符号作用
‘‘ 单引号。在单引号中所有的特殊符号,如"$"和"`"(反引号)都没有特殊含义
"" 双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"`"和"\"是例外,拥有"调用变量的值"、"引用命令"和"转义符"的特殊含义
`` 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。
$() 和反引号一样,用来引用系统命令
# 在Shell脚本中,#开头的行代表注释
$ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变味普通字符。如\$将输出"$"符号,而不当作是变量引用

举例

aa=123
echo $aa
# 输出123

echo ‘$aa‘
# 输出$aa

echo "$aa"
# 输出123

aa=`ls` # 先执行,再赋值,易弄错,不推荐
echo $aa
# 输出ls的输出

aa=$(ls) # 推荐
echo $aa
# 输出ls的输出

echo \$aa # 让特殊符号失去作用
# 输出$aa

6.文件搜索命令

文件搜索命令

locate 文件名在后台数据库中按文件名搜索,速度更快
这个数据库是/var/lib/mlocate,它的更新速率默认是一天一次,Linux版本的不同,名字不同,Mac下在/var/db/locate.datebase
可以使用updatedb命令强制更新数据库,Mac下是sudo /usr/libexec/locate.updatedb,根据距上次更新后更改的文件数目多少,速度不同
只能通过文件名来搜索
遵守/etc/updatedb.conf配置文件里的筛选规则,所以即使你更新了数据库也不一定能locate到所要寻找的文件

搜索命令的命令

  • whereis【选项】命令名
    -b 只查找可执行文件
    -m 只查找帮助文件
    Mac用不了这两个选项
  • which 命令名
    可以查看别名,Mac也没这个功能
    cd命令是shell自带的,找不到,whereiswhich能找到的都是后来安装的命令

PATH环境变量

Linux从PATH定义的路径中找寻命令,所有命令不用麻烦打绝对路径
echo $PATH查看路径,:隔开

文件搜索命令

find【搜索范围】【搜索条件】
-name 按照文件名搜索
-iname 文件名不区分大小写

Linux中的通配符

#find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配的。
* 匹配任意内容(任意多个字符)
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
find desktop/ -name "ab[cd]"匹配abc或abd

按照所有者来搜索

-user 按照所有者搜索,如find /root -user root是找root目录下所有者为root的文件
-nouser 是找没有所有者的文件,如find /root -nonuser是找root目录下没有所有者的文件

按照时间来搜索

find 【搜索范围】 -(X)time (+/-)时间
find /root -mtime +10是查找十天前修改的文件
+10 10天前修改的文件
10 10天当天修改的文件
-10 10天内修改的文件
atime 访问文件的时间
ctime 改变文件属性的时间
mtime 修改文件内容的时间

按照大小来搜索

find 【搜索范围】-size (+/-)X(k/M)
小写k是kB,大写M是MB
find /root -size +10k是查找root目录下大小大于10kB的文件

按照i节点来搜索

find 【搜索范围】-inum 【i节点号】
ls -i 【文件名】正好相反

多条件查询

find /root -size +20k -a -size -50k查找20~50kB大小的文件
find /root -size -20k -o -size +50k查找小于20或者大于50kB的文件
find /root -size +20k -a -size -50k -exec ls -lh {}\;查找20~50kB的文件,并列出详细信息
-exec/-ok 命令 {} \;用来继续处理搜索到的文件
find /root -inum 606838 -exec rm -rf {} \;找到i节点号为606838的文件然后删除

7.压缩命令1

Linux中最常见的压缩格式有:.zip .gz .bz2 .tar.gz .tar.bz2

.zip格式压缩

zip 压缩文件名 原文件 #压缩文件
zip -r 压缩文件名 源目录 #压缩目录

JeffsMacBook-Pro:~ Jeff$ zip ~/desktop/install.zip ~/desktop/install.log
  adding: Users/Jeff/desktop/install.log (stored 0%)
JeffsMacBook-Pro:~ Jeff$ ls -l ~/desktop
-rw-r--r--   1 Jeff  staff        0  4 13 18:35 install.log
-rw-r--r--   1 Jeff  staff      210  4 15 23:07 install.zip

.zip格式解压缩

unzip 压缩文件 #在哪个目录下操作就解压到那个目录下

.gz格式压缩

gzip 源文件 #压缩后源文件会被删除
gzip -c 源文件 > 压缩文件 #源文件被保留
gzip -c cangls > cangls.gz
gzip -r 目录 #只能压缩目录下所有的子文件,但不能压缩目录

可以使用通配符统一处理多个压缩文件,如rm -rf *.zip

.gz格式解压缩

gzip -d 压缩文件
等价于gunzip 压缩文件,会把源压缩文件删除

.bz2格式压缩

bzip2 源文件 #压缩后源文件会被删除
bzip2 -k 源文件 #源文件被保留
此命令不能压缩目录!

.bz2格式解压缩

bzip2 -d 压缩文件可以用-k保留源文件
等价于bunzip2 压缩文件同样可用-k

8.压缩命令2

通过打包.tar解决.gz和.bz2压缩目录的不便之处

常用压缩格式:.tar.gz.tar.bz2

打包命令

tar -cvf 打包文件名 源文件
-c 打包
-v 显示过程
-f 指定打包后的文件名
tar -cvf longzls.tar longzls
然后对打包文件进行压缩

解打包命令

tar -xvf 打包文件
-x 解打包
tar -xvf longzls.tar

.tar.gz格式

tar -zcvf 压缩包名.tar.gz 源文件 压缩
tar -zxvf 压缩包名.tar.gz 解压缩
tar -ztvf 压缩包名.tar.gz 查看压缩包内容

.tar.bz2格式

tar -jcvf 压缩包名.tar.bz2 源文件 压缩
tar -jxvf 压缩包名.tar.bz2 解压缩
tar -jtvf 压缩包名.tar.bz2 查看压缩包内容

可以在解压缩命令后加上-C 指定目录将解压出来的文件放到其他目录

可以在压缩命令的源文件处空格分开多个文件一起压缩,如tar -zcvf jp.tar.gz japan install.log

9.用户登录查看命令

查看用户登录信息

w 用户名 (不加用户名也可以)
命令输出:

  • USER:登录的用户名
  • TTY: 登录终端
  • FROM:从哪个IP地址登录
  • LOGIN@:登录时间
  • IDLE:用户闲置时间
  • JCPU:指的是该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
  • PCPU:是指当前进程所占用的时间
  • WHAT:当前正在运行的命令

who 用户名w一样,只不过更简单(不加用户名也可以)
命令输出:

  • -用户名
  • -登录终端
  • -登录时间(登录来源IP地址)

查看过去所有用户的开关机重启信息

last 默认是读取/var/log/wtmp文件数据,这是一个二进制文件,防止人为修改
命令输出:

  • -用户名
  • -登录终端
  • -登录IP
  • -登录时间
  • -退出时间(在线时间)

查看所有用户的最后一次登录信息

lastlog 默认读取/var/log/lastlog文件数据

10.字符串搜索命令

grep 【选项】"字符串" 文件名
#在文件中查找字符串
-i 忽略大小写,因为Linux严格区分大小写
-v 搜索不包含字符串的文件
grep需要使用正则表达式进行匹配

 

linux基础(11-20)