Linux目录和基础命令

1 Linux目录结构

Linux目录结构为单根倒置树结构

/bin:

bin是Binary的缩写, 这个目录存放二进制程序,经常使用的命令。

/boot:

这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :

dev是Device(设备)的缩写, 该目录下存放的是设备文件及特殊文件,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc:

存放所有的系统管理所需要的配置文件。

/home:

普通用户的家目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:

存放库文件,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:

这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:

便携时移动设备挂载点,例如U盘等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:

临时文件挂载点,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt:

安装第三方软件所存放的目录。比如你安装一个数据库则就可以放到这个目录下。默认是空的。

/proc:

这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

用于输出内核与进程信息相关的虚拟文件系统。

这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件

/root:

该目录为系统管理员的家目录,也称作超级权限者的用户家目录。

/sbin:

s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux:

这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:

该目录存服务运行时需要的数据。

/sys:

用于输出当前系统上硬件设备相关信息虚拟文件系统。也是在存放在内存中。

/run

存放正在运行中的程序的相关文件

/tmp:

这个目录是用来存放一些临时文件的。

/usr:

这是一个非常重要的目录,用户的应用程序和文件都放在这个目录下。

/usr/bin:

系统用户使用的应用程序。

/usr/sbin:

超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

/var

这个目录中存放着在不断变化着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

selinux:linux安全策略

Linux目录分层标准

1.1 Linux文件名命令要求

路径以/分隔

文件名最长255个字节

包括路径在内,文件名称最长4095个字节

除了斜杠和NULL,所有字符都有效,但是不推荐用特殊字符做文件名和目录名。

1.2 文件的类型

文件的类型:

- 普通文件,

d 目录文件

b block device 即块设备文件,如硬盘;支持以block为单位进行随机访问

c character device 即字符设备文件,如键盘支持以character为单位进行线性访问

l symbolic link 即符号链接文件,又称软链接文件

p pipe 即命名管道文件

s socket 即套接字文件

2. 基础命令

2.1 ls

ls 常用选项

  -a 显示隐藏文件

  -l 显示文件的属性

  -d 显示目录

  -R 目录递归

  -S 按文件大小从大到小排序

  -t 按mtime排序

  -u  配合-t 选项,显示并按atime从新到旧排序

  -U 按目录存放顺序显示

  -X 按文件后缀排序。

  mtime :文件内容被改时间

  ctime :文件属性被修改时间

  atime: 文件访问时间

  ls -l --time=ctime/atime filename

  修改一个文件后,mtime会变,这时查看ctime也会变,因为是修改,文件大小也会变,ctime是看属性的,文件大小也属于属性

2.2 cd和pwd

pwd 显示当前在目录的绝对路径
cd 切换目录

2.3 命令提示符

命令提示符: prompt

# 管理员
$ 普通用户
显示提示符格式:
[root@Hans ~]# echo $PS1
[\u@\h \W]\$
修改提示符格式
PS1="\[\e[33;40m\][\u@\h \W]\\$\[\e[0m\]"
\e \033 \u 当前用户
\h 主机名简称 \H 主机名
\w 当前工作目录 \W 当前工作目录基名
\t 24小时时间格式 \T 12小时时间格式
\! 命令历史数 \# 开机后命令历史数

2.4 echo命令

功能:显示字符

语法: echo [-neE][字符串]

说明: echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开,

并在最后加上换行号

选项:

-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能

显示变量

echo "$VAR_NAME” 变量会替换,弱引用
echo '$VAR_NAME’ 变量不会替换,强引用

启用命令选项-e, 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出

\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
echo -e '\033[43;31;5m10itedu\033[0m'
\xHH插入HH(十六进制)所代表的ASCII数字( man 7 ascii)

2.5 tab键

**命令补全 **

内部命令:

外部命令: bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻

以给定命令名命名的文件,第一次找到的命令即为要执行的命令

用户给定的字符串只有一条惟一对应的命令,直接补全

否则,再次Tab会给出列表

**路径补全 **

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字

符串开头的文件名

如果惟一:则直接补全

否则:再次Tab给出列表

2.6 history 历史命令

保存你输入的命令历史。可以用它来重复执行命令

登录shell时,会读取命令历史文件中记录下的命令~/.bash_history

登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中

重复前一个命令,有4种方法:

  1. 重复前一个命令使用上方向键,并回车执行
  2. 按 !! 并回车执行
  3. 输入 !-1 并回车执行
  4. 按 Ctrl+p 并回车执行

查看历史命令

history

执行历史命令

!:0 执行前一条命令(去除参数)
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p 仅打印命令历史,而不执行
!$:p 打印输出 !$ (上一条命令的最后一个参数)的内容
!*:p 打印输出 !*(上一条命令的所有参数)的内容
!:s^string1^string2 将上一条命令中的第一个string1替换为string2
示例:
[root@localhost ~ 16:07:37]#ls -l -r -t
total 36
-rwxr-xr-x. 1 root root 18681 Aug 26 2016 Tetris.sh
-rw-------. 1 root root 1615 Mar 15 10:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 565 Mar 16 15:00 test.txt20210316
-rw-r--r--. 1 root root 2179 Mar 17 10:54 test.txt
-rwxr-xr-x. 1 root root 137 Mar 17 11:54 test.sh
[root@localhost ~ 16:07:46]#!:s^r^a #把上一命令的第r换成a !:gs/string1/string2 将上一条命令中所有的string1都替换为 string2
示例:
[root@localhost ~ 16:07:37]#ls -l -r -t
total 36
-rwxr-xr-x. 1 root root 18681 Aug 26 2016 Tetris.sh
-rw-------. 1 root root 1615 Mar 15 10:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 565 Mar 16 15:00 test.txt20210316
-rw-r--r--. 1 root root 2179 Mar 17 10:54 test.txt
-rwxr-xr-x. 1 root root 137 Mar 17 11:54 test.sh
[root@localhost ~ 16:07:46]#!:gs^l^a #把上一个命令的全部l换成a

