- export
显示所有的环境变量,如果你想获取某个变量的详细信息,使用
.
- echo $VARIABLE_NAME
- export
Example:
- $ export
- SHELL=/bin/zsh
- AWS_HOME=/Users/adnanadnan/.aws
- LANG=en_US.UTF-8
- LC_CTYPE=en_US.UTF-8
- LESS=-R
- $ echo $SHELL
- /usr/bin/zsh
- whereis
whereis 使用系统自动构建的数据库来搜索可执行文件,源文件和手册页面。
- whereis name
Example:
- $ whereis php
- /usr/bin/php
- which
它在环境变量 PATH 指定的目录中搜索可执行文件。此命令将打印可执行文件的完整路径。
- which program_name
Example:
- $ which php
- /c/xampp/php/php
清除窗口上的内容。
- ls
列出您的文件。
有很多选项:
- ls
列出 "长格式" 的文件,其中包含文件的确切大小,拥有该文件的人员,有权查看该文件,以及何时进行上次修改。
- -l
列出所有文件,包括隐藏文件。有关此命令的更多信息,请检查此。
- -a
- ls option
Example:
- $ ls -al
- rwxr-xr-x 33 adnan staff 1122 Mar 27 18:44 .
- drwxrwxrwx 60 adnan staff 2040 Mar 21 15:06 ..
- -rw-r--r--@ 1 adnan staff 14340 Mar 23 15:05 .DS_Store
- -rw-r--r-- 1 adnan staff 157 Mar 25 18:08 .bumpversion.cfg
- -rw-r--r-- 1 adnan staff 6515 Mar 25 18:08 .config.ini
- -rw-r--r-- 1 adnan staff 5805 Mar 27 18:44 .config.override.ini
- drwxr-xr-x 17 adnan staff 578 Mar 27 23:36 .git
- -rwxr-xr-x 1 adnan staff 2702 Mar 25 18:08 .gitignore
- touch
创建或更新您的文件。
- touch filename
Example:
- $ touch trick.md
- cat
它可以在 UNIX 或 Linux 下用于以下目的。
- cat filename
- cat file1 file2
- cat file1 file2 > newcombinedfile
- more
显示文件的第一部分(用空格移动并键入 q 以退出)。
- more filename
- head
输出文件的前 10 行。
- head filename
- tail
输出最后 10 行文件。用于 - f 在文件增长时输出附加数据。
- tail filename
- mv
将文件从一个位置移动到另一个位置。
- mv filename1 filename2
文件的源路径,
- filename1
是目标路径。
- filename2
- cp
将文件从一个位置复制到另一个位置。
- cp filename1 filename2
文件的源路径,
- filename1
是目标路径。
- filename2
- rm
删除文件。在目录上使用此命令会给您显示一个错误:
。 为了删除目录,你必须传递
- rm: directory: is a directory
去递归删除目录中的所有内容。
- -rf
- rm filename
- diff
比较文件,并列出他们的差异。
- diff filename1 filename2
- chmod
让您更改文件的读取,写入和执行权限。
- chmod -options filename
- gzip
压缩文件。
- gzip filename
- gunzip
解压缩 gzip 压缩的文件。
- gunzip filename
- gzcat
让你查看 gzip 压缩文件,而不需要 gunzip 它。
- gzcat filename
- lpr
打印文件。
- lpr filename
- lpq
查看打印机队列。
- lpq
Example:
- $ lpq
- Rank Owner Job File(s) Total Size
- active adnanad 59 demo 399360 bytes
- 1st adnanad 60 (stdin) 0 bytes
- lprm
从打印队列移除某些内容。
- lprm jobnumber
- awk
awk 是处理文本文件最有用的命令。它一行一行地在整个文件上运行。默认情况下,它使用空格分隔字段。awk 命令最常用的语法是
- awk '/search_pattern/ { action_to_take_if_pattern_matches; }' file_to_parse
让我们采取以下文件
。以下是此文件包含的示例数据:
- /etc/passwd
- root:x:0:0:root:/root:/usr/bin/zsh
- daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
- bin:x:2:2:bin:/bin:/usr/sbin/nologin
- sys:x:3:3:sys:/dev:/usr/sbin/nologin
- sync:x:4:65534:sync:/bin:/bin/sync
所以现在让我们从这个文件只获取用户名。
指定在我们要基于哪个分隔字段。在我们的例子中
- -F
。
- :
意味着打印出第一个匹配字段。
- { print $1 }
- awk -F':' '{ print $1 }' /etc/passwd
运行上述命令后,您将获得以下输出。
- root
- daemon
- bin
- sys
- sync
有关如何使用
的更多细节,请查看以下。
- awk
- grep
查找文件内的文本。您可以使用 grep 搜索与一个或多个正则表达式匹配的文本行,并仅输出匹配的行。
- grep pattern filename
Example:
- $ grep admin /etc/passwd
- _kadmin_admin:*:218:-2:Kerberos Admin Service:/var/empty:/usr/bin/false
- _kadmin_changepw:*:219:-2:Kerberos Change Password Service:/var/empty:/usr/bin/false
- _krb_kadmin:*:231:-2:Open Directory Kerberos Admin Service:/var/empty:/usr/bin/false
您还可以通过使用
选项强制 grep 忽略单词大小写。
- -i
可用于搜索指定目录下的所有文件,例如:
- -r
- $ grep -r admin /etc/
只搜索单词。有关
- -w
详细信息,请查看以下。
- grep
- wc
告诉你一个文件中有多少行,多少单词和多少字符。
- wc filename
Example:
- $ wc demo.txt
- 7459 15915 398400 demo.txt
是行数,
- 7459
是单词数,
- 15915
是字符数.
- 398400
- sed
用于过滤和转换文本的流编辑器。
- Hello This is a Test 1 2 3 4
- sed 's/ /-/g' example.txt
- Hello-This-is-a-Test-1-2-3-4
- sed 's/[0-9]/d/g' example.txt
- Hello This is a Test d d d d
- sort
排序文本文件的行
- f
- b
- c
- g
- a
- e
- d
- sort example.txt
- a
- b
- c
- d
- e
- f
- g
- sort example.txt | sort -R
- b
- f
- a
- c
- d
- g
- e
- uniq
报告或省略重复的行
- a
- a
- b
- a
- b
- c
- d
- c
- sort example.txt | uniq
- a
- b
- c
- d
- sort example.txt | uniq -c
- 3 a
- 2 b
- 2 c
- 1 d
- cut
从每行文件中删除部分。
- red riding hood went to the park to play
- cut - d " " - f2,
- 7,
- 9 example.txt
- riding park play
- echo
显示一行文字
- echo Hello World
- Hello World
- echo -ne "Hello\nWorld\n"
- Hello
- World
- fmt
简单的最佳文本格式化程序
- Lorem ipsum dolor sit amet,
- consetetur sadipscing elitr,
- sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
- sed diam voluptua.At vero eos et accusam et justo duo dolores et ea rebum.Stet clita kasd gubergren,
- no sea takimata sanctus est Lorem ipsum dolor sit amet.
- cat example.txt | fmt -w 20
- Lorem ipsum
- dolor sit amet,
- consetetur
- sadipscing elitr,
- sed diam nonumy
- eirmod tempor
- invidunt ut labore
- et dolore magna
- aliquyam erat, sed
- diam voluptua. At
- vero eos et
- accusam et justo
- duo dolores et ea
- rebum. Stet clita
- kasd gubergren,
- no sea takimata
- sanctus est Lorem
- ipsum dolor sit
- amet.
- tr
翻译或删除字符
- Hello World Foo Bar Baz!
- cat example.txt | tr 'a-z' 'A-Z'
- HELLO WORLD FOO BAR BAZ!
- cat example.txt | tr ' ' '\n'
- Hello
- World
- Foo
- Bar
- Baz!
- nl
显示文件的行数
- Lorem ipsum
- dolor sit amet,
- consetetur
- sadipscing elitr,
- sed diam nonumy
- eirmod tempor
- invidunt ut labore
- et dolore magna
- aliquyam erat, sed
- diam voluptua. At
- vero eos et
- accusam et justo
- duo dolores et ea
- rebum. Stet clita
- kasd gubergren,
- no sea takimata
- sanctus est Lorem
- ipsum dolor sit
- amet.
- nl -s". " example.txt
- 1. Lorem ipsum
- 2. dolor sit amet,
- 3. consetetur
- 4. sadipscing elitr,
- 5. sed diam nonumy
- 6. eirmod tempor
- 7. invidunt ut labore
- 8. et dolore magna
- 9. aliquyam erat, sed
- 10. diam voluptua. At
- 11. vero eos et
- 12. accusam et justo
- 13. duo dolores et ea
- 14. rebum. Stet clita
- 15. kasd gubergren,
- 16. no sea takimata
- 17. sanctus est Lorem
- 18. ipsum dolor sit
- 19. amet.
- egrep
打印匹配模式的行 - 扩展表达式(别名为:'grep -E')
- Lorem ipsum
- dolor sit amet,
- consetetur
- sadipscing elitr,
- sed diam nonumy
- eirmod tempor
- invidunt ut labore
- et dolore magna
- aliquyam erat, sed
- diam voluptua. At
- vero eos et
- accusam et justo
- duo dolores et ea
- rebum. Stet clita
- kasd gubergren,
- no sea takimata
- sanctus est Lorem
- ipsum dolor sit
- amet.
- egrep '(Lorem|dolor)' example.txt
- or
- grep -E '(Lorem|dolor)' example.txt
- Lorem ipsum
- dolor sit amet,
- et dolore magna
- duo dolores et ea
- sanctus est Lorem
- ipsum dolor sit
- fgrep
打印匹配模式到的行 - FIXED 模式匹配(别名为:'grep -F')
- Lorem ipsum
- dolor sit amet,
- consetetur
- sadipscing elitr,
- sed diam nonumy
- eirmod tempor
- foo (Lorem|dolor)
- invidunt ut labore
- et dolore magna
- aliquyam erat, sed
- diam voluptua. At
- vero eos et
- accusam et justo
- duo dolores et ea
- rebum. Stet clita
- kasd gubergren,
- no sea takimata
- sanctus est Lorem
- ipsum dolor sit
- amet.
- fgrep '(Lorem|dolor)' example.txt
- or
- grep -F '(Lorem|dolor)' example.txt
- foo (Lorem|dolor)
- mkdir
生成一个新的目录。
- mkdir dirname
- cd
执行这个,从一个目录转移到另外一个目录。
- $ cd
将你移动到主目录。此命令接受可选的
,将你移动到该目录。
- dirname
- cd dirname
- pwd
告诉你你目前所在的目录。
- pwd
- ssh
ssh (SSH client) 是一个用来在登录到远程机器并执行的命令的程序。
- ssh user@host
此命令还接受
可用于连接到特定端口的选项。
- -p
- ssh -p port user@host
- whoami
返回当前登录用户名。
- passwd
允许当前登录的用户更改其密码。
- quota
显示您的磁盘配额。
- quota -v
- date
显示当前日期和时间。
- cal
显示月份的日历。
- uptime
显示当前的正常运行时间。
- w
显示谁在线
- finger
Displays information about user.
- finger username
- uname
显示内核信息。
- uname -a
- man
显示指定命令的手册。
- man command
- df
显示磁盘使用情况。
- du
显示文件名中文件和目录的磁盘使用情况(du -s 只给出一个总数)。
- du filename
- last
列出您最后登录的指定用户。
- last yourUsername
- ps
列出您的进程。
- ps -u yourusername
- kill
使用您所提供的 ID 杀死(结束)进程。
- kill PID
- killall
用名称杀死所有进程。
- killall processname
- top
显示当前活动的进程。
- bg
列出停止的或后台工作的 Job; 恢复在后台停止的 Job。
- fg
前台化最近的 Job。
Brings the most recent job in the foreground.
- ping
Pings 主机并输出结果。
- ping host
- whois
获取域的 whois 信息。
- whois domain
- dig
获取域的 DNS 信息。
- dig domain
- wget
下载文件。
- wget file
- scp
在本地主机和远程主机之间或两台远程主机之间传输文件。
- scp source_file user@host:directory/target_file
- scp user@host:directory/source_file target_file
- scp -r user@host:directory/source_folder farget_folder
此命令还接受
选项可用于连接到特定的端口。
- -P
- scp -P port user@host:directory/source_file target_file
在 bash 中你将编写第一行脚本文件,被叫做
。任何脚本中的这一行来确定脚本的执行能力,如独立的可执行文件,而不是在终端中预先键入 sh,bash,python,php 等。
- shebang
- #!/bin/bash
在 bash 中创建变量与其他语言类似。没有数据类型。bash 中的变量可以包含数字,字符,字符串等。您无需声明变量,只需为其引用分配一个值即可创建它。
Example:
- str="hello world"
上面的一行创建一个变量 str 并给它赋值 "hello world"。通过
放在变量名的开头来检索变量的值。
- $
Example:
- echo $str # hello world
像其他语言一样,bash 也有数组。数组是包含多个值的变量。数组的大小没有最大限制。bash 中的数组为零。第一个元素被索引为元素 0. 在 bash 中创建数组有几种方法。以下给出了哪些。
Examples:
- array[0] = val
- array[1] = val
- array[2] = val
- array=([2]=val [0]=val [1]=val)
- array(val val val)
要在特定索引处显示值,请使用以下语法:
- $ {
- array[i]
- }#where i is the index
如果没有提供索引,则假定为数组元素 0。要了解数组中有多少值,请使用以下语法:
- $ {#array[@]
- }
Bash 也支持三元条件。下面是一些例子。
- $ {
- varname: -word
- }#如果varname存在且不为null,则返回其值;否则返回word $ {
- varname: =word
- }#如果varname存在且不为null,则返回其值;否则设置它,然后返回其值$ {
- varname: +word
- }#如果varname存在并且不为null,返回word;否则返回null $ {
- varname: offset: length
- }#执行子字符串扩展。它返回$ varname的子字符串,从offset开始,最多为length的字符
检查一些关于如何操作字符串的语法
- $ {
- variable#pattern
- }#
- if the pattern matches the beginning of the variable 's value, delete the shortest part that matches and return the rest
- ${variable##pattern} # if the pattern matches the beginning of the variable's value,
- delete the longest part that matches and
- return the rest $ {
- variable % pattern
- }#
- if the pattern matches the end of the variable 's value, delete the shortest part that matches and return the rest
- ${variable%%pattern} # if the pattern matches the end of the variable's value,
- delete the longest part that matches and
- return the rest $ {
- variable / pattern / string
- }#the longest match to pattern in variable is replaced by string.Only the first match is replaced $ {
- variable //pattern/string} # the longest match to pattern in variable is replaced by string. All matches are replaced
- $ {#varname
- }#returns the length of the value of the variable as a character string
几乎与任何编程语言一样,您可以使用函数以更逻辑的方式对代码段进行分组,或者实践递归的神圣艺术。声明函数只是编写函数 my_func {my_code} 的问题。调用一个函数就像调用另一个程序一样,你只需要写上它的名字。
- functname() {
- shell commands
- }
Example:
- #!/bin/bash
- function hello {
- echo world!
- }
- hello
- function say {
- echo $1
- }
- say "hello world!"
当您运行上述示例时,该 hello 函数将输出 "world!"。上述两个功能
和
- hello
是相同的。主要区别是功能
- say
。此功能打印其接收到的第一个参数。函数内的参数以与给脚本的参数相同的方式进行处理。
- say
bash 中的条件语句与其他编程语言相似。条件有许多形式,如最基本的形式是
表达式
- if
语句,其中语句只有在表达式为真时执行。
- then
- if [expression]; then
- will execute only if expression is true
- else
- will execute if expression is false
- fi
有时,如果条件变得混乱,所以你可以使用相同的条件
。
- case statements
- case expression in
- pattern1 )
- statements ;;
- pattern2 )
- statements ;;
- ...
- esac
Expression Examples:
- statement1 && statement2 # 两边的条件都为true
- statement1 || statement2 # 其中一边为true
- str1=str2 # str1 匹配 str2
- str1!=str2 # str1 不匹配 str2
- str1<str2 # str1 是否小于 str2
- str1>str2 # str1 是否大于 str2
- -n str1 # str1 不为空(长度大于 0)
- -z str1 # str1 为空(长度为 0)
- -a file # 文件存在
- -d file # 文件存在,是一个目录
- -e file # 文件存在; 相同的-a
- -f file # 文件存在,是一个常规文件(即不是目录或其他特殊类型的文件)
- -r file # 你有读权限
- -r file # 文件存在,不为空
- -w file # 你有写权限
- -x file # 你有文件的执行权限
- file1 -nt file2 # file1 is newer than file2
- file1 -ot file2 # file1 is older than file2
- -lt # 小于
- -le # 小于或等于
- -eq # 等于
- -ge # 大于或等于
- -gt # 大于
- -ne # 不等于
bash 中有三种不同类型的循环。
,
- for
和
- while
.
- until
语法:
- for
- for x := 1 to 10 do
- begin
- statements
- end
- for name [in list]
- do
- statements that can use $name
- done
- for (( initialisation ; ending condition ; update ))
- do
- statements...
- done
语法:
- while
- while condition; do
- statements
- done
语法:
- until
- until condition; do
- statements
- done
可以通过运行后面的命令打开。
- bash_profile
- nano ~/.bash_profile
nano ~/.bashrc
source ~/.bashrc
cd hotellogs
您可以通过传递不同的选项来轻松地调试 bash 脚本 bash。例如 - n,不会运行命令并仅检查语法错误。-vecho 命令在运行它们之前。-x 命令行处理后的 echo 命令。
- bash -n scriptname
- bash -v scriptname
- bash -x scriptname
来源: http://www.cnblogs.com/savorboard/p/bash-guide.html