- A+
Linux命令
-
一切都是一个文件。(存储形式)
-
系统中拥有小型,单一用途的程序。
-
当遇到复杂任务,通过不同功能用途的程序组合起来完成。(大化小,小化了)
-
避免令人困惑的用户界面。(统统用命令)
-
连配置文件都存储在文本中,方便增、删、改、查。
-
不在乎后缀名,文件名与文件类型不相关。(不是用文件后缀来区分类型)
[root@localhost ~]# root:表示当前用户 localhost:表示主机名 ~:表示家目录 #:表示当前用户是管理员用户 $:普通用户 #关机: halt #立刻关机 2、poweroff #立刻关机 3、shutdown -h now #立刻关机(root用户使用) 4、shutdown -h 10 #10分钟后自动关机 #重启: reboot init6 shutdown -r now #修改语言 修改LANG变量实现中文语言的提示
1、shell
shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。
用户使用应用程序发布指令
shell去通知操作系统需要进行什么样的操作
内核相当于操作系统去指挥硬件,硬件才能工作,否则无法交互。
shell内核具有调动硬件的功能
不同的shell环境
bash,是linux里面默认的shell程序位于/bin/bash; csh、ksh语言不同比如中文英文都是交流的语言
[root@localhost ~]# echo $SHELL //显示当前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-}]
内部命令由bash软件提供;外部命令需手动安装
shell与内、外部命令
1、shell 分为内部命令 和外部命令,一般先执行内部命令,hash 再执行外部命令(别名最大)
内部命令 | 外部命令 |
---|---|
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特点功能的脚本文件或二进制程序 |
属于shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行 |
2、help查看内部命令
[root@localhost ~]# 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 偏移量] [n] 或 history -anrw [文件名] 或 h> (( 表达式 )) if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命> . 文件名 [参数] jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [参数] : kill [-s 信号声明 | -n 信号编号 | -信号声明] 进程号 > [ 参数... ] let 参数 [参数 ...] [[ 表达式 ]] local [option] 名称[=值] ... alias [-p] [名称[=值] ... ] logout [n] bg [任务声明 ...] mapfile [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-C > bind [-lpvsPVS] [-m 键映射] [-f 文件名] [-q 名称] [-u 名称> popd [-n] [+N | -N] break [n] printf [-v var] 格式 [参数] builtin [shell 内嵌 [参数 ...]] pushd [-n] [+N | -N | 目录] caller [表达式] pwd [-LP] case 词 in [模式 [| 模式]...) 命令 ;;]... esac read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读> cd [-L|[-P [-e]]] [dir] readarray [-n 计数] [-O 起始序号] [-s 计数] [-t] [-u fd] [-> command [-pVv] 命令 [参数 ...] readonly [-aAf] [name[=value] ...] or readonly -p compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模式] [> return [n] complete [-abcdefgjksuv] [-pr] [-DE] [-o 选项] [-A 动作] [-G 全> select NAME [in 词语 ... ;] do 命令; done compopt [-o|+o 选项] [-DE] [名称 ...] set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] continue [n] shift [n] coproc [名称] 命令 [重定向] shopt [-pqsu] [-o] [选项名 ...] declare [-aAfFgilrtux] [-p] [name[=value] ...] 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] [名称[=值] ...] 或 export -p typeset [-aAfFgilrtux] [-p] name[=value] ... 伪 ulimit [-SHacdefilmnpqrstuvx] [限制] fc [-e 编辑器名] [-lnr] [起始] [终结] 或 fc -s [模式=替�> umask [-p] [-S] [模式] fg [任务声明] unalias [-a] 名称 [名称 ...] for 名称 [in 词语 ... ] ; do 命令; done unset [-f] [-v] [名称 ...] for (( 表达式1; 表达式2; 表达式3 )); do 命令; done until 命令; do 命令; done function 名称 { 命令 ; } 或 name () { 命令 ; } variables - 一些 shell 变量的名称和含义 getopts 选项字符串 名称 [参数] wait [编号] hash [-lr] [-p 路径名] [-dt] [名称 ...] while 命令; do 命令; done help [-dms] [模式 ...] { 命令 ; }
3、可以使用type命令区分内外命令
[root@localhost ~]# type cd cd 是 shell 内嵌 //内嵌代表内部命令 [root@localhost ~]# type -a ls ls 是 `ls --color=auto' 的别名 //别名代表外部命令 ls 是 /usr/bin/ls //外部命令会有程序路径 ls 是 /bin/ls [root@localhost ~]# whereis ls 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 是 /bin/echo 外部命令存放于 echo $PATH 一个一个找,找到为止,找不到就报无命令 [root@localhost ~]# echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/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 命中 命令 //前面数字代表用过几次 1 /usr/bin/grep 1 /usr/bin/tail 1 /usr/bin/du 1 /usr/bin/vim 2 /usr/sbin/useradd 1 /usr/bin/whereis 2 /usr/bin/cp 1 /usr/bin/ln 9 /usr/bin/ls 7 /usr/bin/find [root@localhost ~]# hash -r [root@localhost ~]# hash hash: 哈希表为空 [root@localhost ~]# type useradd useradd 是 /usr/sbin/useradd [root@localhost ~]# useradd wu useradd:用户“wu”已存在 [root@localhost ~]# hash 命中 命令 1 /usr/sbin/useradd [root@localhost ~]# which ping /usr/bin/ping [root@localhost ~]# which help /usr/bin/which: no help in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/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 内部命令
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、命令行格式
命令字 空格 [选项] 空格 [参数]
解释命令字 选项 参数各自的意思及具体使用方法
-
命令字 是整条命令中最关键的一部分 唯一确定
-
选项 短格式选项:使用“-”符号引导 通常 一个字母 长格式选项:使用“--”符号引导 通常完整的单词
类unix风格:不加“-”、“--”符合引导
-
参数 命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个
”;“可以隔开命令,执行多个命令
编辑Linux命令行的辅助操作(扩展)
快捷键 | 功能 |
---|---|
Tab 键 | 自动补齐(两次可以显示所有选项) |
反斜杠“” | 强制换行或转义 |
Ctrl+e 或 end 键 | 光标移到最后 |
Ctrl+U | 清空至行首不包括当前光标处的 字符 |
Ctrl+K | 清空至行尾包括当前光标处的字符 |
Ctrl+a | 光标移到最前 |
Ctrl+w | 从当前光标删除到开头 |
ALT+d | 从当前光标删除末尾 |
Ctrl+l | 清屏 |
Ctrl+c | 取消本次命令编辑 |
Ctrl+s/Ctrl+q | 锁屏/解锁 |
向上下箭头 | 回看执行过的命令 |
3、获得命令帮助
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 纵向制表符 \ 反斜杠 nnn 以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是 0到3个八进制数字 xHH 以 HH (十六进制)为值的八比特字符。HH可以是 一个或两个十六进制数字 退出状态: 返回成功除非有写错误发生。 # -n 不换行显示 [root@localhost ~]#echo -ne "1 2t3" 1 2 3[root@localhost ~]#echo -ne "1 2n3" 1 2 3[root@localhost ~]#echo -n "1 2 3";echo "123" 1 2 3123 [root@localhost ~]#echo "1 2 3";echo "123" 1 2 3 123 [root@localhost ~]#echo -e "1 2b 3" # b 删除前一个字符 1 3 [root@localhost ~]#echo -e "1n 2n 3" #n换行 1 2 3 [root@localhost ~]#echo -e "1t 2t 3" #tab键叫制表符 1 2 3
--help
查看外部命令帮助
1 [root@localhost ~]#ls --help 2 用法:ls [选项]... [文件]... 3 List information about the FILEs (the current directory by default). 4 Sort entries alphabetically if none of -cftuvSUX nor --sort is specified. 5 6 Mandatory arguments to long options are mandatory for short options too. 7 -a, --all 不隐藏任何以. 开始的项目 8 -A, --almost-all 列出除. 及.. 以外的任何项目 9 --author 与-l 同时使用时列出每个文件的作者 10 -b, --escape 以八进制溢出序列表示不可打印的字符 11 --block-size=SIZE scale sizes by SIZE before printing them; e.g., 12 '--block-size=M' prints sizes in units of 13 1,048,576 bytes; see SIZE format below 14 -B, --ignore-backups do not list implied entries ending with ~ 15 -c with -lt: sort by, and show, ctime (time of last 16 modification of file status information); 17 with -l: show ctime and sort by name; 18 otherwise: sort by ctime, newest first 19 -C list entries by columns 20 --color[=WHEN] colorize the output; WHEN can be 'never', 'auto', 21 or 'always' (the default); more info below 22 -d, --directory list directories themselves, not their contents 23 -D, --dired generate output designed for Emacs' dired mode 24 -f do not sort, enable -aU, disable -ls --color 25 -F, --classify append indicator (one of */=>@|) to entries 26 --file-type likewise, except do not append '*' 27 --format=WORD across -x, commas -m, horizontal -x, long -l, 28 single-column -1, verbose -l, vertical -C 29 --full-time like -l --time-style=full-iso 30 -g 类似-l,但不列出所有者 31 --group-directories-first 32 group directories before files; 33 can be augmented with a --sort option, but any 34 use of --sort=none (-U) disables grouping 35 -G, --no-group 以一个长列表的形式,不输出组名 36 -h, --human-readable 与-l 一起,以易于阅读的格式输出文件大小 37 (例如 1K 234M 2G) 38 --si 同上面类似,但是使用1000 为基底而非1024 39 -H, --dereference-command-line 40 follow symbolic links listed on the command line 41 --dereference-command-line-symlink-to-dir 42 follow each command line symbolic link 43 that points to a directory 44 --hide=PATTERN do not list implied entries matching shell PATTERN 45 (overridden by -a or -A) 46 --indicator-style=WORD append indicator with style WORD to entry names: 47 none (default), slash (-p), 48 file-type (--file-type), classify (-F) 49 -i, --inode print the index number of each file 50 -I, --ignore=PATTERN do not list implied entries matching shell PATTERN 51 -k, --kibibytes default to 1024-byte blocks for disk usage 52 -l 使用较长格式列出信息 53 -L, --dereference 当显示符号链接的文件信息时,显示符号链接所指示 54 的对象而并非符号链接本身的信息 55 -m 所有项目以逗号分隔,并填满整行行宽 56 -n, --numeric-uid-gid 类似 -l,但列出UID 及GID 号 57 -N, --literal 输出未经处理的项目名称 (如不特别处理控制字符) 58 -o 类似 -l,但不列出有关组的信息 59 -p, --indicator-style=slash 对目录加上表示符号"/" 60 -q, --hide-control-chars print ? instead of nongraphic characters 61 --show-control-chars show nongraphic characters as-is (the default, 62 unless program is 'ls' and output is a terminal) 63 -Q, --quote-name enclose entry names in double quotes 64 --quoting-style=WORD use quoting style WORD for entry names: 65 literal, locale, shell, shell-always, c, escape 66 -r, --reverse 逆序排列 67 -R, --recursive 递归显示子目录 68 -s, --size 以块数形式显示每个文件分配的尺寸 69 -S sort by file size 70 --sort=WORD sort by WORD instead of name: none (-U), size (-S), 71 time (-t), version (-v), extension (-X) 72 --time=WORD with -l, show time as WORD instead of default 73 modification time: atime or access or use (-u) 74 ctime or status (-c); also use specified time 75 as sort key if --sort=time 76 --time-style=STYLE with -l, show times using style STYLE: 77 full-iso, long-iso, iso, locale, or +FORMAT; 78 FORMAT is interpreted like in 'date'; if FORMAT 79 is FORMAT1<newline>FORMAT2, then FORMAT1 applies 80 to non-recent files and FORMAT2 to recent files; 81 if STYLE is prefixed with 'posix-', STYLE 82 takes effect only outside the POSIX locale 83 -t sort by modification time, newest first 84 -T, --tabsize=COLS assume tab stops at each COLS instead of 8 85 -u with -lt: sort by, and show, access time; 86 with -l: show access time and sort by name; 87 otherwise: sort by access time 88 -U do not sort; list entries in directory order 89 -v natural sort of (version) numbers within text 90 -w, --width=COLS assume screen width instead of current value 91 -x list entries by lines instead of by columns 92 -X sort alphabetically by entry extension 93 -1 list one file per line 94 95 SELinux options: 96 97 --lcontext Display security context. Enable -l. Lines 98 will probably be too wide for most displays. 99 -Z, --context Display security context so it fits on most 100 displays. Displays only mode, user, group, 101 security context and file name. 102 --scontext Display only security context and file name. 103 --help 显示此帮助信息并退出 104 --version 显示版本信息并退出 105 106 SIZE is an integer and optional unit (example: 10M is 10*1024*1024). Units 107 are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).