当前位置:   article > 正文

LINUX基础编程(一)_linux find n +n -n

linux find n +n -n

shell操作的快捷键

  • 遍历历史记录相关:history  上==ctrl+P (↑)  下==ctrl + N(↓)
  •     ctrl + D删除j  ctrl+H删除d    光标向右移动ctrl + F 光标向左移动ctrl+B  移动到头部 ctrl +A   移动到尾部  ctrl + E    删除光标前的字符串ctrl +U  删除光标后的字符串ctrl + K
  • 命令自动补全     TAB键            两下TAB键 列出所有情况
  • ctrl+C  强制停止进程
  • ctrl + L清屏
  • df -h  查看磁盘占用空间情况
  • which  ls  //查看ls命令所在目录

history

  1. history //显示所有历史指令
  2. history 10 //显示最近执行过的10个指令
  3. ! 100 //执行编号为100的历史指令

LINUX的目录结构

/bin: binary,二进制文件,可执行程序,shell命令

/dev:device,在LINUX下皆文件

/lib:LINUX运行的时候需要加载的动态库

/mnt:手动的挂载目录

/media:外设的自动挂载目录(linux系统会自动识别一些设备,例如U盘,光驱等,当识别后,linux会自动把识别的设备挂载到这个目录下)

/root:LINUX的超级用户的家目录

/usr:unix system resource  (安装的应用程序【/usr/local】)

/etc:存放配置文件

  1. /etc/passwd
  2. 用户的配置文件,记录用户的各种信息
  3. 用户名:密码:用户id:组id::家目录:shell目录
  4. /etc/group
  5. 组的配置文件,记录LINUX包含的组的信息

/opt:安装第三方用户程序自定义路径

/home:LINUX操作系统所有用户的家目录

/tmp:存放临时文件(重启电脑时会自动清空)

:$表示当前用户为普通用户

:#表示当前用户为超级用户

远程登录LINUX:xshell(LINUX服务器ssnd进程开启,xshell才能够进行远程连接)

上传和下载文件:xftp

用户管理

 创建新用户

useradd newuser //当创建用户成功后,会自动创建和用户同名的家目录

useradd  -d  /home/newuser   newuser   //在/home/user目录下创建名为newuser的用户,默认在newuser的分组

passwd newuser   //为newuser指定密码

删除用户

  • 删除用户,但是保留家目录
userdel 用户名
  • 删除用户,不保留家目录
userdel -r 用户名

查看用户信息

可以查看用户id,组id,用户所在组

  1. id 用户名
  2. whoami //查看当前用户

用户切换 

  1. su - 用户名 //切换到用户名指定的用户
  2. exit //返回到原来的用户

 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。

用户组相关操作

  1. groupadd 组名 //添加组
  2. groupdel 组名 //删除组
  3. useradd -g 组名 用户名 //添加用户时指定组
  4. usermod -g 组名 用户名 //修改用户所属组

 常用运行级别是3和5,要修改默认的运行级别可改文件

/etc/inittab的id:5:initdefault这一行中的数字

  1. init 5 //切换运行级别为5
  2. init 3 //切换运行级别为3
  3. init 0 //关机
  4. init 6 //重启

 找回root密码

进入单用户模式

常用命令

tree(需要安装sudo apt-get install tree)

  • tree  查看当前目录
  • tree dir 查看指定目录

cd

  1. cd //切换到当前用户的家目录
  2. cd ~ //切换到当前用户的家目录

mkdir 

mkdir -p  路径  //直接创建多级路径

ls

  • 功能:查看文件或目录
  • 参数:-a 显示所有文件  (隐藏文件:文件或目录前有一个点,例.a)
  • 参数:-l  显示文件详细信息    -lh   以人性化方式进行显示
  • list -l 等价于 ll
  •                   
  •       第一个字符:文件的类型(7种:普通文件 :-、目录:d、符号链接:l(是L)、管道:p、套接字:s、字符设备:c【键盘、鼠标】、块设备:b【U盘,硬盘】)
  • 1  :如果是文件,表示硬链接计数;如果是目录,表示目录下子目录个数
  • 3231145:如果是目录,大小永远是4K,不包含内容

mkdir 

-p:一次创建多级目录

rm

-r:删除多级目录

-i:删除时进行提示

cp

cp  file1 file(不存在)

  • 创建file,将file1中内容拷贝到file

cp file1 file(存在)

  • file1覆盖file

cp  file dir(存在)

  • 拷贝file到dir目录

 cp  dir(存在)  dir1(存在)   -r

  • 将dir目录拷贝到dir1目录中