**调用历史参数 **

command !^ 利用上一个命令的第一个参数做cmd的参数
command !$ 利用上一个命令的最后一个参数做cmd的参数
command !* 利用上一个命令的全部参数做cmd的参数
command !:n 利用上一个命令的第n个参数做cmd的参数
command !n:^ 调用第n条命令的第一个参数
command !n:$ 调用第n条命令的最后一个参数
command !n:m 调用第n条命令的第m个参数
command !n:* 调用第n条命令的所有参数
command !string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数
command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数
command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
command !string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有参数

**history命令格式 **

-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后

**history相关环境变量 **

HISTSIZE:命令历史记录的条数
HISTFILE:指定历史文件,默认为~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
HISTTIMEFORMAT="%F %T " 显示时间
HISTIGNORE=“str1:str2*:… “ 忽略str1命令, str2开头的历史
控制命令历史的记录方式:
环境变量: HISTCONTROL
ignoredups 默认,忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups, ignorespace的组合
erasedups 删除重复命令
存放在 /etc/profile 或 ~/.bash_profile

2.7 bash的快捷键

Ctrl + l 清屏,相当于clear命令
Ctrl + o 执行当前命令,并重新显示本命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + xx 光标在命令行首和光标之间移动
Ctrl + u 从光标处删除至命令行首(剪切)
Ctrl + k 从光标处删除至命令行尾(剪切)
Alt + r 删除当前整行
Ctrl + w 从光标处向左删除至单词首
Alt + d 从光标处向右删除至单词尾
Ctrl + d 删除光标处的一个字符
Ctrl + h 删除光标前的一个字符
Ctrl + y 将删除的字符粘贴至光标后
Alt + c 从光标处开始向右更改为首字母大写的单词
Alt + u 从光标处开始,将右边一个单词更改为大写
Alt + l 从光标处开始,将右边一个单词更改为小写
Ctrl + t 交换光标处和之前的字符位置
Alt + t 交换光标处和之前的单词位置
Alt + N 提示输入指定字符后,重复显示该字符N次
注意: Alt组合快捷键经常和其它软件冲突

2.8 创建或删除文件和目录

创建文件touch

touch 如果文件没有则创建,如果文件存在则修改mtime时间

touch a.txt

创建目录mkdir

 常用选项:
-p 文件夹存在不报错,不存在则创建,可以递归创建文件夹 -v 显示详细信息 -m mode:创建目录时指定权限

删除文件夹rmdir

rmdir 只能删除空文件夹(目录)

常用选项
-p 递归删除空目录 -v 显示详细信息

删除文件rm

格式:

rm [option]… FILE…

 常用选项
-i 交互式
-f 强制
-r 递归

2.9 runlevel运行级别

runlevel运行级别:为系统运行或维护等目的而设定; 0-6: 7个级别

  • 0:关机
  • 1:单用户模式(root自动登录), single, 维护模式 ###不具有网络功能,典型的应用是破解root密码,很多其他的维护也用单用户模式
  • 2: 多用户模式,启动网络功能,但不会启动NFS;维护模式
  • 3:多用户模式,正常模式;文本界面
  • 4:预留级别;可同3级别
  • 5:多用户模式,正常模式;图形界面
  • 6:重启

默认级别: 3, 5

切换级别: init #

查看级别: runlevel ; who -r

2.10 关机重启

关机:
shutdown
-P --poweroff Power-off the machine
-r --reboot Reboot the machine
-h Equivalent to --poweroff, overridden by --halt
-c Cancel a pending shutdown
立刻关机: shutdown -h now
立刻重启: shutdown -r now
重启:
reboot

最新文章

  1. CentOS 7 配置静态 ip
  2. matlab 去掉字符串前后的空格
  3. 比特(bit)与字节(byte)区别,站位比较
  4. 【Python】Python XML 读写
  5. sqlite3编程使用简介
  6. Objective-C 【单个对象内存管理(野指针&内存泄露)】
  7. Linux中的权限管理
  8. Java笔记-快速失败and安全失败
  9. centos上node.js的安装
  10. 【转】LINUX下一款不错的网站压力测试工具webbench
  11. 怎样使用jlink一键烧录整个flash Hi3518 a c e Hi3515 Hi3512
  12. css animation 动画的制作
  13. 你所不知道的 CSS 滤镜技巧与细节
  14. HighCharts之2D圆环图
  15. Sublime Text3激活
  16. js实现一个长页面中的图片懒加载即滚动到其位置才加载
  17. 关于npm 淘宝镜像 以及package.json里包的更新
  18. mybatis的插件,挺好支持下
  19. QT各模块
  20. django项目创建启动 ORM操作

热门文章

  1. Docker多机网络
  2. 第九届网安竞赛writeup
  3. c++学习笔记3(动态内存分配)
  4. 理解PHP的运行机制
  5. ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项
  6. [loj3331]选课
  7. Haywire
  8. Codeforces 79D - Password(状压 dp+差分转化)
  9. freeftpd的使用教程
  10. [Linux] Miniconda安装及其使用