首页 > 系统相关 >最全linux基础知识

最全linux基础知识

时间:2023-07-22 16:22:32浏览次数:48  
标签:文件 data 最全 基础知识 ls linux txt root localhost

linux基础知识

 

[root@localhost ~]# 各位置表示什么意识

image-20230721160045604

root:表示用户名 (现在的用户是root切换为test便是张三)

image-20230721161040577

localhost:表示主机名 (当前主机名切换为别的主机就是别的主机名)

 

~ :家目录 (表示当所在的目录切换到etc下便是etc)

image-20230721161239966

#: 管理员用户 切换为$ : 普通用户

image-20230721161510030

关机命令:

1,halt 立刻关机

2,poweeoff 立刻关机

3,shutdown -h now 立刻关机(root用户使用)

4,shutdown -h 10 10分钟后自动关机

 

重启命令:

reboot init6 shutdown -r now

修改语言

修改LANG变量实现中文语言提示

查看安了哪些中文语言包 locale -a |grep "zh_CN"

image-20230721162759816

没有输出,说明没有安装,输入下面的命令安装 yum groupinstall "fonts" -y

[root@localhost ~]# echo $LANG查看当前系统语言环境
zh_CN.UTF-8

[root@localhost ~]# LANG=zh_CN.UTF-8
[root@localhost ~]# LANG=en_US.UTF-8
[root@localhost ~]# echo $LANG
en_US.UTF-8

 

修改颜色

[root@localhost ~]#vim /root/.bashrc
PS1='\[\e[1;34m\][\u@\h \W]\$\[\e[0m\]'

[root@localhost ~]#source /root/.bashrc

image-20230721163807963

image-20230721163947699

 

修改时间

date -s "2022-09-15 12:00"

date

 

1 shell

1.1什么是shell(壳),怎么在硬件和用户之间翻译

1.1.1shell的定义

shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口

用户使用应用程序发布指令比如 (使用浏览器访问网页)

shell去通知操作系统需要进行什么样的操作(相当于解释层)

内核相当于操作系统去指挥硬件

硬件才能工作,否则无法交互。

1.1.2 不同的shell环境

bash是linux里面默认的shell程序位于/bin/bash csh ksh 语言不同比如中文英文都是交流的语言。

[root@localhost ~]#echo $SHELL
/bin/bash
[root@localhost ~]# cat /etc/shells       //显示当前系统所有使用的shell
/bin/sh  
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@localhost mnt]# sh                       切换shell环境
sh-4.2#
[root@localhost mnt]# pstree                   查看使用过的shell环境
├─sshd───sshd───bash───csh───bash───tcsh───bash───pstree
      ├─systemd-journal
      ├─systemd-logind
      ├─systemd-udevd
      ├─tuned───4*[{tuned}]
      ├─upowerd───2*[{upowerd}]
      ├─vmtoolsd───{vmtoolsd}
      ├─wpa_supplicant
      └─xdg-permission-───2*[{xdg-permission-}]

1.1.3 shell 与 内、外部命令

(1) shell 分为内部命令 和外部命令,一般先执行内部命令,hash缓存 再执行外部命令(别名最大)

内部命令外部命令
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 Linux系统中能够完成特定功能的脚本文件或二进制程序
属于Shell的一部分 属于Shell解释器程序之外的命令
没有单独对应的系统文件 每个外部命令对应了系统中的一个文件
自动载入内存,可以直接使用 必须知道其对应的文件位置,由Shell加载后才能执行

(2) help命令可以查看内部命令

[root@localhost opt]# help 
GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu)
这些 shell 命令是内部定义的。请输入 `help' 以获取一个列表.
输入 `help 名称' 以得到有关函数`名称'的更多信息.
使用 `info bash' 来获得关于 shell 的更多一般性信息
使用 `man -k' 或 `info' 来获取不在列表中的命令的更多信息.

名称旁边的星号 (*) 意味着该命令被禁用.