cp  dir(存在)  dir1(不存在)

  • 创建dir1,将dir内容拷贝到dir1中,不包括dir本身

mv

mv file1 file2

  • 改名
  • mv file(存在)   file1(不存在)  --file为文件  将file命名为file1
  • mv dir(存在)   dir1(不存在)  --dir为目录    将dir命名为dir1
  • 移动
  • mv file  dir(存在目录)  file->dir
  • mv dir(存在目录)  dir1(存在目录)   dir->dir1
  • mv file(存在)   file2(存在)    file覆盖file2,同时file被删除

>和>>

  1. >输出重定向 >>追加
  2. ls -l >a.txt //列表的内容写入文件a.txt中(覆盖写),如果a.txt不存在,则创建该文件
  3. ls -al >>文件 //列表的内容追加到a.txt中
  4. cat 文件1 > 文件2 //将文件1的内容覆盖到文件2
  5. echo "内容" >文件 //将内容覆盖写到文件中

echo 

echo输出内容到控制台

head

head用于显示文件的开头部分内容,默认显示文件的前10行内容

head -5  文件名   //查看文件前5行内容

tail 

  1. tail 文件名 //查看文件后10行内容
  2. tail -5 文件名 //查看文件后5行内容
  3. tail -f 文件名 //实时追踪文档的所有更新

查看文件内容相关命令

cat 文件名(适用于文件比较小的情况)

  1. cat -n 文件名 //添加-n参数显示行号
  2. cat -n 文件名 | more //文件过长时,利用管道进行重定向输出,cat通常与more结合使用

more 文件名(enter 向下浏览一行    空格键  向下翻页  Ctrl+B向上滚动一屏 Ctrl+F向下滚动一屏  Q 退出)

less 文件名 (enter /ctrl+n   向下浏览一行  ctrl+p 向上浏览一行  空格/pagedown 向下翻页  pageup  向上翻页   Q 退出)

软硬链接

  • 软连接 (符号链接)--相当于快捷方式   软链接大小为文件路径名大小
  • ln  -s  文件名(使用绝对路径)  快捷方式的名字     使用绝对路径创建的文件的软链接移动到任何位置都有效

  • 硬链接    硬链接文件虽然和源文件大小一样,但是其实并不占用磁盘空间
  • ln 文件名  硬链接的名字

时间日期类指令

  1. //参数中必须有"+"
  2. date //显示当前时间
  3. date "+%Y" //显示当前年份
  4. date "+%m" //显示当前月份
  5. date "+%d" //显示当前是哪一天
  6. date "+%Y-%m-%d %H:%M:%S" //显示当前时间
  7. //设置时间
  8. date -s "2020-10-10 10:10:10"

 修改文件权限

chmod  u/g/o/a  +/-/=  r/w/x/-   文件名

  • 修改文件所属者     chown  新的文件所属者  文件名    
  • 修改文件所属组     chgrp   新的文件组          文件名 
  • 修改文件所属者和所属组   chown  新的文件所属者:新的文件所属组   文件名

文件查找和检索

locate

locate指令可以快速定位文件路径,基于数据库进行定位,第一次运行前,使用updatedb指令创建locate数据库

  1. updatedb
  2. locate 文件名

根据文件属性查找 - find

find  目录名   对应属性  对应参数

  • 文件名    find 查找的目录  -name  "查找的文件名"(推荐加引号)
  • 文件所属者   find  查找的目录  -user  用户名    //查找某个目录中属于某个用户的文件
  • 文件类型  find 查找目录  -type 文件类型   (普通文件:f、目录:d、符号链接:l、管道:p、套接字:s、字符设备:c、块设备:b)
  • 文件大小   find   查找目录   -size +/- 10k/M(对于单位 k必须小写,M必须大写)
  •                  find  .  -size +4k  -size -10k (查找大于4k,小于10k的文件)
  • 按日期     
  •  创建日期:find 目录名 -ctime  -n/+n
  • -n   n天以内
  • +n  n天以外
  • 修改日期: find 目录名  -mtime-n/+n
  • 访问日期: find 目录名  -atime  -n/+n
  • 深度   find   目录名   
  • find   目录名   -maxdepth  n(层数)
  •     搜索n层以下的目录
  • find   目录名   -mindepth   n(层数)
  •     搜索n层以上的目录
  • 高级查找
  • 例:查找指定目录,并列出该目录中文件详细信息
  • find  ./  -type  -d  | xargs  ls  -l

根据文件内容查找 - grep

  • grep   -r   "查找的内容"  搜索的路径  -n(显示内容所在行数,也可以不加)

