常用命令

1. 显示已安装的软件包列表:dpkg -l 2. gbk编码访问bbs:luit -encoding gbk telnet bbs.xxx.xxx.xx\\ 3. 列出块设备:lsblk 4. 打印当前系统的全部相关信息:uname -a 5. 显示已执行命令:history 6. 打开pdf文件:evince test.pdf 7. 查看ip:ip addr show

Note of /Linux Command Line and Shell Scripting/

man mannual

pwd present working directory

cd change directory

The single dot ( . ) to represent the current directory The double dot ( .. ) to represent the parent directory

cd ../../etc

ls list

ls -F The -F parameter flags the directories with a forward slash ( / ), to help identify them in the listing, it flags executable files (like

).

ls -R recursive

ls -a all

文件名上的单引号: 有空格或需要转义的字符

常用组合: ls -alF

ls -l long listing format.

The file type --- such as directory ( d ), file ( - ), linked file ( l ), character device ( c ), or block device ( b ) The file permissions (see Chapter 6) The number of file hard links (See the section "Linking Files" in Chapter 7.) The file owner usernameThe file primary group name The file byte size The last time the file was modified The filename or directory name

) to

represent any number of characters

$ ls -l my\_scr[ai]pt -rw-rw-r--- 1 christine christine 0 May 21 13:25 my\_scrapt -rwxrw-r--- 1 christine christine 54 May 21 11:26 my\_script

$ ls -l f[a-i]ll -rw-rw-r--- 1 christine christine 0 May 21 13:44 fall -rw-rw-r--- 1 christine christine 0 May 21 13:44 fell -rw-rw-r--- 1 christine christine 0 May 21 13:44 fill

$ ls -l f[!a]ll -rw-rw-r--- 1 christine christine 0 May 21 13:44 fell -rw-rw-r--- 1 christine christine 0 May 21 13:44 fill -rw-rw-r--- 1 christine christine 0 May 21 13:44 full

touch : change file timestamps

cp test\_one test\_two ls -l test\_* -rw-rw-r--- 1 christine christine 0 May 21 14:35 test\_one -rw-rw-r--- 1 christine christine 0 May 21 15:15 test\_two

It is best to add the -i option to force the shell to ask whether you want to overwrite a file:

cp -i test\_one /home/christine/Documents/

If you need to copy a file with a long source object name to your present working directory, the single dot can simplify the task: $ cp -i /etc/NetworkManager/NetworkManager.conf .

cp -R Scripts/ Mod\_Scripts

You can also use wildcard metacharacters in your cp commands: $ cp *script Mod\_Scripts/

mv You can use the mv command to move a file's location and rename it, all in one easy step:

mv /home/christine/Pictures/fzll /home/christine/fall

To create several directories and subdirectories at the same time, you need to add the -p parameter: $ mkdir -p New\_Dir/Sub\_Dir/Under\_Dir

rm -ri My\_Dir

tree hexo -L 1 hexo ├── \_config.yml ├── db.json ├── hexo-org-cache ├── node\_modules ├── package.json ├── package-lock.json ├── public ├── scaffolds ├── source └── themes

file my\_file my\_file: ASCII text

file Mathematica\_11.0.0\_Keygen.exe Mathematica\_11.0.0\_Keygen.exe: PE32 executable (console) Intel 80386, for MS Windows

cat -n test1 1 hello 2 3 This is a test file. 4 5 6 That we'll use to $ test the cat command.

more 用 q 退出 less