job_spec [&]                   history [-c] [-d 偏移量] >
(( 表达式 ))                 if 命令; then 命令; [ el>
. 文件名 [参数]           jobs [-lnprs] [任务声明 >
:                               kill [-s 信号声明 | -n
[ 参数... ]                   let 参数 [参数 ...]
[[ 表达式 ]]                 local [option] 名称[=值] >
alias [-p] [名称[=值] ... > logout [n]
bg [任务声明 ...]           mapfile [-n 计数] [-O 起
bind [-lpvsPVS] [-m 键映射> popd [-n] [+N | -N]
break [n]                       printf [-v var] 格式 [参
builtin [shell 内嵌 [参数> pushd [-n] [+N | -N | 目录>
caller [表达式]             pwd [-LP]
case 词 in [模式 [| 模式> read [-ers] [-a 数组] [-d >
cd [-L|[-P [-e]]] [dir]         readarray [-n 计数] [-O 賾
command [-pVv] 命令 [参数> readonly [-aAf] [name[=value>
compgen [-abcdefgjksuv] [-o 缠 return [n]
complete [-abcdefgjksuv] [-pr> select NAME [in 词语 ... ;>
compopt [-o|+o 选项] [-DE] > set [-abefhkmnptuvxBCHP] [-o>
continue [n]                   shift [n]
coproc [名称] 命令 [重嬾 shopt [-pqsu] [-o] [选项厾
declare [-aAfFgilrtux] [-p] [> source 文件名 [参数]
dirs [-clpv] [+N] [-N]         suspend [-f]
disown [-h] [-ar] [任务声传 test [表达式]
echo [-neE] [参数 ...]       time [-p] 管道
enable [-a] [-dnps] [-f 文乾 times
eval [参数 ...]               trap [-lp] [[参数] 信号
exec [-cl] [-a 名称] [命乾 真
exit [n]                       type [-afptP] 名称 [名称>
export [-fn] [名称[=值] ..> typeset [-aAfFgilrtux] [-p] >
伪                             ulimit [-SHacdefilmnpqrstuvx>
fc [-e 编辑器名] [-lnr] [> umask [-p] [-S] [模式]
fg [任务声明]               unalias [-a] 名称 [名称 >
for 名称 [in 词语 ... ] ;> unset [-f] [-v] [名称 ...]>
for (( 表达式1; 表达式2> until 命令; do 命令; don>
function 名称 { 命令 ; } > variables - 一些 shell 变>
getopts 选项字符串 名祾 wait [编号]
hash [-lr] [-p 路径名] [-d> while 命令; do 命令; don>
help [-dms] [模式 ...]       { 命令 ; }

help

显示帮助信息

**help命令** 用于显示shell内部命令的帮助信息。help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用man或者info命令查看。

 

语法

help(选项)(参数)

 

(3)可以使用 type 命令来区分内外部命令

[root@localhost /]# type cd         
cd 是 shell 内嵌                       //内嵌代表内部命令
[root@test1 /]# type -a ls
ls 是 `ls --color=auto' 的别名       //别名代表外部命令        
ls 是 /usr/bin/ls                   //外部命令会有程序路径
     
[root@localhost /]# whereis ls       //whereis 可以查找命令具体的位置所在
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

[root@localhost ~]# type -a echo
echo 是 shell 内嵌
echo 是 /usr/bin/echo

外部命令存放于 echo $PATH 一个一个找,找到为止,找不到就报无命令
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
外部命令使用过后会被记录在内存(缓存,但是会占用内存,临时性的)加快读取速度
[root@localhost ~]# type useradd
useradd 是 /usr/sbin/useradd
[root@localhost ~]# useradd wu
[root@localhost ~]# type useradd
useradd 已被哈希 (/usr/sbin/useradd)
[root@localhost ~]# hash                 //或者使用hash
hash 缓存
使用过一次 外部命令   我就会将这个外部命令 缓存在hash
外部命令需要取找他的路径才能执行, 直接在缓存 调用 加快了速度
内部 外部   hash 的优先级
内部 hash 外部

命中 命令
  1 /usr/bin/dd                       //前面数字代表用过几次
  2 /usr/sbin/useradd
  1 /usr/bin/whoami
  3 /usr/bin/ls
[root@localhost ~]#hash -d dd             //清楚dd命令缓存 -r全清
[root@localhost ~]#hash -r
[root@localhost ~]#hash
hash: 哈希表为空
#清除所有缓存
[root@localhost ~]# hash
命中 命令
  2 /usr/sbin/useradd
  1 /usr/bin/whoami
  3 /usr/bin/ls

[root@localhost ~]# which ping     //外部命令的磁盘路径 -a 所有
/usr/bin/[root@localhost ~]# which help   //内部命令找不到
/usr/bin/which: no help in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

[root@localhost ~]# whereis echo           //相关文档的帮助的命令
echo: /usr/bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz

(4)开启或关闭内部命令

关闭:enable -n 内部命令

开启:enable 内部命令

[root@localhost opt]# enable -n cd
[root@localhost opt]# cd /mnt/
[root@localhost opt]#

(5)hash(扩展)

缓存空间

hash -d 加缓存里的命令 单独删除

hash -r 删除所有

将缓存的外部命令移到其他默认的目录中,无法再次使用,需要清掉hash值之后 ,才可以继续使用。

[root@localhost mnt]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root:/root/bin
[root@localhost mnt]# mv /usr/bin/ls /usr/local//bin
[root@localhost mnt]# ls
-bash: /usr/bin/ls: 没有那个文件或目录
[root@localhost mnt]# hash
命中 命令
  1 /usr/bin/mv
  2 /usr/bin/ls
  6 /usr/bin/cd
[root@localhost mnt]# hash -d ls
[root@localhost mnt]# ls
1.5.txt f15..txt   f1.txt f3.txt f5.txt
15..txt f15...txt f2.txt f4.txt
[root@localhost mnt]# hash
命中 命令
  1 /usr/bin/mv
  1 /usr/local/bin/ls
  6 /usr/bin/cd

2.命令行格式

  • 在 Linux 操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都 可以称为命令。

  • 严格来说,命令通常只代表实现某一类功能的程序的名称。

     

格式

命令字 空格  [选项] 空格 [参数]

image-20230722101540622

解释命令字 选项 参数各自的意思及具体使用方法

  1. 命令字 是整条命令中最关键的一部分 唯一确定

  2. 选项 短格式选项:使用“-”符号引导 通常 一个字母 长格式选项:使用“--”符号引导 通常完整的单词

  3. 参数 命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个

;可以隔开命令,执行多个命令

cd /opt;ll -d

image-20230722101905685

编辑Linux命令行的辅助操作(扩展)

快捷键功能
Tab 键 自动补齐(两次可以显示所有选项)
反斜杠“\” 强制换行或转义
Ctrl+e 或 end 键 光标移到最后
Ctrl+U 清空至行首不包括当前光标处的 字符
Ctrl+K 清空至行尾包括当前光标处的字符
Ctrl+a 光标移到最前
Ctrl+w 从当前光标删除到开
ALT+d 从当前光标删除末尾
Ctrl+l 清屏
Ctrl+c 取消本次命令编辑
Ctrl+s/Ctrl+q 锁屏/解锁
向上下箭头 回看执行过的命令
反斜杠举例
cmake  \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock

cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DSYSCONFIDIR=/etc -DMYSQL_DATADIR=/home/mysql/ -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock

3.获得命令帮助

3.1 help

格式说明(扩展)

  • []表示可选项

  • CAPS或<>表示可变化的数据

  • ...表示一个列表可加多个一个或多个

  • x|y|z 表示或的意思

  • -abc 是-a -b -c (有些命令选项有先后顺序) 多个 -abc 一般而言是没有顺序先后 (绝大多数是没有的,只有少数分先后

只能查看内部命令的 使用方法 tar -zxvf tar zxfv -区分前后 解压 压缩

[root@localhost ~]# help echo #内部命令查看帮助 echo: echo [-neE] [参数 ...] 将参数写到标准输出。

在标准输出上显示 ARG 参数后跟一个换行。

选项:
 -n 不要追加换行
 -e 启用下列反斜杠转义的解释
 -E 显式地抑制对于反斜杠转义的解释

`echo' 对下列反斜杠字符进行转义:
\a 警告(响铃)
\b 退格
\c 抑制更多的输出
\e 转义字符
\f 格式提供
\n 换行
\r 回车
\t 横向制表符
\v 纵向制表符
\\ 反斜杠
\0nnn 以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是
0到3个八进制数字
\xHH 以 HH (十六进制)为值的八比特字符。HH可以是
一个或两个十六进制数字

退出状态:
返回成功除非有写错误发生。
# -n 不换行显示
[root@localhost ~]# echo -n " 1 2 3"  
1 2 3[root@localhost ~]#
[root@localhost ~]# echo -n "123456";echo "123456"
123456123456
# \b 删除前一个字符
[root@localhost ~]# echo -e " 1 2\b 3"      
1  3
#\n换行
[root@localhost ~]# echo -e " 1\n 2\n 3"
1
2
3
#tab键叫制表符
[root@localhost ~]# echo -e " 1\t 2\t 3"   tab键叫制表符
1 2 3

3.2 --help

查看外部命令帮助

[root@localhost ~]# ls --help
[root@localhost dev]# useradd --help

3.3 man

man分九个章节默认打开第一章节(menu菜单 manual手册)

9个章节,

[root@localhost ~]# man man

 该清单是一组用冒号分隔的欲查找的手册清单。此选项将覆盖                MANSECT               环境变量。
              有些指令或程序可能有一个以上的主题,它们位于不同的区段中。因此,要查看较后的区 段,你可以在此指定  man
              查找区段的顺序。具体区段划分如下所示:
              区段1:用户指令
              区段2:系统调用
              区段3:程序库调用
              区段4:设备
              区段5:文件格式     shadow passwd fstab
              区段6:游戏
              区段7:杂项
              区段8:系统指令
              区段9:内核内部指令
              区段n:Tcl或Tk指令

image-20230722104704553

[root@localhost ~]# whatis ls
ls (1)               - 列目录内容
    1代表第一章手册
ls (1p)              - list directory contents
	1p 代表开发程序使用

[root@localhost ~]# whatis passwd 
#可以查看命令的章节
passwd (5)           - (未知的主题)
sslpasswd (1ssl)     - compute password hashes
passwd (1)           - update user's authentication tokens
[root@localhost ~]# man 5 passwd      
#查看第五章内容,第5章一般是配置文件格式详细解释
[root@localhost ~]# man 7 ascii
[root@localhost ~]# man 7 UTF-8
[root@localhost ~]# mandb
#生成man数据库,man命令无效时
正在删除 /usr/share/man 里的旧数据库条目...
mandb: 警告:/usr/share/man/man8/fsck.fat.8.manpage-fix.gz:忽略错误的文件名
正在处理 /usr/share/man 下的手册页...
正在删除 /usr/share/man/hu 里的旧数据库条目...
正在删除 /usr/share/man/pl 里的旧数据库条目...

3.4 info

info也可以查看相关的帮助信息

[root@localhost dev]# info ls

image-20230722110858217

3.5 百度

百度是最快解决方式不拘泥形式

4.目录操作

4.1查看切换显示统计目录

4.1.1.pwd(print work directory)

[root@localhost ~]# pwd       //显示当前路径
/root

image-20230722112105231

[root@localhost bin]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 8月   6 20:57 /bin -> usr/bin

image-20230722112802357

[root@localhost bin]# pwd -P
/usr/bin

#-P 显示真实路径
快捷方式   不是文件真正的路径

image-20230722112929007

 

[root@localhost opt]#ln -s /opt/ky18/   /mnt/k18
#设置软连接

image-20230722113909867

[root@localhost opt]#cd /mnt/k18/
#切换到软连接

image-20230722113949264

[root@localhost k18]#ls
#

image-20230722114018273

[root@localhost k18]#pwd
#显示的是当前路径
/mnt/k18

image-20230722114129224

[root@localhost k18]#pwd -P
#文件的真实路径
/opt/ky18

image-20230722114201308

4.1.2 cd

cd 目标位置 change directory

[root@localhost ~]# cd /etc/
[root@localhost etc]# 
[root@localhost ~]# cd  
[root@localhost ~]# 
[root@localhost ~]# cd  ~
[root@localhost ~]# 



家目录:存放用户个性化配置文件的地方

image-20230722114457975

命令效果
cd cd ~ 若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd - 到前一次目录
一个点号“.”开头(自己) 表示以当前的工作目录作为起点(已点开头的是)
两个点号“..”开头(上一级) 表示以当前目录的上一级目录(父目录)作为起点
“~用户名”形式开头 表示以指定用户的宿主目录(家目录)作为起点
"."开头文件 表示隐藏文件
~ky18 (有个用户叫ky18 家目录为起点) 表示以指定用户的宿主目录作为起点

4.1.2.1linux文件目录

image-20230722120334351

相对路径表现形式

文件 所在位置

[root@localhost opt]#cat passwd
#此处省略了路径
[root@localhost opt]#cat ./passwd 
#查看当前路径下的passwd文件
[root@localhost opt]#cd ./ylc1/
#切换到当前目录下的 ylc1 文件夹
[root@localhost ylc1]#
[root@localhost ylc1]#cd ../../
#切换到上两层的目录
[root@localhost /]#


-      rw-r--r--. 1 root root 474 6月  27 11:33 dm.sh


-   普通类型
l   连接
b   磁盘 
c   字符文件
d   目录
s   套接字                 
p   管道



程序和程序之间通信


mkdir /data/nginx/html -pv

cd /data/nginx/html/
echo haishi > index.html

systemctl   start     nginx

systemctl   restart   nginx 

4.1.3 ls

生产环境中慎重直接使用,文件量过大会直接死机(有的服务器上的文件是千万级别)

用法:ls [选项] [文件或目录… ]

-l已长格式显示文件和目录列表 ll=ls -l
-a 显示全部包括隐藏文件
-A 显示全部文件或隐藏文件,但不包括 . 和..
-d 仅列出目录本身,而不是列出目录内的文件数据
-h 友好显示文件大小(human,人性化)
-R 递归显示该目录及该目录的子目录下的所有内容
-t 已时间顺序显示
-r 倒序显示
--color 显示颜色
-S 以文件容量大小排序
当 ls 命令不使用任何选项时,默认只会显示非隐藏文件的名称,并以文件名进行排序,同时会根据文件的具体类型给文件名配色
[root@localhost mnt]# ll
#长格式
总用量 0
drwxr-xr-x 3 root root 16 8月  21 10:39 aa
第一个字段 d   代表文件类型比如 d是目录 - 是普通文件
第2-9(rwxr-xr-x)字母表示该文件的权限
root 文件所有者
root 文件所属组
16 文件大小
21 10:39 文件的最近使用时间
aa 文件或目录名称


[root@test1 ~]# ls -a 
#显示所有 包括隐藏文件
.                .cache     .ICEauthority         .viminfo.tmp  下载
..               .config    initial-setup-ks.cfg  .Xauthority   音乐
anaconda-ks.cfg  .cshrc     .lesshst              公共          桌面
.bash_history    .dbus      .local                模板
.bash_logout     .esd_auth  mysql.sh              视频
.bash_profile    hhh.cgg    .tcshrc               图片
.bashrc          .history   .viminfo              文档
################################################
[root@test1 ~]# ls -A 
#显示所有 不包括. ..的隐藏文件
anaconda-ks.cfg  .config    .ICEauthority         .viminfo      图片
.bash_history    .cshrc     initial-setup-ks.cfg  .viminfo.tmp  文档
.bash_logout     .dbus      .lesshst              .Xauthority   下载
.bash_profile    .esd_auth  .local                公共          音乐
.bashrc          hhh.cgg    mysql.sh              模板          桌面
.cache           .history   .tcshrc               视频
########################################################
[root@test1 ~]# ls -d   
#只显示本目录
.


[root@test1 ~]# ls -d /etc
######################################################
[root@test1 ~]# ls -lh   //加单位k友好显示
总用量 16K
-rw-------. 1 root root 1.6K 6月  18 23:13 anaconda-ks.cfg
-rw-r--r--. 1 root root    4 6月  28 13:47 hhh.cgg
-rw-r--r--. 1 root root 1.6K 6月  18 23:15 initial-setup-ks.cfg
-rwxr-xr-x. 1 root root 2.3K 6月  28 00:46 mysql.sh
drwxr-xr-x. 2 root root    6 6月  18 23:38 公共
drwxr-xr-x. 2 root root    6 6月  18 23:38 模板
drwxr-xr-x. 2 root root    6 6月  18 23:38 视频
drwxr-xr-x. 2 root root    6 6月  18 23:38 图片
drwxr-xr-x. 2 root root    6 6月  18 23:38 文档
drwxr-xr-x. 2 root root    6 6月  18 23:38 下载
drwxr-xr-x. 2 root root    6 6月  18 23:38 音乐
drwxr-xr-x. 2 root root    6 6月  18 23:38 桌面
######################################################
[root@test1 opt]# ls -R     //递归显示
.:
123456.txt  123.txt  1.txt  2.txt  abc.txt  rh  test.txt

./rh:
aaa

./rh/aaa:

颜色表示的文件类型:

  • 黑色数据文件 普通文件

  • 绿色 可执行文件

  • 黄色 块设备文件硬件设备(硬盘)

  • 红色 压缩包

  • 蓝色 文件夹

  • 天蓝色 连接文件(快捷方式)

[root@localhost ~]# vim /etc/DIR_COLORS
#颜色在这里显示

文件类型

第一个字符文件类型
- 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。
d 目录,类似 Windows 系统中的文件夹。
b 块设备文件,就是保存大块数据的设备,比如最常见的硬盘
c 字符设备文件
s 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。
p 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。
l 链接文件,类似 Windows 系统中的快捷方式。

补充:

file命令可以识别文件类型,文件后缀无法判断文件类型,文件后缀无所谓。

[root@localhost data]# ls /run/
autofs.fifo-misc  
#管道
gssproxy.sock
#套接字

7 大文件类型   

 - 普通文件   文本文档    黑色
   d  目录文件   文件夹        蓝色
   c   字符文件                     黄色
   b   块文件      硬盘设备     黄色
   l    链接文件   快捷方式     青色
   s   套接字                          紫色
   p  管道                              黄色       

4.1.4 通配符

去匹配文件名(包括文件夹)ls

符号效果
匹配一个字符 f?.txt
* 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
{1..10} 1到10
{a..z} a b c ...z
{A..Z} A B C .....Z
[123]([此处括号里值代表一个字符]) 取其中之一有就显示没有也无所谓
[a-z]单个小写字母 范围需要注意
[0-9]单个数字 匹配数字范围(0123456789)
\ 转义符,表示原来的意思
[[:lower:]] 小写字母表示 a-z
[[:upper:]] 大写字母表示 A-Z
[^zhou] 匹配列表中的所有字符以外的字符
[[:digit:]] 任意数字,相当于0-9
[[:alpha:]] 任意字母
[root@localhost opt]#ls
aa  bb  cc  passwd  rh  ylc1
[root@localhost opt]#ls ./a*
./aa
#不显示隐藏文件

image-20230722132533765

 

[root@localhost opt]#touch .aa .bb .cc
[root@localhost opt]#ls
aa  bb  cc  passwd  rh  ylc1
[root@localhost opt]#ls -a
.  ..  aa  .aa  bb  .bb  cc  .cc  passwd  rh  ylc1
#显示隐藏文件

image-20230722132750878

[root@localhost opt]#ls *
aa bb  cc passwd

rh:

ylc1:
# *不包括.开头的

image-20230722133026112

 

[root@localhost opt]#ls .*
.aa .bb .cc

.:
aa bb  cc passwd rh ylc1

..:
bin   dev home lib64 mnt proc run   srv tmp var
boot etc lib   media opt root sbin sys usr
[root@localhost opt]#
#包括了 .. 上层目录中的文件

image-20230722133049737

 

[root@localhost opt]#touch f{a..z}.log
[root@localhost opt]#touch f{A..Z}.log
[root@localhost opt]#ls
fa.log fd.log fg.log fj.log fm.log fp.log fs.log fv.log fy.log
fA.log fD.log fG.log fJ.log fM.log fP.log fS.log fV.log fY.log
fb.log fe.log fh.log fk.log fn.log fq.log ft.log fw.log fz.log
fB.log fE.log fH.log fK.log fN.log fQ.log fT.log fW.log fZ.log
fc.log ff.log  fi.log fl.log fo.log fr.log fu.log fx.log
fC.log fF.log fI.log fL.log fO.log fR.log fU.log fX.log
[root@localhost opt]#

image-20230722133423337

[root@test1 opt]# ls f[zhou].log  
#####四个其中的之一有就全显示 
fh.log  fo.log  fu.log  fz.log

image-20230722133619778

[root@test1 opt]# ls f[x-z].log   
####显示的xXyYz 不包括Z
fx.log  fX.log  fy.log  fY.log  fz.log

image-20230722133901391

[root@test1 opt]# ls f[a-c].log   
#####显示的A b B c C 不包括a
fa.log  fA.log  fb.log  fB.log  fc.log  

image-20230722134049832

[root@test1 opt]# ls f{a..c}.log
#显示所有小写
-rw-r--r-- 1 root root 0 Nov  7 09:46 fa
-rw-r--r-- 1 root root 0 Nov  7 09:46 fb
-rw-r--r-- 1 root root 0 Nov  7 09:46 fc

image-20230722134329299

[root@localhost ~]# ls 1[[:lower:]]*                
#########显示小写字母
1a1.txt  1e1.txt  1i1.txt  1m1.txt  1q1.txt  1u1.txt  1y1.txt
1b1.txt  1f1.txt  1j1.txt  1n1.txt  1r1.txt  1v1.txt  1z1.txt
[root@localhost ~]# ls 1[[:upper:]]*                 
########################显示大写字母
[root@localhost ~]# ls 1[[:upper:]]*
1A1.txt  1E1.txt  1I1.txt  1M1.txt  1Q1.txt  1U1.txt  1Y1.txt
[root@localhost opt]#ls [a-zA-Z].txt
#显示 所有大小写
[root@localhost data]#ls [a-Z].txt

######[0-9]只能匹配10 以下的
[root@localhost data]# touch f{1..10}.txt
[root@localhost data]# touch f{10..20}.txt
[root@localhost data]# ll f[0-9].txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f1.txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f2.txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f8.txt
-rw-r--r--. 1 root root 0 8月  29 01:50 f9.txt
[root@localhost data]# ll f[0-9][0-9].txt
#两个 [0-9]可以匹配双数字
[root@localhost data]# ll f{1..20}.txt
#{10..20}可以匹配双数字

[root@localhost data]# ll f??.txt
#两个?号可以匹配
[root@localhost data]# ll f*.txt
#  *也可以
-rw-r--r--. 1 root root 0 8月  29 01:51 f10.txt
-rw-r--r--. 1 root root 0 8月  29 01:51 f11.txt
-rw-r--r--. 1 root root 0 8月  29 01:51 f12.txt

[root@localhost data]# ls /etc/.*
#显示隐藏文件也包括.. 的上层目录
#如果不想看上层目录 就要加-d 只显示当前目录
[root@localhost data]# ls /etc/.* -d
#只显示当前目录
/etc/.  /etc/..  /etc/.java  /etc/.pwd.lock  /etc/.updated

4.1.5 alias

临时修改

  • alias 命令别名=’命令‘

  • unalias 别名命令 删除别名

  • \加别名命令 (显示原始命令)

[root@localhost dev]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
比如这条命令很长,就可以定义别名
[root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
#如果不加引号无法识别
[root@localhost dev]#myvim
当输入myvim,便等于vim /etc/sysconfig/network-scripts/ifcfg-ens33

image-20230722142802785

image-20230722142736887

[root@localhost dev]# alias myls=ls -alh
-bash: alias: -alh: 未找到

#就想使用原来的命令
[root@localhost dev]# ls
[root@localhost dev]# \ls

#删除别名
[root@localhost dev]# unalias myvim 
[root@localhost dev]# myvim
bash: myvim: 未找到命令...

永久修改

  • 在/etc/.profile会影响全部用户

  • /root/.bashrc只影响当前用户

补充:绝对路径>别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)

4.1.6 du(disk usage)

查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K, 不满4K 按4k算。

用法:

du [选项] [文件或目录… ]

选项说明
-a 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s(--summarize) 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
--max-depth=n (-d 1) 最大显示到第n层
--exclude 不计入统计

注意a s无法同时使用

文件夹是可以嵌套的,有的时候,我们只想展示第一级或第二级子文件夹的信息,而不希望 du 统计的层次太深,那么我们可以用 --max-depth(-d) 选项来进行控制。

我们绘制了一个示意图,movies 文件中存储了中美两国 2016 年和 2017 年的一些电影大片,而且是按照类型来分的,包括探险片、爱情片、动作片。从图 1 中可以看出,movies 文件夹中共有 3 级子文件夹。

image-20230722150413797

从图 1 中,我们可以很清晰地看到,当 --max-depth 是 0、1、2 时,du 分别对应哪一目录层级。

[root@localhost opt]#ls -lh
总用量 4.0K
-rw-r--r--. 1 root root 2.6K 8月  26 11:55 passwd
[root@localhost opt]#du -ch passwd
4.0K passwd
4.0K 总用量


[root@localhost etc]#du -d1
#只显示etc目录下的第一层
[root@localhost opt]#ls
f1111.txt ky18 passwd
[root@localhost opt]#du --exclude=*.txt
#排除已txt结尾的
0 ./ky18
4 .


#############tips########################
包括隐藏文件也会统计

df: 指的是检查文件系统磁盘空间占用情况。(disk free)

4.2 创建文件夹

  • 文件名最长255个字节

  • 包括路径在内文件名称最长4095

  • 除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用。

4.2.1 创建目录mkdir make directories

mkdir -p 递归创建 没有文件夹 会自动递归创建

mkdir [选项] 目录位置及名称…

[root@localhost data]#ls
[root@localhost data]#mkdir a b c d
#创建多个文件夹
[root@localhost data]#ls
a  b  c  d
[root@localhost data]#

image-20230722151108575

[root@localhost data]# mkdir -p aaa/bbb/cccc
# 递归创建文件夹
[root@localhost data]#ls
a  b  c  d
[root@localhost data]#mkdir -p aaa/bbb/ccc
# 递归创建文件夹
[root@localhost data]#ls
a  aaa  b  c  d
[root@localhost data]# tree
.
├── a
├── aaa
│   └── bbb
│       └── cccc
├── b
├── c
└── d
mkdir  -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
#一次建立多个文件
touch
  • touch 新文件…(可为空) 文件名 不存在就是新建空文件

  • touch 已有文件 不会破坏已有文件 刷新时间

每个文件有三个时间戳:

  1. access time 访问时间,atime,读取文件内容

  2. modify time 修改时间,mtime,改变文件内容(数据)

  3. change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )

[root@localhost data]# touch  1 2 3
#创建新文件,或空的新文件
[root@localhost data]# ls
1  2  3
[root@localhost data]# echo "" > 4
#创建4的空文件
[root@localhost data]# ls
1  2  3  4 


[root@localhost bin]# stat /etc/passwd
##############查看三种时间
  文件:"/etc/passwd"
  大小:2337      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:9381005     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-28 22:53:51.539000016 +0800
最近更改:2021-08-27 16:48:55.881739056 +0800
最近改动:2021-08-27 16:48:55.881739056 +0800
[root@localhost bin]# touch /etc/passwd
#################刷新三种时间

[root@localhost bin]# stat /etc/passwd
  文件:"/etc/passwd"
  大小:2337      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:9381005     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2021-08-29 01:43:01.305128380 +0800
最近更改:2021-08-29 01:43:01.305128380 +0800
最近改动:2021-08-29 01:43:01.305128380 +0800
创建时间:-
access time    atime   最近打开文件的时间如果你不打开文件是不会刷新的
change time    ctime   属性权限改变()  
modify time    mtime   内容改变属性(大小)

4.2.2 硬连接与软连接文件

硬连接 同一个文件取不同的名或者叫多个名字(比如 苏轼 字子瞻 号东坡居士 苏二 谥号文忠 )不支持文件夹,创建一个连接数加一,多路径访问。

软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件(应该使用什么路径? 1绝对?2 相对?). /opt /mnt

ln(link)

ln [-s] 源文件或目录… 链接文件或目标位置

加s是软连接 符号连接

对比项硬链接软链接
本质 本质是同一个文件 本质不是同一个文件
inode(身份证号) 相同 不同
连接数 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 删除,新建都不会改变
文件夹 不支持 支持
删除源文件 只是链接数减一,但链接文件的访问不受影响 无法访问连接文件
文件类型 和源文件相同 链接文件,和源文件无关
文件大小 和源文件相同(指向硬盘上的同一个文件) 源文件的路径的长度

例子

ln -s 绝对路径的源文件 软连接位置

ls 绝对路径源文件 硬连接位置

[root@localhost data]# mkdir  /data
[root@localhost data]# cd /data
[root@localhost data]# cp /etc/passwd /data/f1.txt
[root@localhost data]# ls
f1.txt
[root@localhost data]# ln /data/f1.txt /data/f11.txt
#建立硬连接
#不能跨分区建立连接 无法对文件夹创建 
[root@localhost data]# ln /data/f1.txt  /boot/f111.txt
ln: 无法创建硬链接"/boot/f111.txt" => "/data/f1.txt": 无效的跨设备连接
#删除硬链接可以继续访问硬链接。
#为什么文件夹的连接数是2?
#.也是名字..也是





当前目录  opt  . 自己   ..  /根目录

opt下有个目录 aa  
cd aa
. ..    .aa   ../opt     


a    
新建 a1

a

a1

软连接例子

删除源文件无法访问,再新建同名文件后依然可以访问
可以跨设备
可以支持文件夹
相对路径与绝对路径 建议绝对路径
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/
总用量 8
lrwxrwxrwx. 1 root root    6 8月  26 22:17 f1111.txt -> f1.txt
-rw-r--r--. 3 root root   66 8月  26 21:45 f111.txt
-rw-r--r--. 1 root root 2573 8月  26 11:55 passwd
会认为f1111.txt 与f1.txt在同一目录

################实际运用####################              
软件版本升级迭代 
开发出 app1.0   做软连接 app
如果有 app2.0   就把 软连接app删除 新建app2.0的软连接app

$PATH    以后自行安装软件  系统不会自行 识别    httpd mysql ls         
1将程序文件 放入$PATH 路径 usr/bin  
2做软连接   $PATH
3修改$PATH 路径










cp   /etc/passwd    /mnt/



cp  /etc/passwd   /etc/shadow     /mnt/

4.2.3 复制

cp(copy)备份

  1. cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为

  2. cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹

选项说明
-f 覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i 覆盖目标同名文件或目录时提醒用户确认
-p 复制时保持源文件的权限、属主及时间标记等属性不变
-r 复制目录时必须使用此选项,表示递归复制所有文件及子目录
-a 完整保留所有的信息
-v 可视化
-u 相当于增备,差异备份(只对文件夹起作用)

果已有文件夹会生成子目录

[zhangsan@localhost ~]$ ll
#张三用户新建文件
总用量 0
-rw-rw-r--. 1 zhangsan zhangsan 0 8月  29 11:17 zhansan

[root@localhost zhangsan]# cp -a zhansan /data/
#保留所有权限 包括软连接文件
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root     root     0 8月  29 11:06 1
-rw-rw-r--. 1 zhangsan zhangsan 0 8月  29 11:17 zhansan

[root@localhost data]# cp -r /etc/ /opt/
#复制文件夹要加 -r 不加不让复制
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#改名字
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#变成 etc.bak 的子目录
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#会问你要不要覆盖,cp是别名 加\cp 直接覆盖

[root@localhost data]# cp /etc/passwd /etc/shadow /opt
[root@localhost data]# cp /etc/passwd /etc/shadow /opt/f111.txt
#复制多个文件必须要是目录,不能是文件,且目录要存在。
cp: 目标"/opt/f111.txt"





4.2.4移动 改名 批量改名?写脚本,

mv [选项] … 源文件或目录… 目标文件或目录 单个文件

移动 或者改名

  • -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;

  • -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);

  • -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;

  • -v:显示文件或目录的移动过程;

批量

rename log log.bak* //所有 log文件改成 log.bak

rename 旧字符 新字符 目标文件

[root@test1 opt]# rename txt txt.bak *
#将txt改成txt.bak
[root@test1 opt]# ls
a.txt.bak E.txt.bak j.txt.bak N.txt.bak R.txt.bak w.txt.bak
A.txt.bak f.txt.bak J.txt.bak o.txt.bak s.txt.bak W.txt.bak

rename 旧字符 新字符 目标文件

[root@test1 opt]# rename txt txt.bak *.txt
#把 txt 改成 txt.bak

4.2.5 删除文件

rm [选项] 要删除的文件或目录

  • -f、强制

  • -i、交互

  • -r 递归(删除目录需要)

[root@localhost ~]# rm -rf /    #不让执行
[root@localhost ~]# echo *      #删根后查看
[root@localhost ~]# rm -rf /data/*
[root@localhost ~]# rm -rf /data/*    ##之间的区别误操作,等于删根

如何删除特殊的文件

[root@localhost ~]# touch ./-f
# -开头的文件
[root@localhost ~]# ls
[root@localhost ~]# rm -f -f
#删除不掉
[root@localhost ~]# rm -f ./-f
#需要加路径
[root@localhost ~]# touch ./-f
[root@localhost ~]# rm -- -f
rm:是否删除普通空文件 "-f"?y

删除文件后空间不释放: 有别人在使用 这个大文件 造成空间不释放

shred

rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安 全删除文件 shred格式: shred [OPTION]... FILE... 常见选项: -z 最后一次覆盖添加0,以隐藏覆盖操作 -v 能够显示操作进度 -u 覆盖后截断并删除文件 -n # 指定覆盖文件内容的次数(默认值是3次)

4.6 查找文件

4.6.1 locate

  • locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db

  • 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库

  • 索引构建过程需要遍历整个根文件系统,很消耗资源

  • locate和updatedb命令来自于mlocate包

选项

-i 不区分大小写的搜索 -n N 只列举前N个匹配项目

updatedb 

[root@localhost /]#touch YJ
[root@localhost /]#
[root@localhost /]#
[root@localhost /]#updatedb
[root@localhost /]#locate -i yj
/YJ
/yj
/usr/share/man/man3/pthread_tryjoin_np.3.gz
[root@localhost /]#locate -n 2 yj
/yj
/usr/share/man/man3/pthread_tryjoin_np.3.gz
[root@localhost /]#locate -n 1 yj
/yj

4.6.2 find

命令的特点:

  • 精确查找

  • 实时查找

  • 支持查找条件巨多

格式:

find [查找路径] [OPTION]... [查找条件] [处理动作]

find /

 

查找路径:指定具体目标路径;不指定为默认为当前目录

查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件

处理动作:对符合条件的文件做操作,默认输出至屏幕(print)

常用可选项

查找类型关键字说明
按名称查找 -name 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname "文件名称" 不区分大小写
按文件大小查找 -size 根据目标文件的大小进行查找 一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件 常用的容量单位包括 kB(注意 k 是小写)、MB、GB
按文件属主查找 -user 根据文件是否属于目标用户进行查找
按文件类型查找 -type 根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等
按inode号 -inum 根据文件inode号查找
按权限查找 -perm 按文件权限查找
最大搜索目录深度 -maxdepth level 将你的文件已分级的形式查找
最小搜索目录深度 -mindepth level 同上 find /etc -maxdepth 2 -mindepth 2

4.6.2.1 按层次查找

#掌握
-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
-mindepth level 最小搜索目录深度

例子:

find /etc/ -maxdepth 2
find /etc/ -mindepth 2
find /etc  -maxdepth 2 -mindepth 2

4.6.2.2 对每个目录先处理目录内的文件,再处理目录本身

了解
-depth  
-d #warning: the -d option is deprecated; please use -depth instead, because the latter is a POSIX-compliant feature

例子:

[root@localhost data]#tree /data/
/data/
├── aa
│   ├── 1.txt
│   └── 2.txt
└── passwd

1 directory, 3 files

[root@localhost data]#find /data/aa/
/data/aa/
/data/aa/1.txt
/data/aa/2.txt
[root@localhost data]#find /data/aa/ -depth
/data/aa/1.txt
/data/aa/2.txt
/data/aa/

4.6.2.3根据文件名和inode查找

-name "文件名称" #支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来
-inum n #按inode号查找


了解
-iname "文件名称"  #不区分字母大小写
-samefile name #相同inode号的文件
-links n   #链接数为n的文件

例子:

[root@localhost data]#find /etc/ -name "*.conf"


[root@localhost data]#ls -i
50331777 aa   9243846 passwd
[root@localhost data]#find -inum 50331777
./aa

[root@localhost data]#ln /data/passwd ./hard
[root@localhost data]#ll
总用量 8
drwxr-xr-x. 2 root root   32 9月  20 01:14 aa
-rw-r--r--. 2 root root 2259 9月  20 01:00 hard
-rw-r--r--. 2 root root 2259 9月  20 01:00 passwd
[root@localhost data]#find -samefile passwd
./passwd
./hard


[root@localhost data]#find -links 2

4.6.2.4根据属主、属组查找

-user USERNAME #查找属主为指定用户(UID)的文件
-group GRPNAME #查找属组为指定组(GID)的文件
-uid UserID #查找属主为指定的UID号的文件
-gid GroupID #查找属组为指定的GID号的文件
-nouser #查找没有属主的文件   无主
-nogroup #查找没有属组的文件

4.6.2.5根据文件类型

-type TYPE
TYPE可以是以下形式:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件

4.6.2.6空文件或目录

-empty

indoe号

例子:

[root@centos7 ~]#find /app -type d -empty

4.6.2.7组合条件

与:-a ,默认多个条件是与关系   -a  可以省略
或:-o
非:-not   !

例子:

[root@localhost data]#find ! -type d
./passwd
./aa/1.txt
./aa/2.txt
./hard
[root@localhost data]#find ! -type d -o ! -empty

4.6.2.8根据文件大小来查找

-size [+|-]#UNIT #常用单位:k, M, G,c(byte),注意大小写敏感
#UNIT: #表示(#-1, #],如:6k 表示(5k,6k]
-#UNIT #表示[0,#-1],如:-6k 表示[0,5k]
+#UNIT #表示(#,∞),如:+6k 表示(6k,∞)

例子

find /  -size +10G

4.6.2.9 根据时间戳

#以“天”为单位
-atime [+|-]#
# #表示[#,#+1)   如#是3   3 到 4天
+# #表示[#+1,∞]   如#是3 代表 4天以上      

-# #表示[0,#)   如#是3 3天以内
-mtime
-ctime
-atime
#以“分钟”为单位
-amin
-mmin
-cmin

4.6.2.10 排除目录

####了解####

#查找/etc/下,除/etc/security目录的其它所有.conf后缀的文件
find /etc -path '/etc/security' -a -prune -o -name "*.conf"

#查找/etc/下,除/etc/security和/etc/systemd,/etc/dbus-1三个目录的所有.conf后缀的文件
find /etc \( -path "/etc/security" -o -path "/etc/systemd"  -o -path "/etc/dbus-1" \) -a -prune -o -name "*.conf"


#排除/proc和/sys目录
find / \( -path "/sys" -o -path "/proc"   \) -a -prune -o -type f -a -mmin -1



find /etc \( -path "/etc/sane.d" -o -path "/etc/speech-dispatcher" \)  -prune -o -name "*.conf"

4.6.2.11处理动作

-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身

例子:

#备份配置文件,添加.orig这个扩展名
find  -name  ".conf"  -exec  cp {} {}.orig \;
#提示删除存在时间超过3天以上的joe的临时文件
find /tmp -ctime +3 -user joe -ok rm {} \;
#在主目录中寻找可被其它用户写入的文件
find ~ -perm -002  -exec chmod o-w {} \;
#查找/data下的权限为644,后缀为sh的普通文件,增加执行权限
find /data –type f -perm 644  -name "*.sh" –exec chmod 755 {} \;

#fls
find /mnt/ -name "*.bak" -fls abc
#将mnt  下  已bak结尾的文件     保存成abc

 

manual  手册


man   menu 菜单

-size [+|-]#UNIT #常用单位:k, M, G,c(byte),注意大小写敏感 +大于 -小于

-type TYPE
TYPE可以是以下形式:
f: 普通文件 file   -
d: 目录文件  
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件

-user USERNAME #查找属主为指定用户(UID)的文件
-group GRPNAME #查找属组为指定组(GID)的文件
-uid UserID #查找属主为指定的UID号的文件
-gid GroupID #查找属组为指定的GID号的文件
-nouser #查找没有属主的文件
-nogroup #查找没有属组的文件

-name "文件名称" #支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来
-inum n #按inode号查找
-links n   #链接数为n的文件

4.7标准输入输出

input 输入 键盘 鼠标 窗口里实际完成操作的事终端窗口

一个命令结束有输出 也是靠终端窗口

错误命令是输出,标准错误

output 输出 屏幕

标准输入 标准错误 标准输出 终端窗口 当前使用的

[root@localhost data]# ll /dev/std*
lrwxrwxrwx. 1 root root 15 8月  26 21:15 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 8月  26 21:15 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 8月  26 21:15 /dev/stdout -> /proc/self/fd/1
[root@localhost data]# tty    ###当前终端
/dev/pts/1
[root@localhost data]# ll /proc/self/fd/2
lrwx------. 1 root root 64 8月  27 00:57 /proc/self/fd/2 -> /dev/pts/1
[root@localhost data]# ll /proc/self/fd/1
lrwx------. 1 root root 64 8月  27 00:57 /proc/self/fd/1 -> /dev/pts/1
[root@localhost data]# ll /proc/self/fd/0
lrwx------. 1 root root 64 8月  27 00:57 /proc/self/fd/0 -> /dev/pts/1
[root@localhost ~]# ls > /dev/pts/0
#传给终端0
[root@localhost ~]# xxxx 2> /dev/pts/0
#错误重定向


#将命令结果传入一个文件

重定向 redirect

改变方向

标准输入 重定向

ls > /dev/pts/1

4.6.3参数替换 xargs

由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数

据,并且以空格符或回车符将 stdin 的数据分隔成为参数

另外,许多命令不能接受过多参数,命令执行可能会失败,xargs 可以解决

注意:文件名或者是其他意义的名词内含有空格符的情况

单独使用xargs是将键盘上的输入输出在屏幕上

[root@localhost opt]# ls /opt
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt
#我不想固定后面的参数 /opt 我想把后面的参数使用命令生成变成活的
#简单来说就是只要可以加参数的命令后面的参数是可以使用xargs灵活改变的

#xargs默认 是读取键盘输入在输出出来,把输入的东西 传给下一个命令作为参数
[root@localhost opt]# xargs
1
1
ctrl d 退出
[root@localhost opt]# xargs echo   可以省略echo
333
333

[root@localhost opt]# xargs ls -l
/etc/passwd
-rw-r--r--. 1 root root 2161 8月  26 09:27 /etc/passwd
#seq打印出10
[root@localhost opt]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@localhost opt]# seq 10 |xargs   取消换行
1 2 3 4 5 6 7 8 9 10
[root@localhost opt]# seq 10 |xargs -n1   处理一个参数换行一次
1
2
3
4
5
6
7
8
9
10


#不支持标准输出重定向
[root@localhost opt]# ls *.txt |rm
rm: 缺少操作数
Try 'rm --help' for more information.

[root@localhost opt]# touch {1..10}.txt
#将显示的结果全部删除
[root@localhost opt]# ls *.txt |xargs rm


#创建10个用户
[root@localhost opt]# echo user{1..10}| xargs -n1 useradd
[root@localhost opt]#for i in {1..10};do useradd ky$i; done
#删除
[root@localhost opt]# echo ky{1..10}| xargs -n1 userdel -r
[root@localhost opt]#for i in {1..10};do userdel -r ky$i; done



##批量下载 b站的视频
#并行下载bilibili视频
yum install python3-pip -y
pip3 install you-get
seq 10 | xargs -i -P3 you-get
    有多少集就改多少 P3 是并发
https://www.bilibili.com/video/BV1HZ4y1p7Bf?p={}
连接后面加{}

find 经常和 xargs 命令进行组合,形式如下:

find | xargs COMMAND

4.6.4 which

which 命令|程序名

which ls

image-20230722154705234

[root@localhost data]#which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@localhost data]#

5 硬件信息及其他系统信息

5.1查看 cpu

lscpu命令可以查看cpu信息

cat /proc/cpuinfo也可看查看到

 

5.2查看内存大小

free

cat /proc/meminfo

5.3查看硬盘和分区情况

[root@localhost ky15]# lsblk
NAME           MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0   5G  0 part /boot
└─sda2            8:2    0   14G  0 part
├─centos-root 253:0    0   10G  0 lvm /
└─centos-swap 253:1    0   4G  0 lvm [SWAP]
sr0              11:0    1  4.2G  0 rom  
[root@localhost ky15]# cat /proc/partitions
major minor  #blocks name

  8        0   20971520 sda
  8        1    5242880 sda1
  8        2   14688256 sda2
 11        0    4415488 sr0
253        0   10485760 dm-0
253        1    4194304 dm-1

5.4查看机器架构

[root@localhost ky15]# arch
x86_64

5.5查看内核版本

[root@localhost ky15]# uname -r
3.10.0-693.el7.x86_64
[root@localhost proc]#cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

5.6系统时间

date查看当前系统时间

-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间

%F 完整日期格式,等价于 %Y-%m-%d

% T 时间(24小时制)(hh:mm:ss)

-s 修改系统时间

[root@localhost ~]# date -d '-1 day' +%F 
#前一天

[root@localhost ~]# date +%F
#当前日期 yy-mm-dd(年月日)
[root@localhost ~]# date -d '1 day ' +%F-%T
#后一天
[root@localhost mnt]# date -d "-3 day"      
#前三天
2021年 08月 18日 星期三 11:30:15 CST
[root@localhost mnt]# date -d "+3 day"  
#后三天
2021年 08月 18日 星期三 11:30:15 CST


[root@localhost mnt]# date -s "12:34:56"
 

标签:文件,data,最全,基础知识,ls,linux,txt,root,localhost
From: https://www.cnblogs.com/sl08/p/17573580.html

相关文章

  • Linux如何使用trim命令保持SSD的读写速度
    随着硬盘技术的不断发展何固态硬盘的大量使用,你肯定听说过或者使用过固态硬盘,固态硬盘(或固态硬盘)能够达到比传统硬盘更快的读取和写入数据的速度,您可能不知道的是,随着时间的推移,当磁盘写满时,SSD硬盘在数据写入时可能会失去一些速度,如果您为了速度而在服务器中运行SSD,那么就可以使......
  • linux 中 产生随机数
     001、$RANDOM;$RANDOM用于生成0—32767的随机数[root@PC1test05]#echo$RANDOM21160[root@PC1test05]#echo$RANDOM17006[root@PC1test05]#echo$RANDOM3979 002、产生0到2的随机数[root@PC1test05]#expr$RANDOM%32[root@PC1test05]#expr$RANDOM......
  • Linux 用户和用户组管理
    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提......
  • Linux权限详解
    一、文件、目录权限和所有者简介:用户对一个文件或目录具有访问权限,这些访问权限决定了谁能访问,以及如何范围这些文件和目录。通过设置权限可以限制或允许以下三种用户访问:文件的用户所有者(属主)文件的组群所有者(用户所在组的同组用户)系统中的其他用户在linux系统中,每一位用......
  • Linux shell中提取文件名和路径
    本文地址:https://www.cnblogs.com/wanger-sjtu/p/17561896.html首先假设我的文件全称:/home/luna/Desktop/Software/softHLA/HLAreporter.v103/HLAreporter.sh.获取文件名使用${},${str##*/}这个命令的作用就是去掉变量str从左边算起的最后一个/字符及其左边的内容,返回的值是从......
  • linux找回root密码
    1、重启linux系统,移动光标至图中位置,然后按'e'键2、找到linux16...,将光标移至段落最后3、输入init=/bin//sh,然后ctrl+x,进入单用户模式 4、输入mount-oremount,rw/然后回车注意每个单词之间都有空格5、输入passwd,然后输入密码(不少于8位)6、输入touch/.aut......
  • Linux 安装常用工具,必备
    Linux安装常用工具,必备刚装的CentOS,有些工具有,有些没有,所以我会习惯性地装如下工具、yuminstalliprouteftpbind-utilsnet-toolswget-y其中:iproute用来执行ipaddress查看本机地址ftp用来测试ftp服务器bind_utils用来运行nslookupnet-tools用来执行ne......
  • linux java启动脚本示例
    start.sh#!/bin/bashnohup/usr/jdk1.8.0_102/bin/java-jar-Xms400m-Xmn200m-Xmx500m-Dtwasp.config.uri=http://192.168.128.132:9300/configs-Deureka.client.serviceUrl.defaultZone=http://192.168.128.132:9100/eureka/-Deureka.client.register-with-eureka=t......
  • linux常用命令
    转载文章作者:Gallifrey文章链接:https://gallifrey.asia/posts/fb2c02db1a9f/ 前言本文是视频教程韩顺平一周学会Linux部分章节的归纳总结,内容补充和错误纠正。概述Linux命令是一组用于在Linux操作系统上执行特定任务的命令。这些命令可以在终端窗口中使用,也可以通过......
  • linux 常用的命令
    linux常用命令防火墙相关命令安装防火墙yum-yinstallfirewalldfirewall-config防火墙生命周期管理1、为了启动防火墙,要先重启下dbus..systemctlrestartdbus2、然后通过如下命令进行防火墙生命周期管理启动一个服务:systemctlstartfirewalld.service关闭一个......