Linux目录结构和基础命令

Linux目录和基础命令
目录

  • Linux目录和基础命令
    • 1 Linux目录结构
      • 1.1 Linux文件名命令要求
      • 1.2 文件的类型
    • 2. 基础命令
      • 2.1 ls
      • 2.2 cd和pwd
      • 2.3 命令提示符
      • 2.4 echo命令
      • 2.5 tab键
      • 2.6 history 历史命令
      • 2.7 bash的快捷键
      • 2.8 创建或删除文件和目录
      • 2.9 runlevel运行级别
      • 2.10 关机重启

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 命令提示符 【Linux目录结构和基础命令】命令提示符: 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 262016 Tetris.sh -rw-------. 1 root root1615 Mar 15 10:59 anaconda-ks.cfg -rw-r--r--. 1 root root565 Mar 16 15:00 test.txt20210316 -rw-r--r--. 1 root root2179 Mar 17 10:54 test.txt -rwxr-xr-x. 1 root root137 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 262016 Tetris.sh -rw-------. 1 root root1615 Mar 15 10:59 anaconda-ks.cfg -rw-r--r--. 1 root root565 Mar 16 15:00 test.txt20210316 -rw-r--r--. 1 root root2179 Mar 17 10:54 test.txt -rwxr-xr-x. 1 root root137 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 --poweroffPower-off the machine -r --rebootReboot the machine -hEquivalent to --poweroff, overridden by --halt -cCancel a pending shutdown 立刻关机: shutdown -h now 立刻重启: shutdown -r now 重启: reboot

    推荐阅读