The tail command displays the last lines in a file (the file's "tail"). By default, it shows the last 10 lines in the file.

tail -n 2 log\_file line19 Last line - line20

tail head

The -f parameter is a pretty cool feature of the tail command. It allows you to peek inside a file as the file is being used by other processes. The tail command stays active and continues to display new lines as they appear in the text file. This is a great way to monitor the system log files in real-time mode.

More bash Shell Commands

:PROPERTIES: :CUSTOM_ID: more-bash-shell-commands :END:

ps

:PROPERTIES: :CUSTOM_ID: ps :END:

By default, the ps command shows only the processes that belong to the current user and that are running on the current terminal.

ps -ef (all full)

top

:PROPERTIES: :CUSTOM_ID: top :END:

if your load averages start getting over 2, things are getting busy on your system.

kill killall http*

自己可以安装 gotop

mount

:PROPERTIES: :CUSTOM_ID: mount :END:

mount -t type device directory

vfat: Windows long filesystem ntfs: Windows advanced filesystem used in Windows NT, XP, and Vista iso9660: The standard CD-ROM filesystem

umount /home/rich/mnt

df

:PROPERTIES: :CUSTOM_ID: df :END:

du

:PROPERTIES: :CUSTOM_ID: du :END:

disk usage

-c : Produces a grand total of all the files listed -h : Prints sizes in human-readable form, using K for kilobyte, M for megabyte, and G for gigabyte -s : Summarizes each argument

sort

:PROPERTIES: :CUSTOM_ID: sort :END:

sort -n

grep

:PROPERTIES: :CUSTOM_ID: grep :END:

grep import fft.py import numpy as np import matplotlib.pyplot as plt from scipy import integrate

gzip

:PROPERTIES: :CUSTOM_ID: gzip :END:

tar

:PROPERTIES: :CUSTOM_ID: tar :END:

tar -cvf test.tar test/ test2/ 打包

tar -xvf 解包

understand shell

:PROPERTIES: :CUSTOM_ID: understand-shell :END:

cat /etc/passwd [...] christine:x:1000:1000:Christine,,,:/home/christine:/bin/bash

On a single line, you can designate a list of commands to be run one after another.

ls ; ls -lh

(ls ; cd /etc ; ls ; echo $BASH_SUBSHELL) 在新的 shell 运行, 运行完不改变工作路径

ls ; cd /etc ; ls ; echo $BASH_SUBSHELL 在本 shell 运行, 运行完到了 /etc 路径

jobs

:PROPERTIES: :CUSTOM_ID: jobs :END:

jobs command displays any user's processes (jobs) currently running in background mode:

type

:PROPERTIES: :CUSTOM_ID: type :END:

which

:PROPERTIES: :CUSTOM_ID: which :END:

type cd cd is a shell builtin

Using the type -a command shows both types for each of the two commands. Note that the which command shows only the external command file.

history

:PROPERTIES: :CUSTOM_ID: history :END:

Command history is kept in the hidden .bash\_history file, which is located in the user's home directory

You can force the command history to be written to the .bash\_history file before leaving a shell session. In order to force this write, use the -a option on the history command: history -a

!20 type -a pwd pwd is a shell builtin pwd is /bin/pwd

Command number 20 was pulled from command history. Notice that similar to executing the last command in history, the bash shell first displays the command it is recalling from the shell's history. After the command is displayed, it is executed.

!! 上一条命令

alias

:PROPERTIES: :CUSTOM_ID: alias :END:

alias -p

alias li='ls -li'

Using Linux Environment Variables

:PROPERTIES: :CUSTOM_ID: using-linux-environment-variables :END:

env or the printenv

echo

:PROPERTIES: :CUSTOM_ID: echo :END:

You can also use the echo command to display a variable's value. When referencing an environment variable in this case, you must place a dollar sign ( $ ) before the environmentvariable name

echo $HOME

The dollar sign before a variable name allows the variable to be passed as a command parameter: ls $HOME

set

:PROPERTIES: :CUSTOM_ID: set :END:

The set command displays all variables defined for a specific process, including both local and global environment variables and user-defined variables

echo my\_variable my\_variable=Hello echo my\_variable

If you need to assign a string value that contains spaces, you need to use a single or double quotation mark to delineate the beginning and the end of the string:

my\_variable="Hello World"

Notice that for the local variable you defined, you used lowercase letters, while the system environment variables you've seen so far have all used uppercase letters.

export

:PROPERTIES: :CUSTOM_ID: export :END:

export my_variable

This is done by using the export command and the variable name minus the dollar sign

unset

:PROPERTIES: :CUSTOM_ID: unset :END:

unset my\_variable

If you are doing anything with the variable, use the dollar sign. If you are doing anything to the variable, don't use the dollar sign.

echo $PATH

PATH$PATH:/home/christine/Scripts= 添加 PATH 环境变量

It is a better idea to create a file ending with .sh in the /etc/profile.d directory. In that file, place all your new or modified global environment variable settings.

软件

1. 黑客帝国:cmatrix 2. 小火车:sl 3. 格言:fortune 4. 不断输出字符:yes

play

方法1:

#+BEGIN_EXAMPLE ffplay xxx.avi #+END_EXAMPLE

方法2:

#+BEGIN_EXAMPLE mplayer -vo caca video.avi #+END_EXAMPLE

注:参数caca表示彩色字符模式,aa表示黑白字符模式。

w3m

:PROPERTIES: :CUSTOM_ID: w3m :END:

sudo apt-get install w3m w3m-img w3m www.zhihu.com

telnet

:PROPERTIES: :CUSTOM_ID: telnet :END:

#+BEGIN_EXAMPLE telnet towel.blinkenlights.nl #+END_EXAMPLE

Host

:PROPERTIES: :CUSTOM_ID: host :END:

#+BEGIN_EXAMPLE 127.0.0.1 localhost 127.0.1.1 dx-PC

# The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters #+END_EXAMPLE

#+BEGIN_EXAMPLE sudo gedit /etc/hosts sudo /etc/init.d/networking restart #+END_EXAMPLE

matlab

:PROPERTIES: :CUSTOM_ID: matlab :END:

运行命令行界面

:PROPERTIES: :CUSTOM_ID: 运行命令行界面 :END:

#+BEGIN_EXAMPLE ./matlab -nodisplay #+END_EXAMPLE

添加环境变量

:PROPERTIES: :CUSTOM_ID: 添加环境变量 :END:

cd /etc

sudo gedit profile

添加

\# add matlab path

export PATH$PATH:/usr/local/MATLAB/R2018a/bin=

保存

mathematica

退出: ctrl D

在linux下一般用scp这个命令来通过ssh传输文件。

1、从服务器上下载文件 scp username@servername:/path/filename /var/www/local\_dir(本地目录)

例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local\_dir(本地目录)

2、上传本地文件到服务器 scp /path/filename username@servername:/path

例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

3、从服务器下载整个目录 scp -r username@servername:/var/www/remote\_dir/(远程目录) /var/www/local\_dir(本地目录)

例如:scp -r root@192.168.0.101:/var/www/test /var/www/

4、上传目录到服务器 scp -r local\_dir username@servername:remote\_dir 例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录

好玩的

ASSIC码电影:

1. 在线观看telnet towel.blinkenlights.nl

根目录

/etc

即 et cetera. 这下面放的都是一堆零零碎碎的东西. 比如

  • /etc/fstab 存放开机自动挂载的分区.
  • /etc/group 存放所有的用户组
  • /etc/passwd 存放所有的用户信息
  • /etc/issue 存放欢迎信息(可借此查看发行版信息)

/bin

权限管理

用户与用户组

用户组

/etc/group 存放了用户组信息, 格式为

组名:口令:组标识号:组内用户列表

添加用户组用命令 groupadd , 帮助如下

> groupadd -h
用法:groupadd [选项] 组

选项:
  -f, --force                   如果组已经存在则成功退出
                                并且如果 GID 已被使用则取消 -g
  -g, --gid GID                 为新组使用 GID
  -h, --help                    显示此帮助信息并退出
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -o, --non-unique              允许创建有重复 GID 的组
  -p, --password PASSWORD       为新组使用此加密过的密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       directory prefix

删除用户组 groupdel , 帮助如下

> groupdel -h
用法:groupdel [选项] 组

选项:
  -h, --help                    显示此帮助信息并退出
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -f, --force                   即便是用户的主组也继续删除

更改用户组的属性 groupmod .

用户

/etc/passwd 存放了用户信息, 格式为

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

可修改此文件来修改默认的 shell.

添加用户 useradd

> useradd -h
用法:useradd [选项] 登录名
      useradd -D
      useradd -D [选项]

选项:
      --badnames                do not check for bad names
  -b, --base-dir BASE_DIR       新账户的主目录的基目录
      --btrfs-subvolume-home    use BTRFS subvolume for home directory
  -c, --comment COMMENT         新账户的 GECOS 字段
  -d, --home-dir HOME_DIR       新账户的主目录
  -D, --defaults                显示或更改默认的 useradd 配置
  -e, --expiredate EXPIRE_DATE  新账户的过期日期
  -f, --inactive INACTIVE       新账户的密码不活动期
  -g, --gid GROUP               新账户主组的名称或 ID
  -G, --groups GROUPS           新账户的附加组列表
  -h, --help                    显示此帮助信息并退出
  -k, --skel SKEL_DIR           使用此目录作为骨架目录
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -l, --no-log-init             不要将此用户添加到最近登录和登录失败数据库
  -m, --create-home             创建用户的主目录
  -M, --no-create-home          不创建用户的主目录
  -N, --no-user-group           不创建同名的组
  -o, --non-unique              允许使用重复的 UID 创建用户
  -p, --password PASSWORD       加密后的新账户密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             新账户的登录 shell
  -u, --uid UID                 新账户的用户 ID
  -U, --user-group              创建与用户同名的组

(不知道 -p 参数是如何用的, 最终还是要 passwd USERNAME 来设置密码)

Reference

  • Linux Command Line and Shell Scripting
  • 鸟哥