压缩包

  • LINUX下常见压缩格式: .gz(用gzip进行压缩)   .bz2(用bzip2进行压缩)
  • 常用压缩命令
  • tar    -打包文件工具
  •  参数:  c  -创建压缩文件
  •               x  -释放压缩文件
  •               v -打印提示信息
  •               f -指定压缩包的名字
  •               z -使用gzip压缩文件
  •               j  -使用bzip2的方式压缩文件
  • 压缩: tar 参数(zcvf /  jcvf)  压缩包名(需要指定后缀.tar.gz)  file dir
  • 解压缩   tar   参数(zxvf  /  jxvf)   压缩包名(需要指定后缀.tar.gz)    -C(必须大写)    解压路径
  • rar   
  • rar需要安装 sudo apt-get install rar
  • 压缩   
  •          rar a  压缩包名(不用指定后缀)   压缩内容(如果是压缩目录,需要加参数-r)
  • 解压缩
  •         rar  x  压缩包名(不用指定后缀)   解压目录
  • zip   
  • 压缩: zip  压缩包名     文件、目录    (如果有目录,加参数-r)  
  • 解压缩 : unzip  压缩包名   -d   解压目录

补充:

删除test目录下所有内容,保留test目录

rm  test/*  -r

组管理和权限管理

  1. //改变文件所属者
  2. chown 用户名 文件名
  3. chown -R 用户名 目录名/ //将某目录下的所有文件及子目录所有者改为某用户
  4. //改变用户所属组
  5. usermod -g 组名 用户名
  6. usermod -d 目录名 用户名 //改变用户登录的初始目录

任务调度

系统在某个时间执行特定的命令或程序

  • 如果只是简单的任务,可以不用写脚本,直接在crontab中加入任务即可
  • 对于比较复杂的任务,需要写脚本(shell编程)

案例

  1. 要求:
  2. 设置任务调度文件:/etc/crontab
  3. 设置个人任务调度,执行crontab -e 命令
  4. 输入任务到调度文件
  5. */1**** ls -l /etc/ > /tmp/to.txt
  6. 第一个* :一小时中的第几分钟
  7. 第二个* :一天当中的第几小时
  8. 第三个* :一个月中的第几天
  9. 第四个* :一年当中的第几月
  10. 第五个* :一周当中的星期几

案例1

每隔一分钟,就将当前的日期信息,追加到/tmp/mydate中

  1. 先编写一个文件  /home/mytask1.sh,内容为 date>>/tmp/mydate
  2. 给mytask1.sh一个可执行权限
  3. crontab -e
  4. */1****  /home/mytask1.sh

案例2

每隔一分钟,就把当前日期和日历都追加到/home/mycal中

  1. 先编写一个文件  /home/mytask1.sh,内容为 
  1. date >> /tmp/mycal
  2. cal >> /tmp/mycal
  1. 给mytask1.sh一个可执行权限
  2. crontab -e
  3. */1****  /home/mytask1.sh

案例3

每天凌晨2:00将mysql数据库testdb,备份到文件mydb.bak中

  1. 先编写一个文件  /home/mytask1.sh,内容为 
testdb > /tmp/mydb.bak
  1. 给mytask1.sh一个可执行权限
  2. crontab -e
  3. 0 2****  /home/mytask1.sh

crond

  1. crond -r //终止任务调度
  2. crontab -l //列出当前运行的任务调度
  3. service crond restart //重启任务调度

磁盘分区

查询磁盘使用情况

df -lh

查询指定目录的磁盘占用情况 

  1. du -h /目录 //查询指定目录的磁盘占用情况
  2. -s //指定目录大小汇总
  3. -h //带计量单位
  4. -a //含文件
  5. --max_depth=1 //子目录深度
  6. -c //列出明细的同时,增加汇总值

案例

  • 统计/home文件夹下文件的个数
ls -l /home | grep "^-" | wc -l
  • 统计/home文件夹下目录的个数
ls -l  /home | grep "^d" | wc -l 
  • 统计/home文件夹下文件的个数,包括子文件夹里的
ls -lR /home | grep "^-" | wc -l   //R必须大写
  • 统计/home文件夹下目录的个数,包括子文件夹里的
ls -lR  /home | grep "^d" | wc -l

u盘挂载

查看u盘信息

fdisk  -l

挂载u盘到某一目录

mount   /dev/sdb1   mnt    //将设备/dev/sdb1挂载到mnt目录

卸载目录

sudo  umount /mnt   //卸载mnt目录下的设备

注意:当u盘不挂载到mnt目录,而挂载到别的目录时,会暂时覆盖别的目录的内容,卸载u盘后目录内容恢复正常。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/185476
推荐阅读
相关标签
  

闽ICP备14008679号