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地址登录
  • [email protected]:登录时间
  • IDLE:用户闲置时间
  • JCPU:指的是该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
  • PCPU:是指当前进程所占用的时间
  • WHAT:当前正在运行的命令

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

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

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

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

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

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

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

10.字符串搜索命令

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

 
时间: 2024-11-14 07:41:29

linux基础(11-20)的相关文章

【Linux基础 11】vi和vim编辑器的使用

vi -- 终端中的编辑器 目标 vi 简介 打开和新建文件 三种工作模式 常用命令 分屏命令 常用命令速查图 01. vi 简介 1.1 学习 vi 的目的 在工作中,要对 服务器 上的文件进行 简单 的修改,可以使用 ssh 远程登录到服务器上,并且使用 vi 进行快速的编辑即可 常见需要修改的文件包括: 源程序 配置文件,例如 ssh 的配置文件 ~/.ssh/config 在没有图形界面的环境下,要编辑文件,vi 是最佳选择! 每一个要使用 Linux 的程序员,都应该或多或少的学习一些

Linux基础(11)原始套接字

一边接收函数返回一边判断返回值时一定要把接收的优先级加()提高再去判断 例 if((sockfd = socket()) < 0) 问题: 如何实现SYN扫描器扫描端口 , 比如AB两个设备要进行连接 , A通过端口发一个SYN包给B,B在收到后返回一个ACK包确认连接 , 但是在不确定B端口号时 该如何进行连接 , 答: A给B的每一个端都发一个SYN包, 如果哪个有返回说明端口是开放的, TCP和UDP都无法发实现这样的连接方式 , 所以要使用原始套接字 #include <netinet

【linux基础】20、定制linux系统

一.基于HOST(宿主机)制作一个简单的可启动的linux 1.给目标磁盘分区 两个: 宿主机上:/dev/sdb1,/dev/sdb2 /dev/sdb1挂载至/mnt/boot,/dev/sdb2挂载至/mnt/sysroot 2.安装grub至目标磁盘 # grub-install --root-directory=/mnt /dev/sdb 3.复制内核和initrd文件 # cp /boot/vmlinz-VERSION /mnt/boot/vmlinuz # cp /boot/ini

linux基础篇-20,seq命令的用法

seq 用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 以指定增量从首数开始打印数字到尾数. 用于产生从某个数到另外一个数之间的所有整数 [[email protected] ~]# seq 1 5 1 2 3 4 5 [[email protected] ~]# seq  5 1 2 3 4 5 范例,循环取出$1到$#的值 取出键盘输入的值 #!/bin/bash # for I in `seq 1 $#`;do

Linux基础(20)文本处理三剑客之awk

awk是比sed更强大的文本处理工具,sed通常是以一整行为处理单位,而awk则可以按照指定的分隔符将一整行分为多个字段单独进行处理. awk的语法 awk -F separator 'BEGIN{command}condition1{command1}condition2{command2}...END{command}' filename #除了处理filename之外 awk也以处理标准输入 -F 指定分隔符,默认是空格符 例如如果指定:为分隔符,则可以这样-F: BEGIN用于指定在处理

linux基础(11)--软件包管理--RHEL6.5

1. rpm软件包管理 rpm全称是redhat package manager, 只能用于redhat系列系统的软件包管理,如RHEL.Centos.fedora 本文中光盘镜像挂载到/mnt下. 系统自带rpm包存放在./mnt/Packages下, ls | wc -l   可以查出系统自带rpm包的数目. (1)安装rpm包 rpm -ivh /mnt/Packages/XXX.rpm 如果出现以来关系,可以强制忽略: rpm -ivh /mnt/Packages/XXX.rpm (2)

Linux基础知识题解答(五)

题目来自老男孩BLOG:http://oldboy.blog.51cto.com/2561410/1709569,比较适合新手,空余的时候做一下,可以巩固Linux基础知识,有不对的地方欢迎指正. (1)155729 -rw-r--r--.  1 root root   35 Oct 28 2011  oldboy 请解析上面的每一列内容 文件inode号,文件访问权限,硬链接数,文件所属用户,文件所属组,文件最后修改时间,文件名 (2)描述下硬链接和软连接的区别 1.硬链接原文件/链接文件共用

linux 基础题整理

基础题: 1.查看系统内核版本号及系统名称 2.查看smb服务所用的端口号 3.禁ping 4.查出22端口现在运行什么程序 5.登录提示符前的输出信息"you are welcome!!!" 6.成功登录后自动输出信息"距离全国比赛还剩1天!!!" 7.确认安全终端为tty1 8.取消普通用户的控制台访问的三个权限:reboot.halt.shutdown 9.只允许组ID为10的成员通过su命令改变为root用户 10.禁止Control-Alt-Delete键

我的LINUX基础笔记

Linux系统管理      1 Day   2014.5.23 su -name   切换用户passwd 密码   更改密码gnome-terminal    伪CLI   桌面终端程序1.查看内核版本uname -r    2.查看红帽系统版本cat /etc/redhat-rdlease3.查看LINUX标准分发版信息  lsb_release4.查看网卡的IP,MAX       ifconfig                       ifconfig eth 10.0.0.10

运维基础--Linux基础命令

 Linux基础命令 刚接触Linux,往往会有一个印象就是Linux操作起来比我们熟悉的windows难,其实不然,只要了解熟知了Linux的CLI界面诸多的命令的用法就能使很多在GUI界面下的操作变的无比简单:以下是Linux使用中的几个基础命令: 1.cd: cd [-L|-P] [dir]  改变shell 的工作目录,默认是用户的家目录: cd DIR:切换到DIR目录: cd:   切换至当前用户的家目录: cd - :将工作目录切换至上一次的工作目录:两个目录之间的来回切换! 原理